| Summary: | Backgrounded processes remain in ttyin state / SIGCONT does not remove sleeping processes from sleep queue | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Base System | Reporter: | Jeremy Chadwick <jdc> | ||||
| Component: | kern | Assignee: | freebsd-bugs (Nobody) <bugs> | ||||
| Status: | Closed FIXED | ||||||
| Severity: | Affects Only Me | ||||||
| Priority: | Normal | ||||||
| Version: | 9.1-PRERELEASE | ||||||
| Hardware: | Any | ||||||
| OS: | Any | ||||||
| Attachments: |
|
||||||
|
Description
Jeremy Chadwick
2012-10-24 04:50:00 UTC
Mail thread on -stable at this point, including a patch from ed@ From: Ed Schouten <ed@80386.nl> To: Konstantin Belousov <kostikbel@gmail.com> Date: Thu, 25 Oct 2012 09:45:11 +0200 Cc: Jeremy Chadwick <jdc@koitsu.org>, freebsd-stable@freebsd.org, jhb@freebsd.org Subject: Re: pty/tty or signal strangeness, or grep/bsdgrep bug? Hi all, 2012/10/23 Ed Schouten <ed@80386.nl>: > Will try to come up with a decent patch tomorrow evening. Ahem; the day after tomorrow. Jeremy, could you please try the following patch? http://80386.nl/pub/tty-bg-read.txt I decomposed the TTY read routine into four separate functions to improve clarity. While this was initially true, I think it's a pity the four functions are constantly becoming a bit more complex. The same issue is also present on the output path, but I have no idea how realistic/hard it is to fix this issue. Also, it might not really be an issue in practice. If you do a large write and become a non-foreground process group, you might be able to circumvent TOSTOP while the write() is in transit. Fixing this might be tedious, because we currently enforce that writes to a TTY are serialized. Blocking inside the write() might then cause a deadlock. But in my opinion, I would prefer the serialization over the enforcing of TOSTOP. Thanks again for reporting the issue! -- Ed Schouten <ed@80386.nl> From: Jeremy Chadwick <jdc@koitsu.org> To: Ed Schouten <ed@80386.nl> Date: Thu, 25 Oct 2012 01:46:03 -0700 Cc: Konstantin Belousov <kostikbel@gmail.com>, freebsd-stable@freebsd.org, jhb@freebsd.org Subject: Re: pty/tty or signal strangeness, or grep/bsdgrep bug? On Thu, Oct 25, 2012 at 09:45:11AM +0200, Ed Schouten wrote: > 2012/10/23 Ed Schouten <ed@80386.nl>: > > Will try to come up with a decent patch tomorrow evening. > > Ahem; the day after tomorrow. Jeremy, could you please try the following patch? > > http://80386.nl/pub/tty-bg-read.txt > > I decomposed the TTY read routine into four separate functions to > improve clarity. While this was initially true, I think it's a pity > the four functions are constantly becoming a bit more complex. > > The same issue is also present on the output path, but I have no idea > how realistic/hard it is to fix this issue. Also, it might not really > be an issue in practice. If you do a large write and become a > non-foreground process group, you might be able to circumvent TOSTOP > while the write() is in transit. > > Fixing this might be tedious, because we currently enforce that writes > to a TTY are serialized. Blocking inside the write() might then cause > a deadlock. But in my opinion, I would prefer the serialization over > the enforcing of TOSTOP. After the patch, testing with grep and cat, and checking cv/state for the latter case: (01:30:39 jdc@icarus) ~ $ csh % grep -r "-2011" . & [1] 1964 % jobs [1] + Suspended (tty input) grep -r -2011 . % fg grep -r -2011 . ^C % jobs % grep -r "-2011" . ^Z Suspended % bg [1] grep -r -2011 . & [1] + Suspended (tty input) grep -r -2011 . % fg grep -r -2011 . ^C % cat & [1] 2042 % jobs [1] + Suspended (tty input) cat % ps -auxwU jdc | grep cat jdc 2042 0.0 0.0 9908 1496 1 T 1:34AM 0:00.00 cat jdc 2044 0.0 0.0 16268 1864 1 S+ 1:34AM 0:00.00 grep cat % top -b -U jdc | grep cat 2042 jdc 1 20 0 9908K 1496K STOP 0 0:00 0.00% cat 2047 jdc 1 20 0 16268K 1864K piperd 0 0:00 0.00% grep cat % fg cat ^C % exit I do not get dropped characters or witness any other anomalies. I tested behaviour with /bin/sh, as well as bash. All seems good. > Thanks again for reporting the issue! No, thank *you* and others for looking + fixing it! :-) I assume a commit to HEAD + MFC in 2 weeks is in order? I'll update the PR with this part of our mail thread. -- | Jeremy Chadwick jdc@koitsu.org | | UNIX Systems Administrator http://jdc.koitsu.org/ | | Mountain View, CA, US | | Making life hard for others since 1977. PGP 4BD6C0CB | Another follow-up in the thread -- fix has been committed to HEAD, pending 2 weeks for MFC. This fix **will not** make it into 9.1-RELEASE, sadly, but will obviously be available in RELENG_9 going forward. From: Ed Schouten <ed@80386.nl> To: Jeremy Chadwick <jdc@koitsu.org> Date: Thu, 25 Oct 2012 11:06:09 +0200 Cc: Konstantin Belousov <kostikbel@gmail.com>, freebsd-stable@freebsd.org, jhb@freebsd.org Subject: Re: pty/tty or signal strangeness, or grep/bsdgrep bug? 2012/10/25 Jeremy Chadwick <jdc@koitsu.org>: > I assume a commit to HEAD + MFC in 2 weeks is in order? Yes. We're far too late to get this into 9.1, so I'll MFC it after the release. Patch committed as r242078! -- Ed Schouten <ed@80386.nl> State Changed From-To: open->closed Committed. Thanks! |