uclibc segfault in ldso

Nigel Kukard nkukard at lbsd.net
Fri Mar 28 16:04:07 UTC 2008


HI,

> Can't see anything, I think you should add printouts in __uClibc_init()
> to see if you get there, use the write() sys call as I don't think you
> can use any of the libc print functions.
> 
> Non PIE rpm works I guess?
> Does rpm work in glibc, both PIE and non PIE?
> 
>  Jocke



_malloc:921: mmapping more memory
_dl_get_ready_to_run:748: Beginning relocation fixups
here: 001
here: 002
here: 025
here: 026
Segmentation fault

Looks like its choking on pthreads?



/*
 * __uClibc_main.                                                                                                                                                      
 */                                                                                                                                                                    
                                                                                                                                                                       
extern void __uClibc_init(void);                                                                                                                                       
libc_hidden_proto(__uClibc_init)                                                                                                                                       
void __uClibc_init(void)                                                                                                                                               
{                                                                                                                                                                      
    static int been_there_done_that = 0;                                                                                                                               
write(0,"here: 001\n",10);                                                                                                                                             
    if (been_there_done_that)                                                                                                                                          
        return;                                                                                                                                                        
    been_there_done_that++;                                                                                                                                            
write(0,"here: 002\n",10);                                                                                                                                             
                                                                                                                                                                       
    /* Setup an initial value.  This may not be perfect, but is                                                                                                        
     * better than  malloc using __pagesize=0 for atexit, ctors, etc.  */                                                                                              
    __pagesize = PAGE_SIZE;                                                                                                                                            
                                                                                                                                                                       
#ifdef __UCLIBC_HAS_THREADS__                                                                                                                                          
    /* Before we start initializing uClibc we have to call                                                                                                             
     * __pthread_initialize_minimal so we can use pthread_locks                                                                                                        
     * whenever they are needed.                                                                                                                                       
     */                                                                                                                                                                
write(0,"here: 025\n",10);                                                                                                                                             
    if (likely(__pthread_initialize_minimal!=NULL))                                                                                                                    
{                                                                                                                                                                      
write(0,"here: 026\n",10);                                                                                                                                             
        __pthread_initialize_minimal();                                                                                                                                
write(0,"here: 027\n",10);                                                                                                                                             
}                                                                                                                                                                      
#endif                                                                                                                                                                 
write(0,"here: 003\n",10);  
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://lists.busybox.net/pipermail/uclibc/attachments/20080328/ba845dfa/attachment-0002.pgp 


More information about the uClibc mailing list