Re: 2.6.25.3: su gets stuck for root

Harald Dunkel
2008-05-20T19:01:53Z

Alan Cox wrote:
>> This GDB was configured as "x86_64-linux-gnu"...
>> Attaching to program: /var/tmp/coreutils-6.10/coreutils-6.10/src/stty, process 26465
>> /tmp/buildd/gdb-6.8/gdb/linux-nat.c:988: internal-error: linux_nat_attach: Assertion `pid == GET_PID (inferior_ptid) && WIFSTOPPED (status) && WSTOPSIG (status) == SIGSTOP' failed.
>> A problem internal to GDB has been detected,
>
> So your gdb is broken, your stty is doign stuff nobody else seems to be
> seeing ? My first thought is to suspect the distro/source as I've still
> had no other equivalent reports and given the gdb spew.
>

I doubt that Debian is to blame here. I get the same with native
gdb-6.8 and native coreutils-6.10:

# /usr/local/stow/gdb-6.8/bin/gdb ./stty 11944
GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu"...
Attaching to program: /var/tmp/coreutils-6.10/coreutils-6.10/src/stty, process 11944
../../gdb/linux-nat.c:988: internal-error: linux_nat_attach: Assertion `pid == GET_PID (inferior_ptid) && WIFSTOPPED (status) && WSTOPSIG (status) == SIGSTOP' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) y

../../gdb/linux-nat.c:988: internal-error: linux_nat_attach: Assertion `pid == GET_PID (inferior_ptid) && WIFSTOPPED (status) && WSTOPSIG (status) == SIGSTOP' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Create a core file of GDB? (y or n) n

> I'll have a dig further however as the GDB spew itself might actually be
> a useful clue. Not sure I can do much without a proper trace however (if
> gdb is borked on your box is strace giving sane reports ?)
>

As written earlier in this thread I can attach strace to the running
stty. It prints a continuous flow of

:
ioctl(0, SNDCTL_TMR_START or TCSETS, {B38400 opost isig icanon echo ...}) = ? ERESTARTSYS (To be restarted)
--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---
--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---
:

Using strace -v I get

:
ioctl(0, SNDCTL_TMR_START or TCSETS, {c_iflags=0x500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = ? ERESTARTSYS (To be restarted)
--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---
--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---
:

Surely I am no specialist for termio. Please mail if I can help.
BTW, I am on 2.6.25.4 now.

Regards

Harri