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: [email protected]
Web: http://www.ettus.com <http://www.ettus.com>


On Tue, Sep 17, 2013 at 11:24 AM, Mike Jameson <[email protected]>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: [email protected]
> Web: http://www.ettus.com <http://www.ettus.com>
>
>
> On Tue, Sep 17, 2013 at 11:17 AM, Mike Jameson <[email protected]>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: [email protected]
>> Web: http://www.ettus.com <http://www.ettus.com>
>>
>>
>> On Mon, Sep 16, 2013 at 11:16 PM, Joshua Lackey <[email protected]> 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
>>> [email protected]
>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>
>>>
>>
>

Attachment: start_stop_hang.py
Description: Binary data

_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to