Date: Fri, 29 Oct 2004 00:28:40 GMT From: "J. Porter Clark" <jpc@drum.msfc.nasa.gov> To: freebsd-gnats-submit@FreeBSD.org Subject: i386/73261: Suspending su sometimes hangs Message-ID: <200410290028.i9T0SeIM060359@www.freebsd.org> Resent-Message-ID: <200410290030.i9T0UXaW037796@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 73261 >Category: i386 >Synopsis: Suspending su sometimes hangs >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-i386 >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Fri Oct 29 00:30:33 GMT 2004 >Closed-Date: >Last-Modified: >Originator: J. Porter Clark >Release: 5.3-STABLE >Organization: NASA MSFC >Environment: FreeBSD hammer.msfc.nasa.gov 5.3-STABLE FreeBSD 5.3-STABLE #0: Thu Oct 28 08:40:49 CDT 2004 jpc@hammer.msfc.nasa.gov:/usr/obj/usr/src/sys/HAMMER i386 >Description: If I run "su", then enter "suspend", sometimes the terminal becomes nonresponsive. The same thing happens if I su to my own userid. I have not seen it happen by running "csh" instead. This is on a fast SMP machine. The problem rarely happens when I'm tracing su, but here's what it looks like when it does: (output of strace) sigprocmask(SIG_BLOCK, NULL, [INT]) = 0 sigprocmask(SIG_BLOCK, [], [STOP CONT CHLD WINCH]) = 0 sigprocmask(SIG_SETMASK, [], []) = 0 close(0) = -1 EBADF (Bad file descriptor) dup(19) = 0 fcntl(0, F_SETFD, 0) = 0 close(1) = -1 EBADF (Bad file descriptor) dup(17) = 1 fcntl(1, F_SETFD, 0) = 0 close(2) = -1 EBADF (Bad file descriptor) dup(18) = 2 fcntl(2, F_SETFD, 0) = 0 syscall_416(0x12, 0xbfbfa4f0, 0xbfbfa4d0) = 0 kill(0, SIGTSTP Yes, it stops right there, with the cursor right at the end of the P. If I kill the su PID, it picks up: ) = 0 --- SIGHUP (Hangup) --- --- SIGHUP (Hangup) --- --- SIGTERM (Terminated) --- sigprocmask(SIG_BLOCK, [], []) = 0 and it starts writing out root's csh .history file. When hung, ps axlww looks like this: UID PID PPID CPU PRI NI VSZ RSS MWCHAN STAT TT TIME COMMAND 0 65182 57246 0 8 0 1600 1284 wait S p1 0:00.01 /usr/bin/su 0 65183 65182 0 96 0 2288 1800 - T+ p1 0:00.03 _su (csh) >How-To-Repeat: Run "su". Then enter "suspend." Sometimes I get a shell prompt back, sometimes I don't get anything. If I don't, control-C, etc., doesn't clear the condition, although I do get character echo. Killing su from another tty works. If you do get a shell prompt back, enter "fg" and repeat "suspend" again. About half the time, I get the hanging condition. >Fix: Unknown. >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200410290028.i9T0SeIM060359>