gnuradio locks in thread interrupt call
tested on ubuntu 11.10 x64, the python app test2-gr-lockup.py consistently locks up when run
one of the calls to thread.interrupt() does not return. This should be a non-blocking call.
#1 Updated by Josh Blum over 3 years ago
It looks like the problem here lies within boost itself. Until boost 1.47 a deadlock condition existed durring concurrent condition_wait() and interrupt() calls, which is what we are running into. this seems to happen most commonly as a TPB thread body is blocking on an input condition variable while the python/top-level thread is calling unlock() --> interrupt() which blocks on a thread_info mutex. see https://svn.boost.org/trac/boost/ticket/4978 The boost minimum requirement in GNU Radio should probable be raised to 1.47 (or at least some kind of warning added) in order to avoid this behavior in the future. test2.py seems to run without any issues or deadlock using boost 1.48 from source. -Tim
#2 Updated by Tom Rondeau over 2 years ago
- Status changed from New to Feedback
- Resolution set to wontfix
I think we have to leave this issue alone since it's a bug with Boost and not us. They have fixed this in later versions, though.
The build guide on the website makes a note of the issue and recommends not using 1.47. Also, we'll probably make a change in version 3.7 that either makes the minimum requirement 1.48 or maybe just specifically rejects 1.47 (by editing GrBoost.cmake).