libumem uses fixed size pools so for example if you malloc 70 bytes umem will 
return a buffer which 
is 95 bytes. So maybe there is a buffer overrun. And with libumem the spare 
space gets clobbered.
But with other libraries the start of another buffer gets clobbered.
I think that's most likely what is happening.

Use C++ stl strings instead of c char arrays maybe :)

Try running with umem debug.  preload like this:
UMEM_DEBUG=default UMEM_LOGGING=transaction LD_PRELOAD=libumem.so.1 <your cmd>
::umem_verify will check for corruption just over the end of buffers.
::umem_status will show details and stack if umem exited because of buffer 
corruption

James.

Jan Kopriva wrote:
> Hi all,
> 
> I have a strange problem. A utility I am using sometimes coredumps  
> SIGSEGV. If I use it with libumem preloaded it works perfectly.
> Is there any debugging technique I can use in such cases?
> 
> Thanks
> 
> Jan
> _______________________________________________
> mdb-discuss mailing list
> mdb-discuss at opensolaris.org


Reply via email to