logo       

Re: malloc, munmap, etc...: msg#00189

lib.uclibc.general

Subject: Re: malloc, munmap, etc...

Uwe Beutin <uwe@xxxxxxxxxx> writes:
> I'm a little confused about the stories I've read about malloc() in the
> list. I'm using uClinux-dist-20020927 with the uClibc and running three
> applications where I have taken thorough precautions that any
> malloc()'ed memory is also free()'d.
>
> But with time moving on, I can see that the free memory keeps degrading
> slowly but surely and at some point (a couple of days, depending) I get
> a Kernel Panic (out of Memory) and have to reset.

Well, first of all, you should give some more information:

* What kernel are you running (in uClinux-dist-20020927 at least,
there are two -- 2.0.x and 2.4.x)? What processor architecture?

* Which malloc are you using (in your uClibc `Config' file, there's a
line that says `MALLOC = ...', which should give that info).

* Are your programs continually running, or do they periodically exec
new programs and exit etc.?

* Are you getting messages on the console like:

munmap of non-mmaped memory by process PID (NAME): ADDR

I'm not sure what version of uClibc is included in uClinux-dist-20020927
(in fact I didn't even know there _was_ a uClinux-dist-20020927, since
the uClinux mailing list is apparently dead :-( ), but there has been
at least one important change for uClinux in the `MALLOC = malloc'
version of malloc, which could fix a memory leak.

On the other hand, if you're using `MALLOC = malloc-simple', then
malloc/free calls are translated directly to kernel calls, so your
observations would point to a possible kernel bug.

It would be useful to have more concrete information about how the
process sizes are growing/shrinking (if the process sizes _aren't_
growing and you're still running out of memory, then there's a kernel
bug). The version of ps on my uClinux (which I think is the busybox
version) doesn't correctly print process memory sizes, but you can see
how much memory your processes are using by doing `cat /proc/PID', where
PID is the process-id of your process.

Anyway, give some more details.

Thanks

-Miles
--
The secret to creativity is knowing how to hide your sources.
--Albert Einstein


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise