David, OK, a major piece of software is broken for mounting removable media. A kernel upgrade from 2.6.15 SHOULDn't do that. Could you please tell me where go I go next? Thanks and Cheers, Matthew Grant On Sun, 2006-03-05 at 11:24 +0000, David Woodhouse wrote: > On Sun, 2006-03-05 at 14:26 +1300, Matthew Grant wrote: > > Problem is that new sys_rt_sigsuspend in kernel/signal.c in 2.6.16-rc2+ > > does not return EINTR. > > It does for me -- try the trivial test case at > http://david.woodhou.se/sigsusptest.c > > If you strace that under old and new kernels you'll see a difference in > the strace output, but it should be entirely cosmetic. The old code > would incestuously call do_signal() inside sys_rt_sigsuspend(), and > would never need to use the mechanism we have for restarting system > calls. Either it would know it delivered a signal and it would return > -EINTR, or it would know that it _didn't_, and it would loop for itself. > Now it behaves like all the other restartable syscalls, and ptrace will > actually see the -ERESTARTNOHAND return code which later gets converted > by the signal code either to -EINTR or to an actual restart, as > appropriate. > > In short, I think what you've picked up on in the strace output is > entirely cosmetic, and shouldn't affect the behaviour of the program in > any way. In each case, it comes back from the signal and goes > immediately into gettimeofday() and then poll() -- it _has_ come out of > the sigsuspend(). You then find that poll() gives different results in > each case, and I'd be inclined to suspect that the _real_ change in > behaviour goes from that point. > > > I think David woodhouse may be responsible for this.... > > I read lkml sporadically; usually better to Cc me when I'm to blame :) > -- Matthew Grant <[email protected]> Matthew's UNIX Box
Attachment:
signature.asc
Description: This is a digitally signed message part
- Follow-Ups:
- Re: PROBLEM: rt_sigsuspend() does not return EINTR on 2.6.16-rc2+
- From: David Woodhouse <[email protected]>
- Re: PROBLEM: rt_sigsuspend() does not return EINTR on 2.6.16-rc2+
- From: Andrew Morton <[email protected]>
- Re: PROBLEM: rt_sigsuspend() does not return EINTR on 2.6.16-rc2+
- References:
- PROBLEM: rt_sigsuspend() does not return EINTR on 2.6.16-rc2+
- From: Matthew Grant <[email protected]>
- Re: PROBLEM: rt_sigsuspend() does not return EINTR on 2.6.16-rc2+
- From: David Woodhouse <[email protected]>
- PROBLEM: rt_sigsuspend() does not return EINTR on 2.6.16-rc2+
- Prev by Date: Re: 9pfs double kfree
- Next by Date: Re: [PATCH] Fixup ahci suspend / resume
- Previous by thread: Re: PROBLEM: rt_sigsuspend() does not return EINTR on 2.6.16-rc2+
- Next by thread: Re: PROBLEM: rt_sigsuspend() does not return EINTR on 2.6.16-rc2+
- Index(es):