Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mysterious malloc: sysmalloc: Assertion failed error

Tags:

c

malloc

assert

I am getting a mysterious error and I have no idea why. This code runs several times before failing, and it always fails at the same point.

Here is my code:

    assert(size > 0);
    int* sorted = malloc(size * sizeof(int));

And here is the error I am getting when I run it:

    malloc.c:2369: sysmalloc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.

I have tried printing out size and it is 1 in this case. This code runs several times with varying values of size, including 1, before failing.

Does anyone have any idea what I am doing wrong?

Thanks.

like image 741
Ian Avatar asked Oct 20 '13 11:10

Ian


1 Answers

This usually happens when your code freed an invalid address at some prior time, or wrote past the end of the allocated memory block. Run your code through valgrind or some other memory profiler to see the point where this happens.

like image 81
Sergey Kalinichenko Avatar answered Oct 01 '22 00:10

Sergey Kalinichenko