[PATCH] Fix bug #13121 - Non-smbd processes using kernel oplocks can hang smbd
abartlet at samba.org
Thu Nov 30 22:15:56 UTC 2017
On Thu, 2017-11-30 at 12:29 -0800, Jeremy Allison wrote:
> OK, there *is* a race condition in the test. It's
> the following. The child process gets the kernel
> lease and then notifies the parent process to continue
> by writing a byte up a pipe. It then sets the alarm
> and calls pause() to wait for the parent process to
> contact the smbd and get it to trigger the break request
> using an open call.
> It is possible for the parent to run and trigger the break
> request after the child has written to the pipe, but *before*
> the child calls pause(). We then miss the signal notifying
> the child to break the lease.
> The fix for this is below. We need to set the sigmask
> on the child to prohibit receiving RT_SIGNAL_LEASE and SIGALRM,
> then wait for the lease break or alarm signal by calling
> sigsuspend(), not pause().
> When I add this patch the test becomes 100% reliable
> (not flakey) on the Catalyst cloud.
> Thanks a *LOT* Andrew for setting this up and allowing
> access - I don't think I would have found this without
> it !
> Please review and push if happy.
Thanks Jeremy for your patience and perseverance on this.
Another flapping test bites the dust! :-)
I see the comment from Ralph on the test, and so I'm happy for the
flapping revert to go in.
Authentication Developer, Samba Team https://samba.org
Samba Development and Support, Catalyst IT
More information about the samba-technical