tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: hangup in close(2) after posix_openpt(3)

blymn@ wrote:

> On Sat, Oct 17, 2015 at 02:34:10AM +0900, Izumi Tsutsui wrote:
> > 
> > For application side, it looks the behavior (how unread data should be
> > handled on close(2)) is something like "implementation-defined."
> > 
> > I'll try to put some workaround into the application.
> > ("tcflush(s, TCIOFLUSH)" might work around)
> > 
> That may or may not help.  There are some races in our pty code that can
> cause the flush to block forever.  I found this out when I was doing the
> libcurses test frame and also I think the same problem was experience
> with anita. [..]


Currently I'm working on updating pkgsrc/inputmethod/canna-canuum
and it also uses curses for input conversion status lines etc.

At first I met a hangup problem after exit(3) call.
Sometimes the canuum process (or shell forked from canuum)
stuck in lwp_park() after exit.

I thought "stall on close(2) issue reported by ruby-dev" was
the similar issue, but now it looks different issue.

I notice we can avoid the hangup in lwp_park() after exit(3)
by calling _exit(2) instead exit(3) in the parent canuum,
so I'll put it as a kludge for now.

Izumi Tsutsui

Home | Main Index | Thread Index | Old Index