i386/73261: Suspending su sometimes hangs

J. Porter Clark jpc at drum.msfc.nasa.gov
Thu Oct 28 17:30:34 PDT 2004


>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 at 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:


More information about the freebsd-i386 mailing list