labath created this revision. labath added reviewers: clayborg, ovyalov. labath added subscribers: lldb-commits, dean.
in case we are logging to stdout, any log lines from the forked child can be misconstrued to be inferior output. To avoid this, we disable all logging immediately after forking. I also fix the implementatoion of DisableAllLogChannels, which was a no-op before this commit. http://reviews.llvm.org/D12083 Files: source/Core/Log.cpp source/Plugins/Process/Linux/NativeProcessLinux.cpp Index: source/Plugins/Process/Linux/NativeProcessLinux.cpp =================================================================== --- source/Plugins/Process/Linux/NativeProcessLinux.cpp +++ source/Plugins/Process/Linux/NativeProcessLinux.cpp @@ -560,8 +560,11 @@ // Child process. if (pid == 0) { + // First, make sure we disable all logging. If we are logging to stdout, our logs can be + // mistaken for interior output. + Log::DisableAllLogChannels(nullptr); // FIXME consider opening a pipe between parent/child and have this forked child - // send log info to parent re: launch status, in place of the log lines removed here. + // send log info to parent re: launch status. // Start tracing this child that is about to exec. error = PtraceWrapper(PTRACE_TRACEME, 0); Index: source/Core/Log.cpp =================================================================== --- source/Core/Log.cpp +++ source/Core/Log.cpp @@ -449,7 +449,7 @@ { CallbackMap &callback_map = GetCallbackMap (); CallbackMapIter pos, end = callback_map.end(); - const char *categories[1] = {NULL}; + const char *categories[] = {"all", nullptr}; for (pos = callback_map.begin(); pos != end; ++pos) pos->second.disable (categories, feedback_strm);
Index: source/Plugins/Process/Linux/NativeProcessLinux.cpp =================================================================== --- source/Plugins/Process/Linux/NativeProcessLinux.cpp +++ source/Plugins/Process/Linux/NativeProcessLinux.cpp @@ -560,8 +560,11 @@ // Child process. if (pid == 0) { + // First, make sure we disable all logging. If we are logging to stdout, our logs can be + // mistaken for interior output. + Log::DisableAllLogChannels(nullptr); // FIXME consider opening a pipe between parent/child and have this forked child - // send log info to parent re: launch status, in place of the log lines removed here. + // send log info to parent re: launch status. // Start tracing this child that is about to exec. error = PtraceWrapper(PTRACE_TRACEME, 0); Index: source/Core/Log.cpp =================================================================== --- source/Core/Log.cpp +++ source/Core/Log.cpp @@ -449,7 +449,7 @@ { CallbackMap &callback_map = GetCallbackMap (); CallbackMapIter pos, end = callback_map.end(); - const char *categories[1] = {NULL}; + const char *categories[] = {"all", nullptr}; for (pos = callback_map.begin(); pos != end; ++pos) pos->second.disable (categories, feedback_strm);
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits