List:Commits« Previous MessageNext Message »
From:Vladislav Vaintroub Date:August 1 2008 8:23pm
Subject:bzr commit into mysql-6.0-falcon branch (vvaintroub:2764) Bug#38519
View as plain text  
#At file:///C:/bzr/mysql-6.0-falcon-team/

 2764 Vladislav Vaintroub	2008-08-01
      Bug#38519 - errors in embedded tests
      2  issues addressed here:
      
      1) Memory manager structures were not always initialized in MemMgr::allocD
      ebug()
      2) There is a crash in exit() on destructor of static SyncObject syncDatab
      aseList.
      SyncObject::name points to invalid memory. No idea how that happens, either
      memory corruption or memoryManager destructor has already run.
      Fixed/worked around by  making SyncObject::name const char* and thus avoiding
      any calls to MemMgr. SyncObject::name is or should be a constant string anyway.
modified:
  storage/falcon/MemMgr.cpp
  storage/falcon/SyncObject.cpp
  storage/falcon/SyncObject.h
  storage/falcon/Table.cpp

=== modified file 'storage/falcon/MemMgr.cpp'
--- a/storage/falcon/MemMgr.cpp	2008-06-19 15:09:45 +0000
+++ b/storage/falcon/MemMgr.cpp	2008-08-01 18:23:18 +0000
@@ -543,6 +543,7 @@ void* MemMgr::allocateDebug(int size, co
 		{
 		length = ROUNDUP(size, defaultRounding) + OFFSET(MemBlock*, body) + sizeof(long);
 		memory = (MemBlock*) allocRaw(length);
+		memory->length = length;
 		memory->pool = NULL;
 		}
 

=== modified file 'storage/falcon/SyncObject.cpp'
--- a/storage/falcon/SyncObject.cpp	2008-07-24 08:45:03 +0000
+++ b/storage/falcon/SyncObject.cpp	2008-08-01 18:23:18 +0000
@@ -133,9 +133,6 @@ SyncObject::~SyncObject()
 #ifdef TRACE_SYNC_OBJECTS
 	if (objectId < MAX_SYNC_OBJECTS)
 		syncObjects[objectId] = NULL;
-		
-	if (name)
-		delete [] name;
 #endif
 }
 
@@ -1060,19 +1057,7 @@ void SyncObject::getSyncInfo(InfoTable* 
 void SyncObject::setName(const char* string)
 {
 #ifdef TRACE_SYNC_OBJECTS
-	if (name)
-		{
-		delete [] name;
-		name = NULL;
-		}
-	
-	if (string)
-		{
-		name = new char[strlen(string)+1];
-		strcpy(name, string);
-		}
-		
-	//name = string;
+	name = string;
 #endif
 }
 

=== modified file 'storage/falcon/SyncObject.h'
--- a/storage/falcon/SyncObject.h	2008-07-24 08:45:03 +0000
+++ b/storage/falcon/SyncObject.h	2008-08-01 18:23:18 +0000
@@ -109,7 +109,7 @@ protected:
 	int					waitCount;
 	int					queueLength;
 	const char*			location;
-	char*				name;
+	const char*			name;
 #endif
 };
 

=== modified file 'storage/falcon/Table.cpp'
--- a/storage/falcon/Table.cpp	2008-07-24 08:45:03 +0000
+++ b/storage/falcon/Table.cpp	2008-08-01 18:23:18 +0000
@@ -814,11 +814,11 @@ void Table::init(int id, const char *sch
 	primaryKey = NULL;
 	formats = NEW Format* [FORMAT_HASH_SIZE];
 
+	static char name[SYNC_VERSIONS_SIZE][64];
 	for (int n = 0; n < SYNC_VERSIONS_SIZE; n++)
 		{
-		char name[64];
-		sprintf(name, "syncPriorVersions[%02d]", n);
-		syncPriorVersions[n].setName(name);
+		sprintf(name[n], "syncPriorVersions[%02d]", n);
+		syncPriorVersions[n].setName(name[n]);
 		}
 		
 	triggers = NULL;

Thread
bzr commit into mysql-6.0-falcon branch (vvaintroub:2764) Bug#38519Vladislav Vaintroub1 Aug