B S Srinidhi wrote: > I'm new to this list, but I've searched the archives (a little bit) to > find a solution to my problem and haven't found anything. > > I've an application running on an amd64 machine. This app crashes while > allocating memory of size 300: > > suffix = malloc(sizeof(char) * 300); > > When run under GDB, I get the following bt: > > *** glibc detected *** malloc(): memory corruption: 0x00000000005343f0 *** > > Program received signal SIGABRT, Aborted. > 0x0000002a96214de0 in raise () from /lib/libc.so.6 > (gdb) where > #0 0x0000002a96214de0 in raise () from /lib/libc.so.6 > #1 0x0000002a96216290 in abort () from /lib/libc.so.6 > #2 0x0000002a9624b06e in __fsetlocking () from /lib/libc.so.6 > #3 0x0000002a962518fa in free () from /lib/libc.so.6 > #4 0x0000002a96252d4b in malloc () from /lib/libc.so.6 > <snipped> > > Any ideas as to why this could be happening? The heap has been corrupted, e.g. due to a buffer overrun. > How can I debug this problem? Tracking down heap corruption can be awkward, as the error won't usually occur until some time later. There are some hints in the glibc Info file regarding the use of mprobe(). Another possibility is Electric Fence (libefence). > And why is malloc() calling free()? I don't know about that. It may just indicate incomplete debugging information in libc. -- Glynn Clements <glynn@xxxxxxxxxxxxxxxxxx> - : send the line "unsubscribe linux-c-programming" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html