lkml.org 
[lkml]   [2003]   [Nov]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: crashme on ARM - unkillable processes

On Sun, 9 Nov 2003, Russell King wrote:
>
> The code which crashme generated corrupted the user stack pointer. We
> then tried to deliver a signal, found the user stack pointer invalid,
> and tried to deliver a SEGV to the process via force_sig(). Unfortunately,
> this signal never made it through for the reasons described previously.
> (We dequeued the ILL, found we couldn't setup the stack frame, force_sig,
> returned to userspace, generated another undefined instruction exception
> on the same instruction, etc.)

Ahh. I think I found why ARM has this problem, and others don't.

Your SA_NODEFER handling is broken.

The thing is, you only block a signal if its stack frame was successfully
done _and_ SA_NODEFER is not set.

It should be the other way around. You should block a signal if it's stack
frame was unsuccessful _or_ SA_NODEFER was not set.

(x86 gets this wrong too, in the sense that we don't even check to see if
the stack frame was successful - but since nobody sets SA_NODEFER anyway,
we don't really much care).

Linus

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2009-11-18 23:46    [from the cache]
©2003-2011 Jasper Spaans. Advertise on this site