Fixing the cause for armci crash - nothing wrong with implementation,
authorNikhil Jain <nikhil@illinois.edu>
Wed, 11 Jan 2012 16:49:22 +0000 (10:49 -0600)
committerNikhil Jain <nikhil@illinois.edu>
Wed, 11 Jan 2012 16:49:22 +0000 (10:49 -0600)
the example tried to free a local memory allocation after migration
which should result in error

examples/armci/putTest/Makefile
examples/armci/putTest/put.c
src/conv-core/isomalloc.c

index 2b9105dd7f71393f9522bf0d25abcead02290feb..cf3f08b1a5af3c2a7878b533a700ced8cbfda9c1 100644 (file)
@@ -6,10 +6,10 @@ put: put.c
        $(CHARMC) -o put put.c -language armci -balancer RotateLB 
 
 test: put
-       ./charmrun +p2 ./put +vp 2 $(TESTOPTS)
+       ./charmrun +p2 ./put +vp2 $(TESTOPTS)
 
 bgtest: put
-       ./charmrun +p1 ./put +vp 2 +x2 +y1 +z1 $(TESTOPTS)
+       ./charmrun +p1 ./put +vp2 +x2 +y1 +z1 $(TESTOPTS)
 
 clean:
        rm -f put charmrun *.o charmrun.exe put.exe put.pdb put.ilk
index 1e27b15d6f71422d1800a932641335630a372b06..bcb7a6995905b450bdce38cb41350e81e0bf87af 100644 (file)
@@ -43,9 +43,8 @@ int main(int argc, char * argv[]) {
     ARMCI_Barrier();
   }
 
-
+  
   ARMCI_Free(baseAddress[thisImage]);
-  ARMCI_Free_local(local);
   // finalize
   ARMCI_Finalize();
   return 0;
index a70124bc3c1e6f5d965a03c7a7ff25f4b85c7e87..34bab6cef1da52e6b3a129d98e069b7800e5c0e4 100644 (file)
@@ -2552,11 +2552,11 @@ void CmiIsomallocBlockListPup(pup_er p,CmiIsomallocBlockList **lp, CthThread tid
   int i, j;
   int numBlocks = 0, numSlots = 0, flag = 1;
 
-  flags[0] = 0; flags[1] = 1;
-  if(!pup_isUnpacking(p)) {
 #if ISOMALLOC_DEBUG
-    printf("My rank is %d Pupping for %d \n",CthSelf(),tid);
+  printf("[%d] My rank is %lld Pupping for %lld with isUnpack %d isDelete %d \n",CmiMyPe(),CthSelf(),tid,pup_isUnpacking(p),pup_isDeleting(p));
 #endif
+  flags[0] = 0; flags[1] = 1;
+  if(!pup_isUnpacking(p)) {
     mptr = CtvAccessOther(tid,threadpool);
     current = &(CtvAccessOther(tid,threadpool)->block_head);
     while(current != NULL) {