pthread_cancel / sleep change in behaviour

Konstantin Belousov kostikbel at gmail.com
Thu Sep 3 10:44:00 UTC 2015


On Thu, Sep 03, 2015 at 06:33:53PM +0800, Erich Dollansky wrote:
> Hi,
> 
> On Thu, 3 Sep 2015 11:19:47 +0300
> Konstantin Belousov <kostikbel at gmail.com> wrote:
> 
> > On Thu, Sep 03, 2015 at 08:00:47AM +0800, Erich Dollansky wrote:
> > > 
> > > Is this change of behaviour a feature or a bug?
> > 
> > Provide a minimal example demonstrating the issue.
> 
> while preparing the example I found the source of the problem. We have
> to block all signals for some reason. The handling for
> 
> signal (SIGTHR, SIG_IGN);
> 
> seems to have changed. The moment I remove above's line from the code,
> the program works. There is no difference when the programs runs on
> machines prior mid November 2014.
> 
Err, this is a bug, probably both in your program (user code must not
twiddle with SIGCANCEL) and in libc. The later, I believe, was fixed in
the HEAD r287300, which is not yet merged back to stable/10. The libthr
has a protection disallowing user code manipulating SIGCANCEL, but due
to the bug in libc signal(3) override the libthr measures.

Apply the r287300 to your src/ and try your unchanged program with updated
libc.  But yes, SIGTHR/SIGCANCEL in the program is bug.

> Thanks for your help. Simplifying the program brought me to the
> solution. 
> 
> Do you want the example?
> 
> Erich
> > _______________________________________________
> > freebsd-stable at freebsd.org mailing list
> > https://lists.freebsd.org/mailman/listinfo/freebsd-stable
> > To unsubscribe, send any mail to
> > "freebsd-stable-unsubscribe at freebsd.org"


More information about the freebsd-stable mailing list