[Interprocess] Waiting thread termination causes deadlock
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 [cid:image19ab5c.GIF@24a568cc.448b8dc0] 3Dconnexion GmbH Clarita-Bernhard-Str. 18 81249 München Germany Tel: +49 (89) 897 45 42 - 70 Fax: +49 (89) 897 45 42 - 50 markus_bonk@3dconnexion.commailto:markus_bonk@3dconnexion.com www.3dconnexion.comhttp://www.3dconnexion.com Geschäftsführer: Antonio Pascucci Sitz der Gesellschaft: München Registergericht: München HRB 99232
participants (1)
-
Markus Bonk