bin/129378: [t]csh loses foreground process group

Steve Watt steve at watt.com
Tue Dec 2 15:40:02 PST 2008


>Number:         129378
>Category:       bin
>Synopsis:       [t]csh loses foreground process group
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Dec 02 23:40:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Steve Watt
>Release:        6.4-PRE as of 16 Sept 08 23:30Z
>Organization:
Watt Consultants
>Environment:
FreeBSD wattres.Watt.COM 6.4-PRERELEASE FreeBSD 6.4-PRERELEASE #11: Mon Nov 24 12:04:45 PST 2008     root at wattres.Watt.COM:/usr/obj/usr/src/sys/WATTRES  i386

>Description:
tcsh 6.15.00 appears to lose track of the foreground process group when SIGINT comes in during backquote expansion.  This problem does not show up with tcsh 6.14.00.

The symptom is that when I do a long-ish running task inside a `` expansion
that I then ^C, nobody gets the foreground process group...  I never get
a prompt back after the ^C, and ^T gets me

  load: 0.27 no foreground process group

Sending SIGCHLD and/or SIGCONT to the tcsh doesn't seem to make any
difference at all.

The tcsh is sitting in "pause" WCHAN, which seems sensible.  A truss
on tcsh reveals (oddly enough) that it's sitting in sigsuspend().
Sending it signals makes it loop through a wait4() call and go back into
sigsuspend().

It happens running either as root (from sudo) or as a regular user.  It
happens under xterm, under ssh sessions, and on a direct console login.

One portable reproduction:
# cd /usr/src
# less `egrep -lir '^Foo.*baz' *`
^Cload: 0.02 no foreground process group

(I typed ^C ^T)

SIGKILL to the shell seems to be the only way to get things back, and it does in your shell.

I also got a "me too" from my posting on -hackers about this which stated that a SIGHUP would also make the shell go away.

>How-To-Repeat:
% cd /usr/src
% less `egrep -lir '^Foo.*baz' *`
^C^T
>Fix:
Use tcsh 6.14.00 (probably not a desirable workaround).

>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list