Re: [gdm-list] handled=false xservers broken in 2.20.0 vs. 2.18.1
- From: Brian Cameron <Brian Cameron Sun COM>
- To: Michael Pardee <gdm-list groovix com>
- Cc: gdm-list gnome org
- Subject: Re: [gdm-list] handled=false xservers broken in 2.20.0 vs. 2.18.1
- Date: Fri, 02 Nov 2007 16:59:54 -0500
Michael Pardee wrote:
Nov 2 16:00:30 ubuntu gdm[6774]: DEBUG: gdm_slave_run: Opening display :0
Nov 2 16:00:31 ubuntu gdm[6773]: WARNING: gdm_cleanup_children: child
6774 crashed of signal 11
Yes, this is the GDM slave daemon that is crashing for some reason.
Probably a bug in the code.
I can start the X server just fine with the exact same parameters from
gdm 2.18 or the command line, so I don't think the x server itself is
crashing, unless it has something to do with the way gdm 2.20 is
starting it. What's the best way to try to figure out why the gdm
slave is segfaulting?
Unfortunately, debugging problems like this in often a bit painful.
This is because you can't run the slave process directly. It has
to be forked by the main process.
There are a few approaches you can try:
1) Does the crashing slave daemon leave behind a core file? Note
that you might need to do something like configure coreadm to
allow programs like GDM to generate core files. By default,
many systems are configured so programs like system services
don't generate core files. If it were to generate a core file,
it would probably be in the root (/) directory, or in whatever
directory you start GDM from by hand. You might also look
in /var/lib/gdm, or /var/log/gdm.
If you can get it to generate a core file, then I'd recommend
compiling the code with -g (setting CFLAGS="-g" before running
configure should work). Then we could get the line number of
where the crash is happening, which would be helpful.
2) If you compile GDM with debug, then you might be able to attach
a debugger to the running process. You might need to introduce
a sleep before the "Opening display" code of a few seconds to
give you some time to attach before the failure happens.
3) You can add gdm_debug() statements to the code to try and
track down where the crash is happening, and to print out
variables that might be involved with triggering the crash.
Note in daemon/slave.c 1494 is where we print out "Opening
display" mesage we see in the log. Farther down on line
1597 is where GDM should just pause in the non-handled case;
1597 if ( ! d->handled) {
1598 /* yay, we now wait for the server to die */
1599 while (d->servpid > 0) {
1600 pause ();
1601 }
There are not any debug messages between lines 1494 and 1597, so
adding some would probably help to track down what might be going
wrong. Perhaps there is some bug that is causing it to fall into
one of the blocks of code not appropriate for non-handled displays?
Also, looking at the code, I wonder if starting GDM with the
--wait-for-go argument might make a difference? Might be worth
a try.
Brian
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]