Yes, I did try that as a temporary fix. While it seems to work just fine in the simple example, my more complicated program locked up after a few stop()/start()s. I decided that tracking the problem with the temporary fix would be just as difficult. (And ultimately pointless when the problem with lock()/unlock() is figured out.)
I'm re-implementing in C++ now so please don't feel any bug-fix pressure from me. I'm interested to hear the root cause though when you figure it out. Thanks for verifying that this really is a bug. On Tue, Sep 17, 2013 at 4:38 AM, Mike Jameson <mike.jame...@ettus.com>wrote: > Hi Joshua, > > For a temporary workaround, replace tb.lock() with: > > tb.stop() > tb.wait() > > ...and replace tb.unlock() with: > > tb.start() > > This works for me: > > pydev debugger: starting > my_sink: init 48050448 > > Running until enter is pressed: my_sink: work: 32768 > my_sink: work: 32767 > my_sink: work: 32768 > my_sink: work: 32767 > my_sink: work: 32768 > > Setting new sink. > my_sink: init 48051728 > Unlocking... > Unlocked > Hit Enter to quit: my_sink: work: 32768 > > my_sink: work: 32767 > my_sink: work: 32768 > my_sink: work: 32767 > > Finished. > > See attached for working version. > > Regards, > > Mike > > -- > Mike Jameson M0MIK BSc MIET > Ettus Research Technical Support > Email: supp...@ettus.com > Web: http://www.ettus.com <http://www.ettus.com> > > > On Tue, Sep 17, 2013 at 11:24 AM, Mike Jameson <mike.jame...@ettus.com>wrote: > >> Hi again, >> >> I forgot to press enter so the issue does happen on my end too: >> >> m@mi7:~/Downloads$ time ./unconnect_test.py -f >> my_sink: init 36995152 >> >> Running until enter is pressed: my_sink: work: 32768 >> my_sink: work: 32767 >> my_sink: work: 32768 >> my_sink: work: 32767 >> my_sink: work: 32768 >> my_sink: work: 32767 >> >> Setting new sink. >> my_sink: init 36995472 >> Unlocking... >> ^C^Z >> >> [1]+ Stopped ./unconnect_test.py -f >> >> real 2m45.886s >> user 0m0.000s >> sys 0m0.000s >> >> I'll have a look into it. >> >> Regards, >> >> Mike >> >> -- >> Mike Jameson M0MIK BSc MIET >> Ettus Research Technical Support >> Email: supp...@ettus.com >> Web: http://www.ettus.com <http://www.ettus.com> >> >> >> On Tue, Sep 17, 2013 at 11:17 AM, Mike Jameson <mike.jame...@ettus.com>wrote: >> >>> Hi Joshua, >>> >>> You will be pleased to know that it still works even after leaving it >>> for 5 minutes: >>> >>> m@mi7:~/Downloads$ ./unconnect_test.py -h >>> >>> Usage: unconnect_test.py: [options] >>> >>> Options: >>> -h, --help show this help message and exit >>> -f Run failing test (with python sync_block) or passing test >>> (without python sync_block) >>> m@mi7:~/Downloads$ ./unconnect_test.py >>> >>> Running until enter is pressed: >>> Setting new sink. >>> Unlocking... >>> Using Volk machine: avx_64_mmx_orc >>> Unlocked >>> Hit Enter to quit: >>> Finished. >>> m@mi7:~/Downloads$ ./unconnect_test.py -f >>> my_sink: init 60067920 >>> >>> Running until enter is pressed: my_sink: work: 32768 >>> my_sink: work: 32767 >>> my_sink: work: 32768 >>> my_sink: work: 32767 >>> my_sink: work: 32768 >>> my_sink: work: 32767 >>> my_sink: work: 32768 >>> my_sink: work: 32767 >>> my_sink: work: 32768 >>> my_sink: work: 32767 >>> my_sink: work: 32768 >>> my_sink: work: 32767 >>> my_sink: work: 32768 >>> <----snip----> >>> >>> I've just looked at the git log and I am also using the same version as >>> you: >>> >>> commit be73b3035c184cf09e1051deaba20eca88de8c9d >>> >>> I am using Ubuntu 12.04 LTS x64 with a Quad Core i7/8GB Ram and GNU >>> Radio/UHD was built with pybombs. >>> >>> Regards, >>> >>> Mike >>> >>> -- >>> Mike Jameson M0MIK BSc MIET >>> Ettus Research Technical Support >>> Email: supp...@ettus.com >>> Web: http://www.ettus.com <http://www.ettus.com> >>> >>> >>> On Mon, Sep 16, 2013 at 11:16 PM, Joshua Lackey <j...@thre.at> wrote: >>> >>>> I can't get dynamic reconfiguration to work when my flow graph has a >>>> sync_block implemented in Python. If I lock() and then disconnect() and >>>> connect() other blocks, my program always hangs on the unlock(). It won't >>>> even stop when I hit ctrl-c. Superficial debugging shows that a thread is >>>> stuck on a sem_wait() somewhere. Figuring out exactly where it is would >>>> take me quite some time as I'm not familiar with that section of the GNU >>>> Radio code. (Considering I wrote the sync_block in Python to save some >>>> time, re-implementing it in C++ would be quicker for me than tracking down >>>> this potential bug.) >>>> >>>> I did search the mailing list, but I couldn't find anyone discussing >>>> this issue. At least not with the search terms I used. >>>> >>>> I realize that it is entirely possible I'm simply doing it wrong so I >>>> wrote a (minimal) example that demonstrates my problem. (Attached.) >>>> >>>> I should include information about my GNU Radio install, but I'm not >>>> sure what would be useful. I use Arch Linux and can't run the >>>> build-gnuradio script directly, but I followed it as an example. I wanted >>>> to get 3.7 so I installed from the git master branch. The last commit in >>>> my repo is be73b3035c184cf09e1051deaba20eca88de8c9d . If any other >>>> information about my system would be useful in tracking this down, please >>>> tell me. >>>> >>>> Here is an example run of the attached program. Note how the first >>>> test using all GNU Radio C++ primitives works as expected. The example >>>> only hangs when I try and lock()/unlock() the flow graph that contains my >>>> simple Python sync_block. >>>> >>>> Any ideas? >>>> >>>> >>>> $ ./unconnect_test.py -h >>>>> >>>>> Usage: unconnect_test.py: [options] >>>>> >>>>> >>>>>> Options: >>>>> >>>>> -h, --help show this help message and exit >>>>> >>>>> -f Run failing test (with python sync_block) or passing test >>>>> >>>>> (without python sync_block) >>>>> >>>>> $ ./unconnect_test.py >>>>> >>>>> Running until enter is pressed: >>>>> >>>>> Setting new sink. >>>>> >>>>> Unlocking... >>>>> >>>>> Using Volk machine: avx_64_mmx_orc >>>>> >>>>> Unlocked >>>>> >>>>> Hit Enter to quit: >>>>> >>>>> Finished. >>>>> >>>>> $ ./unconnect_test.py -f >>>>> >>>>> my_sink: init 45187536 >>>>> >>>>> Running until enter is pressed: my_sink: work: 32768 >>>>> >>>>> my_sink: work: 32767 >>>>> >>>>> my_sink: work: 32768 >>>>> >>>>> my_sink: work: 32767 >>>>> >>>>> >>>>> >>>>> Setting new sink. >>>>> >>>>> my_sink: init 45187856 >>>>> >>>>> Unlocking... >>>>> >>>>> ^Z >>>>> >>>>> [1]+ Stopped ./unconnect_test.py -f >>>>> >>>>> $ kill %1 >>>>> >>>>> >>>>>> [1]+ Stopped ./unconnect_test.py -f >>>>> >>>>> $ fg >>>>> >>>>> bash: fg: job has terminated >>>>> >>>>> [1]+ Terminated ./unconnect_test.py -f >>>>> >>>>> $ >>>>> >>>>> >>>>>> >>>>> >>>> _______________________________________________ >>>> Discuss-gnuradio mailing list >>>> Discuss-gnuradio@gnu.org >>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >>>> >>>> >>> >> >
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio