Hello,

For me the problem was introduced in package libc6_2.3.6.ds1-6_i386.deb by 
linux-kernel-header-2.6.18-1.
Building libc6 with linux-kernel-headers_2.6.17.10-3 work fine for me.
And the difference that cause freeze between lkh  2.6.17.10-3 and 2.6.18-1 is 
in linux/compiler.h.
The ___KERNEL___ directive have moved and  some declarations are not in 
userspace. In our case, this is noinline define that cause problem.
Before lkh 2.6.18-1 noinline was undefined in userspace, so declaration like 
"__attribute ((noinline))__" was equal to "__attribute (())__".
When print_statistics function code in elf/rtld.c is noinlined by gcc, VIA C7 
freeze.
And in print_statistics that is _dl_debug_printf call that fail by heavy 
realloc. More precisely, unsigned long int num_relative_relocations seems to be 
the source. Deleting that printf var is an issue.

I would like to debug more and more, but I have no time to do that. Any 
investigation and tech used for debugging interests me.
I don't know how to disassembly inlined function to compare it to noinlined 
function.

I have build a libc6 debian package with fix from official debian subversion 
for my production, if you need it I can share it. But I think we are very 
nearly to find the real bug. And maybe all no intel x86 are concerned...

NOTE : We talk about freeze, freeze,... I don't think that is a freeze, kernel 
seems to switch in infinite loop.

Best regards,
Julien Durand.

Reply via email to