| To: | Atsushi Nemoto <anemo@mba.ocn.ne.jp> |
|---|---|
| Subject: | Re: unkillable process due to setup_frame() failure |
| From: | Ralf Baechle <ralf@linux-mips.org> |
| Date: | Tue, 6 Sep 2005 19:41:19 +0100 |
| Cc: | linux-mips@linux-mips.org |
| In-reply-to: | <20050907.014234.108739386.anemo@mba.ocn.ne.jp> |
| Original-recipient: | rfc822;linux-mips@linux-mips.org |
| References: | <20050907.014234.108739386.anemo@mba.ocn.ne.jp> |
| Sender: | linux-mips-bounce@linux-mips.org |
| User-agent: | Mutt/1.4.2.1i |
On Wed, Sep 07, 2005 at 01:42:34AM +0900, Atsushi Nemoto wrote: > 1. The "break" instruction raises a exception. > 2. The exception handler queues SIGTRAP(5). > 3. dequeue_signal() dequeue a signal with LOWEST number (i.e. SIGTRAP). > 4. setup_frame() fails due to bad stack pointer and queues SIGSEGV(11). > 5. returns to user process (pc unchanged). > 6. goto 1. (forever) > > So, the process can not be kill by SIGKILL. In 2.6.12, 'sigkill > priority fix' was applied to __dequeue_signal(), but it does not help > while the SIGTRAP is queued to tsk->pending but SIGKILL (by kill > command) is queued to tsk->signal->shared_pending. The behaviour of not advancing the EPC beyond the faulting instruction is part of the problem - but I believe that was the usual behaviour for MIPS UNIXoid operating systems. Ralf |
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Problems with CONFIG_CC_OPTIMIZE_FOR_SIZE?, Clem Taylor |
|---|---|
| Next by Date: | Indy R4600 on Linux 2.6 -- possible cache issue?, Stuart Longland |
| Previous by Thread: | unkillable process due to setup_frame() failure, Atsushi Nemoto |
| Next by Thread: | Re: unkillable process due to setup_frame() failure, Maciej W. Rozycki |
| Indexes: | [Date] [Thread] [Top] [All Lists] |