Bug #1934: Update argc in converse programs after cpuaffinity init 77/4277/2
authorNitin Bhat <nbhat4@illinois.edu>
Tue, 19 Jun 2018 14:37:27 +0000 (09:37 -0500)
committerNitin Bhat <nbhat4@illinois.edu>
Tue, 19 Jun 2018 16:59:03 +0000 (11:59 -0500)
The bug was occurring because of invalid values of argc and argv
after calling CmiInitCPUAffinity, which consumes some arguments
passed. The fix is to call CmiGetArgc after the CmiInitCPUAffinity
to update the argc value. This fixes the nightly build failure in
tests/converse/commbench for the mpi-linux-x86_64-smp build.

Change-Id: I695d2505b818b9a58924ba0591e90733e6d3b73a

tests/converse/commbench/commbench.c
tests/converse/machinetest/multiping.C
tests/converse/machinetest/pingall.C
tests/converse/megacon/megacon.c

index f171b392fffb6cc0fb053cf538a9643ff49186a2..b241aa970973316fd21dfc453d94d5053e7a41f9 100644 (file)
@@ -146,6 +146,9 @@ void commbench_init(int argc, char** argv) {
   // Initialize CPU topology
   CmiInitCPUTopology(argv);
 
+  // Update the argc after runtime parameters are extracted out
+  argc = CmiGetArgc(argv);
+
   for (numtests = 0; tests[numtests].name; numtests++)
     ;
   CpvAccess(test_bank_size) = numtests;
index 9b2d6aa21ed3cebc95f7d5b64963dbc99b5a33cf..79f22521dbdab707eeb68cbaf73f00567a3522b7 100644 (file)
@@ -199,6 +199,15 @@ CmiStartFn mymain(int argc, char **argv)
     CpvInitialize(int,twoway);
     CpvAccess(twoway) = 0;
 
+    // Set runtime cpuaffinity
+    CmiInitCPUAffinity(argv);
+
+    // Initialize CPU topology
+    CmiInitCPUTopology(argv);
+
+    // Update the argc after runtime parameters are extracted out
+    argc = CmiGetArgc(argv);
+
     if(argc > 1)
         CpvAccess(twoway) = atoi(argv[1]);
     
@@ -210,12 +219,6 @@ CmiStartFn mymain(int argc, char **argv)
     CcdCallOnConditionKeep(CcdPROCESSOR_BEGIN_IDLE, ApplIdleStart, NULL);
     CcdCallOnConditionKeep(CcdPROCESSOR_END_IDLE, ApplIdleEnd, NULL);
 
-    // Set runtime cpuaffinity
-    CmiInitCPUAffinity(argv);
-
-    // Initialize CPU topology
-    CmiInitCPUTopology(argv);
-
     if(CmiMyRank() == CmiMyNodeSize()) return 0;
 
     if(CmiMyPe() == 0) {
index 775e05d27f8a79c6ba27157d0194b9af7a5c47bf..efd6100b21e5f334be640e1e80317729000bcad9 100644 (file)
@@ -180,6 +180,9 @@ CmiStartFn mymain(int argc, char** argv)
     // Initialize CPU topology
     CmiInitCPUTopology(argv);
 
+    // Update the argc after runtime parameters are extracted out
+    argc = CmiGetArgc(argv);
     if(CmiMyRank() == CmiMyNodeSize()) return 0;
     
     if(argc > 1)
index 86f53deb77fbdb8034e87907ed83eddfb7395afe..016056fef07e772fbdcc7c8805e14eb171ab293d 100644 (file)
@@ -245,6 +245,9 @@ void megacon_init(int argc, char **argv)
   // Initialize CPU topology
   CmiInitCPUTopology(argv);
 
+  // Update the argc after runtime parameters are extracted out
+  argc = CmiGetArgc(argv);
+
   for (numtests=0; tests[numtests].name; numtests++);
   CpvAccess(test_bank_size) = numtests;
   CpvAccess(next_test_index) = 0;