Alexey Serbin has uploaded this change for review. (
http://gerrit.cloudera.org:8080/12739
Change subject: [subprocess] use RAW_LOG() in child process
......................................................................
[subprocess] use RAW_LOG() in child process
Ideally, in the phase between fork() and exec() for a newly forked
process only async-signal safe functions should be called. At least,
LOG() should not be called since it involves taking a lock while
flushing the message into the log sink. Otherwise, the child process
can deadlock on attempt to write a log message via GLOG if the glog's
mutex has been copied from the parent's address space in locked state.
TODO: add a test scenario to simulate the deadlock and make sure
it passes with this patch
Change-Id: Ic9dca4ca8b1a6d72c9fc818ea41109c80ace3e39
---
M src/kudu/util/signal.cc
M src/kudu/util/subprocess.cc
2 files changed, 57 insertions(+), 17 deletions(-)
git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/39/12739/1
--
To view, visit http://gerrit.cloudera.org:8080/12739
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic9dca4ca8b1a6d72c9fc818ea41109c80ace3e39
Gerrit-Change-Number: 12739
Gerrit-PatchSet: 1
Gerrit-Owner: Alexey Serbin <[email protected]>