Skip to content
Advertisement

GNU Radio & Python script: “shmget (2): No space left on device”

I currently have the following error when running a Python script with gnuradio 3.7 blocks:

> gr::vmcircbuf_sysv_shm: shmget (2): No space left on device
> gr::vmcircbuf_sysv_shm: shmget (2): No space left on device
> gr::vmcircbuf_sysv_shm: shmget (2): No space left on device
> gr::buffer::allocate_buffer: failed to allocate buffer of size 64 KB
> gr::vmcircbuf_sysv_shm: shmget (2): No space left on device
> gr::vmcircbuf_sysv_shm: shmget (2): No space left on device
> gr::vmcircbuf_sysv_shm: shmget (2): No space left on device
> gr::buffer::allocate_buffer: failed to allocate buffer of size 64 KB
> terminate called after throwing an instance of 'std::bad_alloc'  
> what():  std::bad_alloc Aborted (core dumped)

I have followed the lines as suggest here: http://osdir.com/ml/discuss-gnuradio-gnu/2013-06/msg00521.html and changing the kernel.shmall and kernel.shmmax values.

But what are acceptable values? I have increased them 8 fold and have had no success.

More info: I am starting and stopping gnuradio pythons chains in a loop. Each time, I stop a chart, the memory is fine. I have 6 CPUs and 24 GB of RAM.

Best, Chris

Advertisement

Answer

We’ve solved this issue on the mailing list, please read the thread below. Long story short: GNU Radio uses shared memory for its circular buffers, and under certain circumstances you might run out of handles for these, which gives you this error. Does

sudo sysctl kernel.shmmni=32000

solve your issue?

http://lists.gnu.org/archive/html/discuss-gnuradio/2014-11/msg00292.html

Greetings, Marcus

User contributions licensed under: CC BY-SA
5 People found this is helpful
Advertisement