I had the same problem the guy who emailed this had. I've already tested this fix, it seems to do the job. I adapted the patch to work with gentoo-sources-2.4.19-r7: --- include/asm-i386/signal.h.orig Sun Jul 28 20:15:38 2002 +++ include/asm-i386/signal.h Tue Jul 30 19:09:03 2002 @@ -91,6 +91,7 @@ #define SA_RESTART 0x10000000 #define SA_NODEFER 0x40000000 #define SA_RESETHAND 0x80000000 +#define SA_NOCALLHNDLR 0x00800000 /* Don't really call the handler. */ #define SA_NOMASK SA_NODEFER #define SA_ONESHOT SA_RESETHAND --- arch/i386/kernel/signal.c.orig Sun Jul 28 19:02:15 2002 +++ arch/i386/kernel/signal.c Tue Jul 30 19:06:50 2002 @@ -579,22 +579,26 @@ } #endif - /* Set up the stack frame */ - if (ka->sa.sa_flags & SA_SIGINFO) - setup_rt_frame(sig, ka, info, oldset, regs); - else - setup_frame(sig, ka, oldset, regs); + /* Set up the stack frame if we are calling the handler. */ + if (! (ka->sa.sa_flags & SA_NOCALLHNDLR)) { + if (ka->sa.sa_flags & SA_SIGINFO) + setup_rt_frame(sig, ka, info, oldset, regs); + else + setup_frame(sig, ka, oldset, regs); + + if (!(ka->sa.sa_flags & SA_NODEFER)) { + spin_lock_irq(¤t->sigmask_lock); + sigorsets(¤t->blocked,¤t->blocked, + &ka->sa.sa_mask); + sigaddset(¤t->blocked,sig); + recalc_sigpending(current); + spin_unlock_irq(¤t->sigmask_lock); + } + } if (ka->sa.sa_flags & SA_ONESHOT) ka->sa.sa_handler = SIG_DFL; - if (!(ka->sa.sa_flags & SA_NODEFER)) { - spin_lock_irq(¤t->sigmask_lock); - sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask); - sigaddset(¤t->blocked,sig); - recalc_sigpending(current); - spin_unlock_irq(¤t->sigmask_lock); - } } /*
Go figure... this patch worked for me for a little while, but stopped working once I rebooted. Basically, what happens is gdm will start fine, but once I try to log in, it looks like the new X server crashes, then the gdm login screen comes back. This doesn't happen with xdm or kdm.
please test on gentoo-sources-2.4.19-r9 and report the results ;)
if this is still an issue reopen the bug.