posix_daemonizer: only create the main daemon object in the last child

This prevents the intermediate thread from exiting properly, as
fork creates a child process with only one thread, so any existing
data_logger thread will not be in the child. Since this thread
sets a flag the data_logger dtor blocks on, all children threads
will hang on exit.
This commit is contained in:
moneromooo-monero 2015-12-13 19:48:11 +00:00
parent e175205e6e
commit 7f77b23da8
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3

View file

@ -74,9 +74,9 @@ namespace daemonizer
{
if (command_line::has_arg(vm, arg_detach))
{
auto daemon = executor.create_daemon(vm);
tools::success_msg_writer() << "Forking to background...";
posix::fork();
auto daemon = executor.create_daemon(vm);
return daemon.run();
}
else