Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 Jan 2010 09:31:22 +0800
From:      David Xu <davidxu@freebsd.org>
To:        Tijl Coosemans <tijl@coosemans.org>
Cc:        Kostik Belousov <kostikbel@gmail.com>, Gardner Bell <gbell72@rogers.com>, freebsd-stable@freebsd.org
Subject:   Re: process in STOP state
Message-ID:  <4B4FC56A.4020007@freebsd.org>
In-Reply-To: <201001140941.46748.tijl@coosemans.org>
References:  <4B4D0293.3040704@rogers.com> <4B4DC490.5070001@rogers.com>	<20100113143649.GS62907@deviant.kiev.zoral.com.ua> <201001140941.46748.tijl@coosemans.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Tijl Coosemans wrote:
                                                      ursig ast doreti_ast
>> Besides weird formatting of procstat -k output, I do not see anything
>> wrong in the state of the process. It got SIGSTOP, I am sure.
>> Attaching gdb helps because debugger gets signal reports instead of
>> target process getting the signal actions on signal delivery.
>>
>> The only question is why the process gets SIGSTOP at all.
> 
> Wine uses ptrace(2) sometimes. The SIGSTOP could have come from that.
> I recently submitted http://www.freebsd.org/cgi/query-pr.cgi?pr=142757
> describing a problem with ptrace and signals, so you might want to give
> the kernel patch a try.

The problem in your patch is that ksi pointer can not be hold across
thread sleeping, because once the process is resumed, there is no
guarantee that the thread will run first, once the signal came from
process's signal queue, other threads can remove the signal, and here 
your sigqueue_take(ksi) is dangerous code.

David Xu




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4B4FC56A.4020007>