`exit(0)` was causing memory errors during shutdown of this forked
process, in an unreliable way (only visible on CI system). Likely
this was some static variable destructor behaving poorlyess, that wasn't
happy about being forked for some reasonin an unreliable way (only visible on CI system).
Example: https://build.bitcoinabc.org/viewLog.html?buildId=28627
Since we're using `fork()` anyway,@Fabien and I found that GCC-compiled versions of this test were failing with --logger=JUNIT passed in to the boost test suite. The most reliable way to see the errors on exit (with GCC-compiled) was:
valgrind ./src/test/test_bitcoin --logger=JUNIT -t util_tests
Since we're using `fork()` anyway, we might as well just run
run `execlp()` which nukes the child process image. As a bonus this stops valgrind from producing any noise about this child process.
valgrind from producing any noise about this child process.