On 13-Aug-2003 Marcel Moolenaar wrote:
> Gang,
> 
> When the copyout() in sendsig() fails and we call sigexit(), we get
> into the following LOR:
> 
> lock order reversal
>  1st 0xe0000000300ffca8 sigacts (sigacts) @ kern/subr_trap.c:260
>  2nd 0xe000000000b75250 Giant (Giant) @ kern/kern_sig.c:2407
> Stack backtrace:
> witness_lock
> Stopped at      Debugger+0x31:        nop.m 0x0
> db> trace
> Debugger(0xe000000000a41340, 0xe00000000078abe0, 0xea3, 0x1) at Debugger+0x30
> witness_lock(0xe000000000b75250, 0x8, 0xe000000000a3cdc9, 0x967) at 
> witness_lock+0xf60
> _mtx_lock_flags(0xe000000000b75250, 0x0, 0xe000000000a3cdc0, 0x967, 
> 0xe000000000747470, 0x30d,
> 0xe000000000a5c661) at _mtx_lock_flags+0x130
> sigexit(0xe00000002fa4c000, 0xb, 0xe00000002f94afc8, 0xe0000000009ebfe0) at 
> sigexit+0x140
> sendsig(0x400000000005fbf0, 0x2, 0xa00000002308d360, 0x0) at sendsig+0x520
> postsig(0x2, 0xe00000002fa4c000, 0xe0000000300ff000, 0xe00000002f94afc8) at 
> postsig+0x7f0
> ast(0xa00000002308d400) at ast+0x820
>       :
> 
> FYI,

sendsig() on ia64 drops the lock around the copyout, see line 921 in
machdep.c.  It is not reacquired again until the very end of the
function.  You could change the assert at the top of the function to
say that sigacts is not recursed, but sigacts is already a non
recursive lock.  Do you have local diffs to HEAD?

-- 

John Baldwin <[EMAIL PROTECTED]>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/
_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to