fixed a recursive dependency problem in isomalloc. isomalloc_blocklist is CpvInistial...
authorGengbin Zheng <gzheng@illinois.edu>
Sun, 30 Jan 2011 16:29:14 +0000 (10:29 -0600)
committerGengbin Zheng <gzheng@illinois.edu>
Sun, 30 Jan 2011 16:29:14 +0000 (10:29 -0600)
Fixed by introduce another flag to only allow isomalloc to check isomalloc_blocklist after memory initialized.

src/conv-core/memory-isomalloc.c

index 1e56a677594ea6b77556aea0c313b79a2429213d..b7d68c638f9652cb2f0ce75f964695eb1082b1f3 100644 (file)
@@ -60,6 +60,8 @@ static __thread int isomalloc_thread = 0;
 #endif
 #endif
 
+static int meta_inited = 0;
+
 static void meta_init(char **argv)
 {
    CmiMemoryIs_flag|=CMI_MEMORY_IS_ISOMALLOC;
@@ -68,6 +70,8 @@ static void meta_init(char **argv)
 #if CMK_TLS_THREAD
    isomalloc_thread = 1;         /* isomalloc is allowed in this pthread */
 #endif
+   CmiNodeAllBarrier();
+   meta_inited = 1;
 }
 
 static void *meta_malloc(size_t size)
@@ -77,7 +81,7 @@ static void *meta_malloc(size_t size)
         int _isomalloc_thread = isomalloc_thread;
         if (CmiThreadIs(CMI_THREAD_IS_TLS)) _isomalloc_thread = 1;
 #endif
-       if (CpvInitialized(isomalloc_blocklist) && CpvAccess(isomalloc_blocklist)
+       if (meta_inited && CpvInitialized(isomalloc_blocklist) && CpvAccess(isomalloc_blocklist)
 #if CMK_TLS_THREAD
              && _isomalloc_thread
 #endif