[Pkg-samba-maint] DO NOT REPLY [Bug 6651] smbd SIGSEGV when breaking oplocks

samba-bugs at samba.org samba-bugs at samba.org
Fri Aug 21 16:37:44 UTC 2009


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





------- Comment #6 from jra at samba.org  2009-08-21 11:37 CST -------
Yes, it's not obvious. The key is that sig_state->sig_info[signum][j] is NOT A
RING BUFFER (despite the comment, which I why I removed it :-). It's actually a
regular buffer that is filled in from position zero and reset to zero entries
on every invocation of tevent_common_check_signal().

When a signal comes in and is handled by tevent_common_signal_handler_info(),
sig_count() returns the next empty position in 
sig_state->sig_info[signum][], and then copies the signal info into it.

So the loop in tevent_common_check_signal() must go from zero to count (as
that's what is filled in), and if the buffer was full so the signal was blocked
it must not re-enable signals until the buffer is drained again by the
SIG_SEEN() macro on sig_state->signal_count[signum].

I'm testing now, and will commit today. Feel free to examine closely when it's
done.

Jeremy.


-- 
Configure bugmail: https://bugzilla.samba.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You reported the bug, or are watching the reporter.



More information about the Pkg-samba-maint mailing list