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