# Memory allocation issue

**URL:** <https://www.ruby-forum.com/t/memory-allocation-issue/232667>\
**Category:** GNU Radio\
**Created:** [October 21, 2014, 6:14pm UTC](https://www.ruby-forum.com/t/memory-allocation-issue/232667 "2014-10-21T18:14:40Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![addis\_a](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c4cdca/32.png) [@addis\_a](https://www.ruby-forum.com/u/addis_a)\
**Post date:** [October 21, 2014, 6:14pm UTC](https://www.ruby-forum.com/t/memory-allocation-issue/232667/1 "2014-10-21T18:14:40Z")

</div>

I’m writing a block that requires a large amount of data to be processed  
in one iteration of the work function. If I call set\_output\_multiple()  
with 8100 \* 130 = 1053000 items (of gr\_complex), I get the following  
error:

gr::vmcircbuf\_sysv\_shm: shmget(1): Invalid argument  
gr::vmcircbuf\_sysv\_shm: shmget(1): Invalid argument  
gr::vmcircbuf\_sysv\_shm: shmget(1): Invalid argument  
gr::buffer::allocate\_buffer: failed to allocate buffer of size 16456 KB  
gr::vmcircbuf\_sysv\_shm: shmget(1): Invalid argument  
gr::vmcircbuf\_sysv\_shm: shmget(1): Invalid argument  
gr::vmcircbuf\_sysv\_shm: shmget(1): Invalid argument  
gr::buffer::allocate\_buffer: failed to allocate buffer of size 16456 KB  
terminate called after throwing an instance of ‘std::bad\_alloc’  
what(): std::bad\_alloc

I realize that 16 Megabytes is a little large, but not astronomical.  
The set\_output\_multiple() function does work fine with 8100 \* 129  
= 1044900 items (of gr\_complex).

Is this some hard limitation in the shared memory library, or can it be  
overridden somehow?

best regards,  
Ron

---

<div class="post-metadata">

**Author:** ![deadprogrammer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/94ad74/32.png) [@deadprogrammer](https://www.ruby-forum.com/u/deadprogrammer)\
**Post date:** [October 21, 2014, 6:21pm UTC](https://www.ruby-forum.com/t/memory-allocation-issue/232667/2 "2014-10-21T18:21:12Z")

</div>

-----BEGIN PGP SIGNED MESSAGE-----  
Hash: SHA1

Hi Ron,  
yep, that can be, within kernel-caused and total memory boundaries be  
configured to your heart’s delight:

echo $(( 1024 \* 1024 \* 1024 )) \> /proc/sys/kernel/shmmax

to set the maximum size shared mem buffer to 1GB.

Greetings,  
Marcus

On 21.10.2014 18:12, Ron E. wrote:

> gr::vmcircbuf\_sysv\_shm: shmget(1): Invalid argument  
> Is this some hard limitation in the shared memory library, or can  
> it be overridden somehow?
> 
> best regards, Ron
> 
> \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ Discuss-gnuradio  
> mailing list [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> [Discuss-gnuradio Info Page](https://lists.gnu.org/mailman/listinfo/discuss-gnuradio)  
> -----BEGIN PGP SIGNATURE-----  
> Version: GnuPG v1

iQEcBAEBAgAGBQJURoevAAoJEAFxB7BbsDrLZxQH/0L9Eq9YAeSCdkwKcxDtp58l  
6kuHH+HZYHodOTxJBqlKG123Avnqr0nzCc13GAOXvRiq8ooVHrsyEOfGQooCzF8o  
yqlTNQzdxN86blnaW3Gb0BaDfIIvKWF5Q/DJHLagTsLMvKfcYRj7ke7wEge+tflJ  
YmAhcSUNqhxKyScbCkOShQMsdZcCgeirV0kkFkk2rqdMmdtSOTy7Cs/WMM0UCeP5  
zzIuBstRac/7Sax+SY88OF9IUHzlspKzY/MpqDk+RxcHWcA+u+EXBsgO3oSVjRl+  
grakLDtJBn5o95YLeRuxdSxHmRDiD6Uvuy/8MLoB78vcMWZi8S70k8SekQU8bAY=  
=h8wJ  
-----END PGP SIGNATURE-----

---

<div class="post-metadata">

**Author:** ![deadprogrammer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/94ad74/32.png) [@deadprogrammer](https://www.ruby-forum.com/u/deadprogrammer)\
**Post date:** [October 21, 2014, 6:27pm UTC](https://www.ruby-forum.com/t/memory-allocation-issue/232667/3 "2014-10-21T18:27:09Z")

</div>

Ron,

See if you can set kernel.shmmax to something higher. You can check the  
current value with

sysctl kernel.shmmax

See sysctl(8).

Jeff

---

<div class="post-metadata">

**Author:** ![deadprogrammer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/94ad74/32.png) [@deadprogrammer](https://www.ruby-forum.com/u/deadprogrammer)\
**Post date:** [October 21, 2014, 6:37pm UTC](https://www.ruby-forum.com/t/memory-allocation-issue/232667/4 "2014-10-21T18:37:52Z")

</div>

Marcus and Jeff,

```
 Works great. Thanks guys. BTW, the default on my Ubuntu 13.10 

```

system  
was 33,554,432 bytes.

best regards,  
Ron

---

<div class="post-metadata">

**Author:** ![deadprogrammer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/94ad74/32.png) [@deadprogrammer](https://www.ruby-forum.com/u/deadprogrammer)\
**Post date:** [October 21, 2014, 7:40pm UTC](https://www.ruby-forum.com/t/memory-allocation-issue/232667/5 "2014-10-21T19:40:23Z")

</div>

Hi Ron,

Yes, that seems to be linux kernel default:

$\>cd /usr/src/kernels/3.14.19\*  
$\>grep -REo  
‘^[[:space:]]\*#define[[:space:]]+SHMMAX[[:space:]]+0x[0-9a-f]+’  
include/uapi/linux/shm.h:#define SHMMAX 0x2000000  
$\>echo $((0x2000000))  
33554432

Cheers,  
Marcus

PS: help, I’m being helped captive in a bad-regex factory. They feed us  
mail addresses!
