error allocating memory with realloc(). how can i increase max_allowed in the system?

Jordi Moles Blanco jordi at
Tue Aug 12 15:02:52 UTC 2008


i'm running a FreeBSD 7.0 amd64 machine and struggling with some C code 
i'm writing.

I've had some trouble with this home-made script as it keeps crashing 
while launching a "realloc()" call.

I narrowed down the problem and here i'm sending you a short example of 
code that crashes:

#include <stdio.h>
#include <stdlib.h>

int main()

        int midataula;

        midataula = 3000;

        char *missatge = (char *)malloc(midataula * sizeof(char));


        printf("\n\ntaula1: %s",missatge);

        int voltes;
        voltes = 0;

                midataula = midataula+500;
                realloc(missatge, midataula * sizeof(char));

        printf("\n\ntaula2: %s",missatge);

this is a full "working" you can compile on your machine.

Like this... i get "Segmentation fault (core dumped)"

but if instead of "while(voltes<4)" i use "while(voltes<3)"

the script works fine with this output:

taula1: hola

taula2: hola

so... i guess there must be a limit in the system somewhere.

I've tried to reset all variables that i've seen in the "sysctl -a" list 
refering to malloc, memory, mem, and so on... but so far i haven't fixed 
the problem.

i'm running this script as root and in the /etc/login.conf file there's 
only the "default" group with the "unlimited" values.
A part from that, if i perform a "limit" call, i get this:


# limit
cputime      unlimited
filesize     unlimited
datasize     33554432 kbytes
stacksize    524288 kbytes
coredumpsize unlimited
memoryuse    unlimited
vmemoryuse   unlimited
descriptors  45000
memorylocked unlimited
maxproc      22500
sbsize       unlimited


i've tried to resize datasize and stacksize, but the system won't let me 
do so.

any idea how to solve this?


More information about the freebsd-questions mailing list