소스 검색

[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 6 년 전
부모
커밋
abfd613f60
3개의 변경된 파일11개의 추가작업 그리고 0개의 파일을 삭제
  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)