On Sun, Nov 08, 2020 at 05:16:55PM +0100, Stefan Hagen wrote: > Hello, > > xterm has an annoying delay when it's being close by the window manager > when child processes exist. > > Test 1: > xterm -e "sh" > > Now hit the "X" button or whatever your window manager provides to send a > window delete event. Xterm should close almost instantly. > > Test 2: > xterm -e "sh -c sh" > > You can execute this, or just open xterm and open another shell inside. > Now close it again. In this situation it takes about 1 second to close. > > Window deletion triggers do_hangup(), which invokes a kill(-pid, SIGHUP) > and then waits around one second before it quits. I couldn't figure out > what it does in this time. But ktrace hints that it ran into a Sleep() > statement because the delay is right after a select and fd_set, which is > only called in Sleep(). > > I looked and the xterm menu Quit function and found that it does something > slightly different than than window delete. It also sends kill(-pid,SIGHUP), > but then immediately exits. > > Handle_send_signal and Cleanup are doing the same thing, except Cleanup > calls exit right afterwards. > > My naive assumtion is, that this would also be the right behavior on > window deletion. >
This would be better off sent upstream, not maintained locally in OpenBSD. https://invisible-island.net/xterm/xterm.faq.html#report_bugs > Index: app/xterm/menu.c > =================================================================== > RCS file: /cvs/xenocara/app/xterm/menu.c,v > retrieving revision 1.30 > diff -u -p -u -p -r1.30 menu.c > --- app/xterm/menu.c 20 Jan 2020 21:03:35 -0000 1.30 > +++ app/xterm/menu.c 8 Nov 2020 15:49:08 -0000 > @@ -1422,7 +1422,7 @@ do_hangup(Widget gw, > XtPointer closure GCC_UNUSED, > XtPointer data GCC_UNUSED) > { > - handle_send_signal(gw, SIGHUP); > + Cleanup(SIGHUP); > } > > /* ARGSUSED */ > >
