[OpenSIPS-Users] segmentation fault when calling pkg_malloc
Vasil Kolev
vasil.kolev at attractel.com
Mon Mar 16 21:08:28 CET 2009
В 19:32 +0200 на 16.03.2009 (пн), Dan Pascu написа:
> The private memory pool used by the internal memory allocator is a 1 MB
> area right after the area where static variables are stored. It may be
> possible that there is a buffer overflow when writing to some static
> variables that gets to write in this pool overwriting the allocator
> internal structure. The system memory doesn't have this problem as it is
> stored somewhere else. Such a buffer overflow will even go unnoticed by
> memory tracing tools as it sees that the write is done in the 1MB that
> the program allocated, having no clue that the area is actually managed
> by another memory allocator that can get corrupted.
>
If a static variable is overwriting the memory buffer, this should be
easily visible with valgrind - they're both separate allocations (the
pool is a static one too). Now, if there's something that does overflow
in the pool, that will go unnoticed by default, but I think there should
be some way to make valgrind understand other mallocs (probably via an
API to say "i'm an allocator, here's what I did").
> At the same time I do not imply that this is what happens. The way the
> memory is corrupted doesn't suggest this pattern as the private memory is
> not overwritten from the beginning. It looks more like specific areas are
> overwritten as if the memory allocator thinks that the memory area was
> released and gives it to someone else on the next call to pkg_malloc,
> resulting in 2 different pointers to the area competing for the memory.
>
Another question is, is there a bug at all, e.g. are there any
definitive reports? All the memory corruption problems I've seen can be
attributed either to bugs I've introduced or the issues with the
non-null terminated BLOBs from Postgres and the zero-length results
(again from postgres).
--
Regards,
Vasil Kolev
Attractel NV
dCAP #1324, LPIC2
More information about the Users
mailing list