|
From: Jeremy F. <je...@go...> - 2005-03-17 16:53:19
|
Julian Seward wrote:
>Is FC3 LinuxThreads or NPTL ? If NPTL, do you have a LinuxThreads
>system you can try reproducing this on? Is setting LD_ASSUME_KERNEL=2.4.1
>really exactly the same as running it on a LinuxThreads-only system?
>
>
>
>
>>Hard to tell, really. To be honest, it looks like an application bug.
>>Two threads remain; thread 2 is the LinuxThreads manager thread, so it
>>isn't going to go away until the other thread, thread 5, dies. Thread 5
>>seems to just be looping waiting for an FD which never happens. It
>>would be interesting to attach strace to thread 5 in this state to see
>>what FD it is actually waiting on.
>>
>>
>
>It looks like fd 12.
>
> poll([{fd=12, events=POLLIN}], 1, 1000) = 0
> rt_sigprocmask(SIG_SETMASK, ~[ILL TRAP BUS FPE KILL SEGV STOP], NULL, 8) = 0
> gettid() = 10505
> read(1017, "T", 2) = 1
> getpid() = 10505
> write(1016, "SYSCALL[10505,5](168) --> 0 (0x0"..., 34) = 34
> getpid() = 10505
> write(1016, "SYSCALL[10505,5]( 78):", 22) = 22
> write(1016, "sys_gettimeofday ( 0xAEFFFA04, 0"..., 36) = 36
> gettimeofday({1111060117, 380070}, NULL) = 0
> write(1016, " --> 0 (0x0)\n", 13) = 13
> getpid() = 10505
> write(1016, "SYSCALL[10505,5](168) mayBlock:", 31) = 31
> write(1016, "sys_poll ( 0xAEFFF94C, 1, 1000 )"..., 33) = 33
> write(1016, " --> ...\n", 9) = 9
> gettid() = 10505
> write(1018, "T", 1) = 1
> rt_sigprocmask(SIG_SETMASK, [RTMIN RT_31], ~[ILL TRAP BUS FPE KILL SEGV
>STOP], 8) = 0
> poll(
>
>In the (non-truncated version of the) log I sent yesterday,
>fd 12 is used many times (open, mmap, close). The last
>place it appears to have been *created* is
>
>SYSCALL[4719,1](102) mayBlock:sys_socketcall ( 1, 0xAFEFCD40 ) --> ...
>SYSCALL[4719,1](102) --> 12 (0xC)
>
>The last place I can see it referenced is:
>
>SYSCALL[4743,5]( 54) mayBlock:sys_ioctl ( 12, 0x541B (type=54, nr=1B, size=0),
>0x2D ) --> ...
>SYSCALL[4743,5]( 54) --> 0 (0x0)
>SYSCALL[4743,5]( 3) mayBlock:sys_read ( 12, 0xAEFFF0F4, 128 ) --> ...
>SYSCALL[4743,5]( 3) --> 128 (0x80)
>SYSCALL[4743,5]( 54) mayBlock:sys_ioctl ( 12, 0x541B (type=54, nr=1B, size=0),
>0x2D ) --> ...
>SYSCALL[4743,5]( 54) --> 0 (0x0)
>
>So I'm none the wiser.
>
>Ioctl 0x541B is FIONREAD.
>
>I'd prefer not to ship 2.4.0 with this bug in, if we can resolve it
>relatively quickly. What else can I do to help you repro it?
>
>
Also, a full --trace-syscalls=yes --trace-signals=yes output would be
useful.
Something strange is definitely happening on your system. I'm pretty
sure fd 12 is the connection to the X server; it's a red herring.
What's suppose to happen is that thread 1 is supposed to tell the
manager to shut everything down. In your trace, it just exits quietly:
SYSCALL[4719,1](174) special:sys_rt_sigaction ( 3, 0xAFEFDB70, 0x0, 8 )
--> 0 (0x0)
SYSCALL[4719,1](174) special:sys_rt_sigaction ( 2, 0xAFEFDB70, 0x0, 8 )
--> 0 (0x0)
SYSCALL[4719,1](174) special:sys_rt_sigaction ( 1, 0xAFEFDB70, 0x0, 8 )
--> 0 (0x0)
SYSCALL[4719,1]( 91):sys_munmap ( 0x3DA0E000, 65536 ) --> 0 (0x0)
SYSCALL[4719,1]( 6):sys_close ( 18 ) --> 0 (0x0)
SYSCALL[4719,1]( 6):sys_close ( 13 ) --> 0 (0x0)
SYSCALL[4719,1](252) special:exit_group( 0 ) --> 252 (0xFC)
In my trace, thread 1 sends messages to the manager who in turn kills
off the other thread and itself before thread 1 finally exits.
I wonder if this is another instance of a strange vendor-special
LinuxThreads/NPTL hybrid? The full trace will be interesting, to see
how the threads are created.
J
|