Browse Source

[Tests, LibOS] Add Apache test in Jenkins-Debug

Previously, there was a bug of a stale debugging memory region copied to
child as part of parent's checkpoint. This bug manifested in Apache test
segfaulting in debug build. This commit fixes the bug and adds Apache to
the Jenkins-Debug job.
Don Porter 5 years ago
parent
commit
abfd613f60
3 changed files with 11 additions and 0 deletions
  1. 7 0
      Jenkinsfiles/Linux-Debug
  2. 3 0
      LibOS/shim/src/bookkeep/shim_vma.c
  3. 1 0
      LibOS/shim/src/shim_debug.c

+ 7 - 0
Jenkinsfiles/Linux-Debug

@@ -54,6 +54,13 @@ pipeline {
                             sleep 1
                             ./benchmark-http.sh `hostname -I|tr -d '[:space:]'`:8000
                             '''
+                        sh '''
+                            cd LibOS/shim/test/apps/apache
+                            make
+                            make start-graphene-server &
+                            sleep 1
+                            ./benchmark-http.sh `hostname -I|tr -d '[:space:]'`:8001
+                            '''
                     }
                 }
                 stage('Deploy') {

+ 3 - 0
LibOS/shim/src/bookkeep/shim_vma.c

@@ -675,6 +675,9 @@ int bkeep_munmap (void * addr, size_t length, int flags)
     int ret = __bkeep_munmap(&prev, addr, addr + length, flags);
     assert_vma_list();
     __restore_reserved_vmas();
+    /* DEP 5/20/19: If this is a debugging region we are removing, take it out
+     * of the checkpoint.  Otherwise, it will be restored erroneously after a fork. */
+    remove_r_debug(addr);
     unlock(&vma_list_lock);
     return ret;
 }

+ 1 - 0
LibOS/shim/src/shim_debug.c

@@ -58,6 +58,7 @@ struct gdb_link_map
     struct gdb_link_map *l_next, *l_prev;
 };
 
+/* XXX: What lock protects this?  vma_list_lock? */
 static struct gdb_link_map * link_map_list = NULL;
 
 void clean_link_map_list (void)