[Xenomai] Deadlock in CANCEL_RESTORE with CONFIG_XENO_ASYNC_CANCEL during thread suspension
ma30002000 at yahoo.de
Wed Apr 16 20:34:51 CEST 2014
----- Original Message -----
> From: Philippe Gerum <rpm at xenomai.org>
> To: Matthias Schneider <ma30002000 at yahoo.de>; "xenomai at xenomai.org" <xenomai at xenomai.org>
> Sent: Monday, April 7, 2014 11:59 AM
> Subject: Re: [Xenomai] Deadlock in CANCEL_RESTORE with CONFIG_XENO_ASYNC_CANCEL during thread suspension
> On 04/06/2014 01:50 PM, Matthias Schneider wrote:
>> Hi all,
>> using xenomai-forge with mercury, when
>> CONFIG_XENO_ASYNC_CANCEL is defined, CANCEL_RESTORE
>> will include a call to backtrace_check(), which in turn
>> will call backtrace_dump, which will take the
>> mutex "__printlock".
>> In case a thread gets suspended while holding that lock,
>> the next call to CANCEL_RESTORE from whatever thread will
>> cause a deadlock.
> That's the price for using thread suspend/resume unsafe constructs, we
> never know at which location we will be preempting threads.
>> Is there any way of getting around that?
> We could block the notification signal when holding this internal lock.
> I'll have a look.
Would the enclosed patch be an acceptable solution to the problem? It seems to
work quite well in my case.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 1109 bytes
Desc: not available
More information about the Xenomai