tdb: avoid a race condition when checking for robust mutexes
authorRalph Boehme <slow@samba.org>
Sat, 26 Mar 2016 11:43:55 +0000 (12:43 +0100)
committerRalph Boehme <slow@samba.org>
Tue, 29 Mar 2016 14:04:19 +0000 (16:04 +0200)
commita7a77e2f43a5baa00e104037b20487f28aabe866
treefa920d2b342bd8c71aeef9fcf1774cf380ec7618
parentaa81199bec3cb5a3f8f7b990395108a6eb988815
tdb: avoid a race condition when checking for robust mutexes

This fixes a race between calling waitpid() in two places (SIGCHLD the
signal handler and the rendezvous code when waiting for the child to
terminate), by

- blocking SIGCHLD before installing our signal handler

- in the rendezvous code call sigssuspend() which unblocks SIGCHLD and
  suspends the thread and waits for signal delivery

BUG: https://bugzilla.samba.org/show_bug.cgi?id=11808

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Uri Simchoni <uri@samba.org>
Autobuild-User(master): Ralph B√∂hme <slow@samba.org>
Autobuild-Date(master): Tue Mar 29 16:04:19 CEST 2016 on sn-devel-144
lib/tdb/common/mutex.c