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