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

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


Hi,

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));

        missatge[0]='h';
        missatge[1]='o';
        missatge[2]='l';
        missatge[3]='a';

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

        int voltes;
        voltes = 0;

        while(voltes<4)
        {
                midataula = midataula+500;
                realloc(missatge, midataula * sizeof(char));
                voltes++;
        }


        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?

thanks.



More information about the freebsd-questions mailing list