Pup numZerocopyROops in RODataMsg after recovering from a failure 84/5084/4
authorNitin Bhat <nbhat4@illinois.edu>
Fri, 12 Apr 2019 17:54:12 +0000 (12:54 -0500)
committerEvan Ramos <evan@hpccharm.com>
Fri, 12 Apr 2019 23:03:18 +0000 (18:03 -0500)
This patch fixes autobuild failues caused by crashes in tests/charm++/chkpt
for mpi and verbs targets.

Change-Id: I47f2a0c2cdb0660e2d3b152f7f1bded38ad1b9f5

src/ck-core/ckcheckpoint.C

index e6e2a14808266768a587dff36e162876aae143af..564acf5050e15f964e3b543fda18c0d9c0c4e957 100644 (file)
@@ -53,6 +53,10 @@ extern int Cmi_myoldpe;
 extern char *_shrinkexpand_basedir;
 #endif
 
+#if CMK_ONESIDED_IMPL
+extern UInt numZerocopyROops; // Required for broadcasting RO Data after recovering from failure
+#endif
+
 void CkCreateLocalChare(int epIdx, envelope *env);
 
 // helper class to get number of array elements
@@ -96,6 +100,10 @@ static void bdcastRO(void){
        // Allocate and fill out the RODataMessage
        envelope *env = _allocEnv(RODataMsg, ps.size());
        PUP::toMem pp((char *)EnvToUsr(env));
+#if CMK_ONESIDED_IMPL
+       pp|numZerocopyROops; // Messages of type 'RODataMsg' need to have numZerocopyROops pupped in order
+                       // to be processed inside _processRODataMsg
+#endif
        for(i=0;i<_readonlyTable.size();i++) _readonlyTable[i]->pupData(pp);
        
        env->setCount(++_numInitMsgs);