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: Tom Rondeau
Subject: Re: [Discuss-gnuradio] flowgraph with async messaging hangs on calling wait()
Date: Thu, 12 Sep 2013 09:45:32 -0400

On Wed, Sep 11, 2013 at 5:08 PM, Mark Cottrell
<address@hidden> wrote:
> 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

Yeah, ok, I see the problem. I think I remember now someone else
talking about this potential issue.

I'll discuss your patch with Johnathan sometime soon. I see where
you're going with it, but I'm hoping that there's a solution that's a
bit simpler (or just fewer changes).

Thanks,

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


> 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



reply via email to

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