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++)

Reply via email to