Tests that use the StartSlave test helper are generally fragile when the test fails an assert/expect in the middle of the test. This is because the StartSlave helper takes raw pointer arguments, which may be stack-allocated.
In case of an assert failure, the test immediately exits (destroying stack allocated objects) and proceeds onto test cleanup. The test cleanup may dereference some of these destroyed objects, leading to a test crash like:
The StartSlave helper should take shared_ptr arguments instead.
This also means that we can remove the Shutdown helper from most of these tests.