[Interprocess] Waiting thread termination causes deadlock

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[Interprocess] Waiting thread termination causes deadlock

Boost - Users mailing list

Hi,

 

I am having issues with boost::interprocess::ipcdetail::spin_condition::do_wait_timed deadlocking.

 

The issue occurs when a thread that is waiting due to a call to interprocess_condition_any::wait() terminates unexpectedly and interprocess_condition_any::notify_all() is called (from any process). The cause of the deadlock is not that the terminating thread held a lock – it doesn’t because it is waiting, but that spin_condition::m_num_waiters is never decremented to zero because one of the threads is no longer waiting and so the enter mutex is not freed.

 

I have tried BOOST_INTERPROCESS_ENABLE_TIMEOUT_WHEN_LOCKING, however as far as I can see this only tells me that the deadlock is there.

 

Are there any suggestions how I can recover from  spin_condition not freeing the enter mutex? Or perhaps some way of avoiding the issue?

 

Markus

 


Markus Bonk
Senior Software Engineer

 

 

3Dconnexion GmbH
Clarita-Bernhard-Str. 18
81249 München
Germany

Tel: +49 (89) 897 45 42 - 70
Fax: +49 (89) 897 45 42 - 50

[hidden email]

www.3dconnexion.com

 

 

 

Geschäftsführer: Antonio Pascucci
Sitz der Gesellschaft: München
Registergericht: München HRB 99232

 


_______________________________________________
Boost-users mailing list
[hidden email]
https://lists.boost.org/mailman/listinfo.cgi/boost-users