Message queues - Inconsistent data problem

Hello,

I’m using Gnuradio version: v3.7.2.1-62 and am facing a strange issue
with message queuing.

I wrote a testing “hier” block which holds 2 message blocks (source +
sink).


#create blocks
msgq_in = gr.msg_queue(2)
msgq_out = gr.msg_queue(2)
msg_sink = blocks.message_sink(gr.sizeof_char, msgq_in, False)
msg_source = blocks.message_source(gr.sizeof_char, msgq_out)

#connect
self.connect(self, msg_sink)
self.connect(msg_source, self)

The hier block run a thread which read messages from the message_sink
and send them to message_source. Nothing more.
The final flow graph is “File source” -> “Hier block” -> “File Sink”

The full python code is here:
http://pastebin.com/AfFhEGQ6

The problem:

/tmp/source contains “abcdefghijklmnopqrstuvwxz0123456789” + new line:

$ hexdump -C /tmp/source
00000000 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70
|abcdefghijklmnop|
00000010 71 72 73 74 75 76 77 78 7a 30 31 32 33 34 35 36
|qrstuvwxz0123456|
00000020 37 38 39 0a |789.|

When I run the Gnuradio script for a few seconds, I expect to found
the following in /tmp/sink:

$ head /tmp/sink
abcdefghijklmnopqrstuvwxz0123456789
abcdefghijklmnopqrstuvwxz0123456789
abcdefghijklmnopqrstuvwxz0123456789
abcdefghijklmnopqrstuvwxz0123456789
abcdefghijklmnopqrstuvwxz0123456789
[…]

However, from time to time, bytes are missing:

$ grep -v abcdefghijklmnopqrstuvwxz0123456789 /tmp/sink
abcdefghijklmnopqrstuvwxz012qrstuvwxz0123456789
abcdeqrstuvwxz0123456789
abcklmnopqrstuvwxz0123456789
abcdefghijklmnopqrstuvwxz01234stuvwxz0123456789
abcdefghijklmnopqrstuvwx

Am I doing something wrong ?

Thank you very much for your feedback.

Regards,
Jerome

Hello again,

My python code is actually inspired from “Packet Encoder” block
(/path/to/gnuradio/…/grc_gnuradio/blks2/packet.py) were I suffer
from the same issue.
I wrote that python script to make it very simple/short and confirm
the troubles.

I would be honored if someone could get a try on it to confirm whether
or not it is reproducible.
I’m wondering if the bug is in GnuRadio or between the chair and the
screen…

Thank you very much !
Jerome

2014-06-29 16:08 GMT+02:00 Jérôme Nokin [email protected]:

On Wed, Jul 2, 2014 at 3:33 AM, Jérôme Nokin [email protected]
wrote:

I’m wondering if the bug is in GnuRadio or between the chair and the
screen…

Thank you very much !
Jerome

My best guess is that you are flooding the queueing system and it’s
dropping on you. Try increasing the depth of the queue.

Also, message queues aren’t well supported, which is why no one is
answering your questions. Probably best to think of another way to
handle
your problem (like the new async message passing system:
http://gnuradio.org/doc/doxygen/page_msg_passing.html)

Tom

Thank you for your advices Tom,

Regards,
Jerome

2014-07-06 16:18 GMT+02:00 Tom R. [email protected]:

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs