I'm dumping loadaddr and func just before that segfault so ignore the
line numbers (i have half a gazillion lines of debugging) .... the only
thing that changes is the loadaddr, the func value is always the same.

_dl_get_ready_to_run:838: We got here: 838, loadaddr = 0xb7bdc000
_dl_get_ready_to_run:839: We got here: 839, func = U��S���
Segmentation fault

Regards
Nigel


On Thu, 2008-03-27 at 14:21 +0000, Nigel Kukard wrote:
> Ok,
> 
> I've tracked this error now in uclibc svn to these lines in
> ldso/ldso.c...
> 
> Segfault now occurs on that line ...
> 
>         if (tpnt->dynamic_info[DT_INIT]) {                                    
>                                                                               
>            
>             void (*dl_elf_func) (void);                                       
>                                                                               
>                                                                               
>                                                
>                                                                               
>                                                                               
>            
>             dl_elf_func = (void (*)(void)) DL_RELOC_ADDR(tpnt->loadaddr, 
> tpnt->dynamic_info[DT_INIT]);                                                 
>                                                                               
>                                                      
>                                                                               
>                                                                               
>            
>             _dl_if_debug_dprint("calling INIT: %s\n\n", tpnt->libname);       
>                                                                               
>                                                                               
>                                                 
>                                                                               
>                                                                               
>            
> ======>>>>>            DL_CALL_FUNC_AT_ADDR (dl_elf_func, tpnt->loadaddr, 
> (void(*)(void)));                                                             
>                           
>             _dl_debug_early("We got here: %i\n",__LINE__);                    
>                                                                               
>                    
>         }        
> 
> 
> Here is the GDB trace...
> GNU gdb 6.6
> Copyright (C) 2006 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "i586-linux-uclibc"...
> Using host libthread_db library "/lib/libthread_db.so.1".
> (gdb) run
> Starting program: /bin/rpm 
> argc=1 argv=0xbf9ef704 envp=0xbf9ef70c
> ELF header=0xb7fca000
> First Dynamic section entry=0xb7fd5ef8
> Scanning DYNAMIC section
> Done scanning DYNAMIC section
> About to do library loader relocations
> Done relocating ldso; we can now use globals and make function calls!
> _dl_get_ready_to_run:172: Cool, ldso survived making function calls
> _dl_get_ready_to_run:264: Position Independent Executable: 
> app_tpnt->loadaddr=0x80000000
> _dl_malloc:937: mmapping more memory
> _dl_get_ready_to_run:354: Lib Loader: (0xb7fca000) /lib/ld-uClibc.so.0
> _dl_get_ready_to_run:292: calling mprotect on the application program
> _dl_get_ready_to_run:621: Loading: (0xb7f3a000) /usr/lib/librpm-4.4.so
> _dl_get_ready_to_run:621: Loading: (0xb7de8000) /usr/lib/librpmdb-4.4.so
> _dl_get_ready_to_run:621: Loading: (0xb7d34000) /usr/lib/librpmio-4.4.so
> _dl_get_ready_to_run:621: Loading: (0xb7d2c000) /usr/lib/libpopt.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7d11000) /usr/lib/libelf.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7cdc000) /usr/lib/libbeecrypt.so.6
> _dl_get_ready_to_run:621: Loading: (0xb7cc7000) /usr/lib/libneon.so.25
> _dl_get_ready_to_run:621: Loading: (0xb7ca6000) /usr/lib/libexpat.so.1
> _dl_get_ready_to_run:621: Loading: (0xb7c95000) /lib/libm.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c90000) /lib/libdl.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c7a000) /usr/lib/libz.so.1
> _dl_get_ready_to_run:621: Loading: (0xb7c64000) /lib/libpthread.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c05000) /lib/libc.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7de8000) /usr/lib/librpmdb-4.4.so
> _dl_get_ready_to_run:621: Loading: (0xb7d34000) /usr/lib/librpmio-4.4.so
> _dl_get_ready_to_run:621: Loading: (0xb7d2c000) /usr/lib/libpopt.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c05000) /lib/libc.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7d34000) /usr/lib/librpmio-4.4.so
> _dl_get_ready_to_run:621: Loading: (0xb7d2c000) /usr/lib/libpopt.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7d11000) /usr/lib/libelf.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c64000) /lib/libpthread.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c05000) /lib/libc.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7cdc000) /usr/lib/libbeecrypt.so.6
> _dl_get_ready_to_run:621: Loading: (0xb7cc7000) /usr/lib/libneon.so.25
> _dl_get_ready_to_run:621: Loading: (0xb7c95000) /lib/libm.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c90000) /lib/libdl.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c7a000) /usr/lib/libz.so.1
> _dl_get_ready_to_run:621: Loading: (0xb7c64000) /lib/libpthread.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c05000) /lib/libc.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c05000) /lib/libc.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c05000) /lib/libc.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c64000) /lib/libpthread.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c90000) /lib/libdl.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c05000) /lib/libc.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c7a000) /usr/lib/libz.so.1
> _dl_get_ready_to_run:621: Loading: (0xb7ca6000) /usr/lib/libexpat.so.1
> _dl_get_ready_to_run:621: Loading: (0xb7c05000) /lib/libc.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c05000) /lib/libc.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c05000) /lib/libc.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c05000) /lib/libc.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c05000) /lib/libc.so.0
> _dl_get_ready_to_run:621: Loading: (0xb7c05000) /lib/libc.so.0
> _dl_malloc:937: mmapping more memory
> _dl_get_ready_to_run:748: Beginning relocation fixups
> _dl_get_ready_to_run:764: We got here: 764
> _dl_get_ready_to_run:769: We got here: 769
> _dl_get_ready_to_run:771: We got here: 771
> _dl_get_ready_to_run:771: We got here: 771
> _dl_get_ready_to_run:771: We got here: 771
> _dl_get_ready_to_run:771: We got here: 771
> _dl_get_ready_to_run:771: We got here: 771
> _dl_get_ready_to_run:771: We got here: 771
> _dl_get_ready_to_run:771: We got here: 771
> _dl_get_ready_to_run:771: We got here: 771
> _dl_get_ready_to_run:771: We got here: 771
> _dl_get_ready_to_run:771: We got here: 771
> _dl_get_ready_to_run:771: We got here: 771
> _dl_get_ready_to_run:771: We got here: 771
> _dl_get_ready_to_run:771: We got here: 771
> _dl_get_ready_to_run:771: We got here: 771
> _dl_get_ready_to_run:771: We got here: 771
> _dl_get_ready_to_run:782: We got here: 782
> _dl_get_ready_to_run:792: We got here: 792
> _dl_get_ready_to_run:811: We got here: 811
> _dl_get_ready_to_run:818: We got here: 818
> _dl_get_ready_to_run:822: We got here: 822
> _dl_get_ready_to_run:828: We got here: 828
> _dl_get_ready_to_run:832: We got here: 832
> _dl_get_ready_to_run:835: We got here: 835
> _dl_get_ready_to_run:838: We got here: 838
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0xb7c368fd in ?? ()
> (gdb) bt
> #0  0xb7c368fd in ?? ()
> #1  0xb7fcb2a8 in _dl_do_reloc (tpnt=0xb7c63820, scope=0x0, rpnt=0xb8, 
> symtab=0xb7c59ab0, strtab=0x1000 "5\a") at ldso/ldso/i386/elfinterp.c:238
> #2  0xb7c59ace in ?? ()
> #3  0xb7c63820 in ?? ()
> #4  0x00000000 in ?? ()
> (gdb) 
> 
> 
> Not sure if I"m doing anything wrong, I enabled -g3 in uclibc build and all 
> debugging options, but I'm still getting ?? 's there.
> 
> Anywhere I can look to try find the problem?
> 
> Regards
> Nigel
> 
> _______________________________________________
> uClibc mailing list
> uClibc@uclibc.org
> http://busybox.net/cgi-bin/mailman/listinfo/uclibc
-- 
Regards
Nigel Kukard, PhD CompSc
Linux Based Systems Design

Support: 086 747 7600 (premium 24/7/365)
Fax: 086 601 7884

Quote: The best language to use is the language that was designed for
what you want to use it for.

*** The attachment to my email signature.asc is a digital PGP
signature, if your mail client supports digital signatures it will
allow you to verify I am the sender of this email and that it has not
been tampered with along the way ***

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
uClibc mailing list
uClibc@uclibc.org
http://busybox.net/cgi-bin/mailman/listinfo/uclibc

Reply via email to