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.
@@ -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') {
@@ -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;
@@ -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)