Thanks. I run -current, so ports are in sync with cvs. Patch to mantainer. But. But I noted we should investigate on child processes. I killed connection in our usual way (sigh!) with 4 tab opened. *One* of these had top running. All ksh were killed, *but* top's ksh not. Why? After 'ps l' WCHAN is ttyin, and STATE IE+, which (from man ps) indicate : * "I Marks a process that is idle (sleeping for longer than about 20 seconds)" * "E The process is trying to exit" * "+ The process is in the foreground process group of its control terminal"
Keep investigating? On 01/05/08 04:50 +0200, Jesus Sanchez wrote: > Hi, I have just compiled and tested the program and I hopefully can say, > its really working. I never expected such interest by solving this > problem so I started loosing the hope. > > Thanks to the patch of Cesare Gargano, now I can run mrxvt using ksh > and then kill X with Ctrl+Alt+Backspace without leaving zombie/dead ksh > processes. I have a copy of the compiled binary mrxvt OpenBSD 4.2 on: > > http://usuarios.lycos.es/openminds/downloads/openbsderos/mrxvt_ksh > > (you have to install mrxvt by ports or packages, and then copy mrxvt_ksh > to the original mrxvt bin destination) > > This compiled binary works. But I had a little problems because (I > think) I have a different ports tree and the diff file does not worked > for me and I had to patch init.c by hand. After all the make process > stops telling me the line containing "rxvt_msg(..." made problems so I > commented it and then "make install" compiled a sane mrxvt (I think). > > The mrxvt dev team should be informed about all this stuff so the would > be able to make a fix of this without problems. > > Thanks Cesare. > -Jesus > > Cesare Gargano escribis: > >On 30/04/08 00:38 +0200, Jesus Sanchez wrote: > > > >>Solved! Oh my god, I'm so dumb and idiot, the option -hold was not > >>helping me > >>because I was using it in the wrong way, I used "-hold 0" and "-hold > >>false" and > >>I did not relized what the good option was "-hold 0x00" for the byte > >>order. > >> > >>Many thanks for your info and so sorry about the confusion, I really > >>feel as a dumb > >>newbie. > >> > >>Thanks for all. > >> > >> > >>Antoine Jacoutot escribis: > >> > >>>On Wed, 23 Apr 2008, Jesus Sanchez wrote: > >>> > >>> > >>>>I launch startx (with fvwm2 and mrxvt on my .xinitrc) as a regular user > >>>>(it's in the wheel group) and then I open a few tabs on mrxvt (3 or 4), > >>>>then I close X with Ctrl+Alt+Backspace and I found with 'ps -ax' that > >>>>the ksh opened with mrxvt (ttyp0, ttyp1, and more) are still running, > >>>>not mrxvt. > >>>> > >>>> > >>>Hi. > >>> > >>>Sorry, a bit late on this but I've been busy. > >>>Did you have a look at the '-hold' option? > >>>>From what you've been saying, disabling it should solve your problem. > >>> > >>> > >>> -hold mask > >>> Hold the tab open after the child process in it exits. mask > >>> is the > >>> mask of flags which control weather the tab will be held open > >>> based > >>> on the exit status of the child process. If the lowest bit > >>> (0x01) > >>> of mask is set, then the tab will always be held open after the > >>> child exits. If the next bit (0x02) is set, then the tab will > >>> only > >>> be held open if the child exits abnormally (e.g. via > >>> abort(1)). If > >>> the third bit (0x04) is set, then the tab will be held open if > >>> the > >>> child exits with non-zero status. > >>> > >>> NOTE: In previous versions of mrxvt this was a boolean option. > >>> For > >>> backward compatibility, the value of True, On, Yes will be > >>> treated > >>> as 1 and anything illegal will be treated as 0. The default is > >>> 0x06. [holdExit] > >>> > >> > > > >I try -hold option before other things, but this don't work for me... I > >try with different wm (fvwm, twm, cwm, e17, e16, gnome, xfce), but if I > >kill x connection with ctrl+alt+backspace, all ksh remain alive. > > > >I've added a IO handler to wrxvt init.c, this - as workaround - solve > >all our issues. > > > >If this is not necessary, post your config here, please. > > > >--- src/init.c.orig Wed Apr 30 15:55:42 2008 > >+++ src/init.c Wed Apr 30 16:08:59 2008 > >@@ -46,6 +46,7 @@ > > int rxvt_getdtablesize (); > > #endif > > int rxvt_xerror_handler (const Display*, const XErrorEvent*); > >+int rxvt_xioerror_handler (Display*); > > void rxvt_init_colors (rxvt_t*); > > void rxvt_init_win_size (rxvt_t*); > > void rxvt_color_aliases (rxvt_t*, int); > >@@ -886,6 +887,25 @@ rxvt_init_secondary(rxvt_t *r) > > #endif > > } > > > >+/* > >+ * FIXME > >+ * > >+ * Wed Apr 30 14:35:33 CEST 2008 +gar <[EMAIL PROTECTED]> > >+ * > >+ * This is a workaround for for OpenBSD users. On killed connection after > >+ * ctrl+alt+backspace with ksh as default shell child processes don't > >exit, > >+ * remaining in WCHAN state for ttyin. This works for me, I set a IO error > >+ * handler for killed connection (man XSetErrorHandler) to clean vts > >before > >+ * exiting. > >+ */ > >+int > >+rxvt_xioerror_handler(Display *d) > >+{ > >+ rxvt_msg(DBG_ERROR, DBG_INIT, "IO error, cleaning...\n"); > >+ rxvt_Exit_signal(1); > >+ return 0; > >+// abort(); > >+} > > > > /* INTPROTO */ > > int > >@@ -1079,6 +1099,7 @@ rxvt_init_resources(rxvt_t* r, int argc, const char > >*c > > * allowed. > > */ > > XSetErrorHandler( (XErrorHandler) rxvt_xerror_handler ); > >+ XSetIOErrorHandler( rxvt_xioerror_handler ); > > > > /* Initialize all atoms after establishing connection to X */ > > for (i = 0; i < NUM_XA; i++)