]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
common/Preforker: fix broken recursion on exit(3)
authorSage Weil <sage@inktank.com>
Sat, 15 Jun 2013 15:14:40 +0000 (08:14 -0700)
committerSage Weil <sage@inktank.com>
Sun, 16 Jun 2013 03:48:05 +0000 (20:48 -0700)
commit7e7ff7532d343c473178799e37f4b83cf29c4eee
tree891623e7f53a3a757034a8777ba1246b33412ed1
parentf25f212027294e5107fc9938e67d31879c171088
common/Preforker: fix broken recursion on exit(3)

If we exit via preforker, call exit(3) and not recursively back into
Preforker::exit(r).  Otherwise you get a hang with the child blocked
at:

Thread 1 (Thread 0x7fa08962e7c0 (LWP 5419)):
#0  0x000000309860e0cd in write () from /lib64/libpthread.so.0
#1  0x00000000005cc906 in Preforker::exit(int) ()
#2  0x00000000005c8dfb in main ()

and the parent at

#0  0x000000309860eba7 in waitpid () from /lib64/libpthread.so.0
#1  0x00000000005cc87a in Preforker::parent_wait() ()
#2  0x00000000005c75ae in main ()

Backport: cuttlefish
Signed-off-by: Sage Weil <sage@inktank.com>
src/common/Preforker.h