discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] Python message passing block hangs (test file include


From: Anderson, Douglas J.
Subject: [Discuss-gnuradio] Python message passing block hangs (test file included)
Date: Thu, 12 Mar 2015 21:00:08 +0000

Hi all,

I'm struggling to understand an issue I'm having with a simple python block with a registered message port connected to the copy block.

The python block looks like this: it literally does nothing, it just happens to have a message port registered:

class signal_sink(gr.sync_block):
  def __init__(self):
    gr.sync_block.__init__(self, name="sink", in_sig=[np.float32], out_sig=None)
    self.signal = pmt.from_bool(False)
    self.port_name = pmt.intern("sig")
    self.message_port_register_out(self.port_name)

def work(self, input_items, output_items):
    return len(input_items[0])

Then I have a gr.unittest case that connects a vector_source, the copy block, and the above signal sink:

def test_copy(self):
    src_data = np.arange(1000)
    src = "">
    copy = blocks.copy(gr.sizeof_float)
    msg_debug = blocks.message_debug()
    sig_sink = signal_sink()
    self.tb.connect(src, copy, sig_sink)
    self.tb.msg_connect(sig_sink, "sig", copy, "en")

    # Run once (this run is successful)
    self.tb.run()

    # Run again (this run hangs)
    src.rewind()
    self.tb.run()

The
second time the flowgraph is "run", it hangs indefinitely. GDB shows sig_sink's thread state as
#0 pthread_cond_timedwait@@GLIBC_2.3.2 ()
at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:238

Commenting out the "self.tb.msg_connect" line stops the hang, as does connecting sig_sink's message port to a message_debug block (which is not in the flowgraph).

All this even though the sig_sink block doesn't send any signals over its message port.

Any hints would be very much appreciated, my debugging prowess has taken me as far as it's going to take me.

I've attached the complete test file that you can run with "python test.py"

Thanks in advance,
-Doug

Attachment: test.py
Description: test.py


reply via email to

[Prev in Thread] Current Thread [Next in Thread]