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