Re: Attention 7.x and 8.x ptmx/pts users (read if you set kern.pts.enable=1)

From: Ed Schouten <ed_at_fxq.nl>
Date: Tue, 4 Dec 2007 12:47:24 +0100
* Robert Watson <rwatson_at_FreeBSD.org> wrote:
> Yes.  There's also another known issue, likely not corrected by this patch, 
> in which closing the pty before the pts fails to properly wake up processes 
> hung off the pts and inform them of its impending doom, resulting in the 
> pty/pts pair never being garbage-collected.  I've not tracked this down 
> yet, but you can reproduce it by running screen(1) and then "killing" a 
> screen.  screen(1) closes the pty and relies on the pty/pts mechanism to do 
> the rest, which doesn't.

Indeed. I also noticed this bug. Simply killing sshd also reproduces
this. The leak is caused by the obvious if-statement inside
pty_maybecleanup(). This is because SESSRELE() is called after sshd
closes the pty, if I can remember correctly.

This also causes the dreaded `jail leak', because device nodes still
exist that have been created with make_dev_cred(), so the ucred is
still referenced.

I guess the problem is that we can only call pty_maybecleanup() when
ptsclose() is called and not when the real use-count of the tty has
reached zero.

Yours,
-- 
 Ed Schouten <ed_at_fxq.nl>
 WWW: http://g-rave.nl/

Received on Tue Dec 04 2007 - 10:47:25 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:23 UTC