discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] flowgraph with async messaging hangs on calling w


From: Mark Cottrell
Subject: Re: [Discuss-gnuradio] flowgraph with async messaging hangs on calling wait()
Date: Thu, 12 Sep 2013 09:08:51 +1200

Hi Tom,

I spent a while playing around with this, including adding a bunch of debug output to tpb_thread_body::tpb_thread_body, and found that when a block is done, the DONE state should propagate through the flow graph as tpb_detail::notify_neighbours is called (as I'm sure you're aware).  The problem is, tpb_detail::notify_neighbours only notifies blocks that that have input or output buffers (which as far as I can tell, blocks with only message inputs or outputs don't), so blocks like message_debug will block on tpb_detail::input_cond forever (on line 110 of tpb_thread_body.cc) and can never be notified (as it has no input buffers, so notify downstream does nothing).

Johnathan contacted me r.e. this and I sent him a patch which fixed the problem for me (attached to this message), but I don't think he has had time to look at it yet.  The gist of it is that it uses pmt::PMT_EOF to indicate that message blocks should transition to done and notify neighbours.

Please feel free to correct me on any of what I said above, this was my first foray into the scheduler so I could have it completely wrong.

Thanks,
Mark


On Thu, Sep 12, 2013 at 3:56 AM, Tom Rondeau <address@hidden> wrote:
On Thu, Aug 22, 2013 at 10:44 PM, Mark Cottrell
<address@hidden> wrote:
> Hello all,
>
> I have written a sync block that takes in samples and outputs messages
> (similar to tagged_stream_to_pdu), but when writing a test for the block I
> found that when I called top_block.run(), the test never finished, as it
> appears to be hanging on the call to top_block.wait().
>
> The flow graph for the test is as follows:
> non-repeating file source -> my block -> message_debug
>
> is hanging the expected behaviour?  I can work around it by counting the
> number of items written by the file source, but it would be nice to have it
> terminate of its own accord.
>
> Thanks,
> Mark


Mark,

No, that's not expected behavior. When the file sink finishes, it
should set the DONE stage in the scheduler that should indicated to
every down stream block that they are also done.

Make sure that there isn't something happening where your block isn't
getting stuck in 'work' at this point.

--
Tom
Visit us at GRCon13 Oct. 1 - 4
http://www.trondeau.com/grcon13



This email, including any attachments, is only for the intended recipient. It is subject to copyright, is confidential and may be the subject of legal or other privilege, none of which is waived or lost by reason of this transmission.
If you are not an intended recipient, you may not use, disseminate, distribute or reproduce such email, any attachments, or any part thereof. If you have received a message in error, please notify the sender immediately and erase all copies of the message and any attachments.
Unfortunately, we cannot warrant that the email has not been altered or corrupted during transmission nor can we guarantee that any email or any attachments are free from computer viruses or other conditions which may damage or interfere with recipient data, hardware or software. The recipient relies upon its own procedures and assumes all risk of use and of opening any attachments.

Attachment: async_message_stopping3.patch
Description: Binary data


reply via email to

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