Skip to contentSkip to conversation

2.4.19-pre4-ac4 kills my gdm

DISCUSSION Patrick R. McManus 3 participants 4 messages Apr 4, 2002

lore
Share & tools
lore
#0 lore raw

This is kind of odd - I have an Athlon 850 with a sis 730 chipset. X detects the "sis 630" as my video chipset.

under 2.4.19-pre4-ac3 all is good - reboot to 2.4.19-pre4-ac4 and gdm won't start.

X does start successfully.. but not gdm. I can go to runlevel 3 and run startx without a problem (i.e. get a window manager, etc..)

If I boot back to 2.4.19-pre4-ac3 all is well again.

/var/log/gdm/:0.log complains of a lock

-----
Fatal server error:
Server is already active for display 0
If this server is no longer running, remove /tmp/.X0-lock and start again.

When reporting a problem related to a server crash, please send the full server output, not just the last messages. Please report problems to [email protected].
-----

However clearing the lock (and making sure its gone when the sever starts) is of no help.

-Patrick

#1 lore raw
Quoted 5 lines

X does start successfully.. but not gdm. I can go to runlevel 3 and run startx without a problem (i.e. get a window manager, etc..)

If I boot back to 2.4.19-pre4-ac3 all is well again.

Can you do a clean build with pre4-ac4 for non athlon cpu, try that, then a clean built back to with athlon cpu just to verify that is the actual issue ?

#2 lore raw
In reply to Patrick R. McManus

Alan,

mea culpa on this one - my problem appears to be with the only other patch I was running - I believed I was also running it on ac3, but it now appears that I was thinking of another box.

The other patch was corey minyard's "allow signal handler to not call handler" patch that I was interested in seeing its impact on a userspace project of mine. It kills gdm (at least with ac4.. maybe others?)

thanks,
-Pat

[Alan Cox: Thu, Apr 04, 2002 at 04:16:24PM +0100]

Quoted 9 lines
Quoted 5 lines

X does start successfully.. but not gdm. I can go to runlevel 3 and run startx without a problem (i.e. get a window manager, etc..)

If I boot back to 2.4.19-pre4-ac3 all is well again.

Can you do a clean build with pre4-ac4 for non athlon cpu, try that, then a clean built back to with athlon cpu just to verify that is the actual issue ?

#3 lore raw
In reply to Patrick R. McManus
Quoted 6 lines · Patrick R. McManus

Alan,

mea culpa on this one - my problem appears to be with the only other patch I was running - I believed I was also running it on ac3, but it now appears that I was thinking of another box.

Quoted 8 lines

The other patch was corey minyard's "allow signal handler to not call handler" patch that I was interested in seeing its impact on a userspace project of mine. It kills gdm (at least with ac4.. maybe others?)

thanks,
-Pat

Yet, it does seem to kill gdm. xdm and kdm seem to work fine.

Ok, I see the problem. I've fixed it, booted and tried gdm, and it works fine. The SA_ONESHOT was checked in the wrong place, the handler is set in the frame_setup routines, so I have to check and set the handler due to the SA_ONESHOT flag after this. The patch is attached.

-Corey

arch/i386/kernel/signal.c renamed from arch/i386/kernel/signal.c.nocallhndlr +16 -13
@@ -558,22 +558,25 @@
 		}
 	}
 
-	/* 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(&current->sigmask_lock);
+			sigorsets(&current->blocked,&current->blocked,
+				  &ka->sa.sa_mask);
+			sigaddset(&current->blocked,sig);
+			recalc_sigpending(current);
+			spin_unlock_irq(&current->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(&current->sigmask_lock);
-		sigorsets(&current->blocked,&current->blocked,&ka->sa.sa_mask);
-		sigaddset(&current->blocked,sig);
-		recalc_sigpending(current);
-		spin_unlock_irq(&current->sigmask_lock);
-	}
 }
 
 /*
include/asm-i386/signal.h renamed from include/asm-i386/signal.h.nocallhndlr +1 -0
@@ -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