|
From: Tom H. <to...@co...> - 2005-02-27 12:19:39
|
In message <422...@go...>
Jeremy Fitzhardinge <je...@go...> wrote:
> Oh, OK, I see what's happening. sigsuspend is supposed to atomically
> install the new signal mask and then block waiting for one of those
> signals to arrive. That new signal mask is current for any signal
> handlers which are executed, but then the old one restored once the
> syscall returns (once all the signal handlers have returned).
>
> PRE(*sigsuspend) is putting the temp mask into eff_sig_mask, which then
> makes client_syscall set it explicitly with sigprocmask, rather than
> letting sigsuspend do its atomic set-then-block thing.
>
> Does this patch fix it for you?
It looks like it. I've had it running pth_cancel2 over and over
for an hour or two now and there haven't been any hangs yet.
Tom
--
Tom Hughes (to...@co...)
http://www.compton.nu/
|