forked from lix-project/hydra
hydra-eval-jobs: Reinitialize Boehm GC in the child
This is necessary to prevent hangs in the garbage collector.
This commit is contained in:
parent
7876cf677c
commit
b542b73ced
|
@ -1,6 +1,7 @@
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
#define GC_LINUX_THREADS 1
|
||||||
#include <gc/gc_allocator.h>
|
#include <gc/gc_allocator.h>
|
||||||
|
|
||||||
#include "shared.hh"
|
#include "shared.hh"
|
||||||
|
@ -265,9 +266,14 @@ int main(int argc, char * * argv)
|
||||||
ProcessOptions options;
|
ProcessOptions options;
|
||||||
options.allowVfork = false;
|
options.allowVfork = false;
|
||||||
|
|
||||||
|
GC_atfork_prepare();
|
||||||
|
|
||||||
auto pid = startProcess([&]() {
|
auto pid = startProcess([&]() {
|
||||||
pipe.readSide = -1;
|
pipe.readSide = -1;
|
||||||
|
|
||||||
|
GC_atfork_child();
|
||||||
|
GC_start_mark_threads();
|
||||||
|
|
||||||
if (lastAttrPath != "") debug("resuming from '%s'", lastAttrPath);
|
if (lastAttrPath != "") debug("resuming from '%s'", lastAttrPath);
|
||||||
|
|
||||||
/* FIXME: The build hook in conjunction with import-from-derivation is causing "unexpected EOF" during eval */
|
/* FIXME: The build hook in conjunction with import-from-derivation is causing "unexpected EOF" during eval */
|
||||||
|
@ -300,6 +306,8 @@ int main(int argc, char * * argv)
|
||||||
exit(0);
|
exit(0);
|
||||||
}, options);
|
}, options);
|
||||||
|
|
||||||
|
GC_atfork_parent();
|
||||||
|
|
||||||
pipe.writeSide = -1;
|
pipe.writeSide = -1;
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
|
|
Loading…
Reference in a new issue