Messages in this thread | | | Subject | Re: 5.8-rc*: kernel BUG at kernel/signal.c:1917 | From | Jiri Slaby <> | Date | Mon, 20 Jul 2020 13:40:20 +0200 |
| |
On 20. 07. 20, 13:26, peterz@infradead.org wrote: > On Mon, Jul 20, 2020 at 12:59:24PM +0200, peterz@infradead.org wrote: >> On Mon, Jul 20, 2020 at 10:41:06AM +0200, Peter Zijlstra wrote: >>> On Mon, Jul 20, 2020 at 10:26:58AM +0200, Oleg Nesterov wrote: >>>> Peter, >>>> >>>> Let me add another note. TASK_TRACED/TASK_STOPPED was always protected by >>>> ->siglock. In particular, ttwu(__TASK_TRACED) must be always called with >>>> ->siglock held. That is why ptrace_freeze_traced() assumes it can safely >>>> do s/TASK_TRACED/__TASK_TRACED/ under spin_lock(siglock). >>>> >>>> Can this change race with >>>> >>>> if (signal_pending_state(prev->state, prev)) { >>>> prev->state = TASK_RUNNING; >>>> } >>>> >>>> in __schedule() ? Hopefully not, signal-state is protected by siglock too. >>>> >>>> So I think this logic was correct even if it doesn't look nice. But "doesn't >>>> look nice" is true for the whole ptrace code ;) >>> >>> *groan*... another bit of obscure magic :-( >>> >>> let me go try and wake up and figure out how best to deal with this. > > This then? That seems to survive the strace thing.
FWIW for me too.
thanks, -- js
| |