gdb cannot recognize symbol format elf32-i386
Sergio M. Ammirata, Ph.D.
sergio at ammirata.net
Sat Nov 7 12:04:40 UTC 2009
Apparently the crash is coming from the malloc function under libc.
Here is more info on the crash:
Program terminated with signal 11, Segmentation fault.
[New process 3278]
[New process 3265]
[New process 3266]
[New process 3267]
[New process 3274]
[New process 3276]
[New process 3277]
[New process 3248]
[New process 3367]
[New process 3264]
#0 0x37783ec1 in malloc (bytes=7719) at
libc/stdlib/malloc-standard/malloc.c:953
953 bck->fd = unsorted_chunks(av);
(gdb) bt
#0 0x37783ec1 in malloc (bytes=7719) at
libc/stdlib/malloc-standard/malloc.c:953
#1 0x080985be in __block_New (p_obj=0x8926648, i_size=7567) at
misc/block.c:55
#2 0x0814946f in Encode (p_enc=0x8926648, p_pict=0x8925478) at x264.c:1345
#3 0x37312e73 in EncoderThread (p_sys=0x88913b0) at transcode.c:2398
#4 0x37809102 in pthread_start_thread (arg=0x3e7ffea0) at
libpthread/linuxthreads.old/manager.c:309
#5 0x37717b92 in clone () at libc/sysdeps/linux/i386/clone.S:106
If it helps, here is the code that does not belong to uClibc in the stack
above:
These are the lines of code at x264.c starting at line 1345:
=========================================================
p_block = block_New( p_enc, i_out );
if( !p_block ) return NULL;
memcpy( p_block->p_buffer, p_sys->p_buffer, i_out );
=========================================================
This is the content on the block_New function in misc/block.c,
Line 55 is the call to malloc
=========================================================
block_t *__block_New( vlc_object_t *p_obj, int i_size )
{
/* We do only one malloc
* TODO bench if doing 2 malloc but keeping a pool of buffer is better
* 16 -> align on 16
* 2 * BLOCK_PADDING_SIZE -> pre + post padding
*/
block_sys_t *p_sys;
const int i_alloc = i_size + 2 * BLOCK_PADDING_SIZE + 16;
block_t *p_block =
malloc( sizeof( block_t ) + sizeof( block_sys_t ) + i_alloc );
.....
}
=========================================================
Thanks,
Sergio
On 11/6/09 6:00 PM, "Mike Frysinger" <vapier at gentoo.org> wrote:
> On Friday 06 November 2009 17:22:12 Sergio M. Ammirata, Ph.D. wrote:
>> Thanks for your advise. I was indeed compiling gdb as part of the buildroot
>> process. I compiled it on my target instead and now I can see the backtrace
>> without any errors (I use a plain ./configure and make on the original gdb
>> source).
>
> file a bug with the buildroot people then
>
>> Program terminated with signal 11, Segmentation fault.
>> [New process 8262]
>> [New process 8260]
>> [New process 8249]
>> [New process 8350]
>> [New process 8248]
>> [New process 8194]
>> [New process 8246]
>> [New process 8247]
>> [New process 8259]
>> [New process 8251]
>> #0 0x3767fb0e in malloc () from /lib/libc.so.0
>> (gdb) bt
>> #0 0x3767fb0e in malloc () from /lib/libc.so.0
>> #1 0x00000000 in ?? ()
>>
>> How can I dig deeper into this error now?
>> Should I compile the uclibc with full debug symbols and remove the strip
>> option in the config as well?
>
> and enable debugging in your code
>
>> This crash was not happening with 0.9.28 with the same application.
>
> that doesnt completely implicate uClibc as the problem. often times changing
> C library can make the application behave slightly differently and thus crash
> in ways it didnt before.
> -mike
More information about the uClibc
mailing list