GNOME Bugzilla – Bug 349640
Themes with userlist browser do not work
Last modified: 2006-08-03 16:45:32 UTC
Please describe the problem: When using a theme with a user browser in gdm, the display manager fails to display anything but a "waiting" mouse cursor. To have the dm working again you have to set back the theme to something working like happygnome or circles, editing gdm.conf within a console. Steps to reproduce: 1. launch gdmsetup 2. select graphical theme / happygnome-list 3. go back to gdm if already logged in Actual results: The display manager fails to display anything but a "waiting" mouse cursor. Expected results: The display manager should work, with the happygnome-list, or an other theme and display some error or such. Does this happen every time? Yes Other information: To have the dm working again you have to set back the theme to something working like happygnome or circles, editing gdm.conf manually.
I suggest using gdm in Xnest for testing as the bug happens as well (well you already know for sure)
Hmmm - I've spent the past few hours looking into this. I can reproduce the problem. I suspect that this problem was introduced by Ray Strode's change of how messages are handled. See commits on 08/18 and 07/21. I notice that it seems that the slave (gdmgreeter) crashes soon after receiving a message that seems to contain NULL characters. I notice in the daemon/slave.c function run_pictures that the code seems to be doing something weird like send the face image from the daemon to the slave through the pipe. I believe this is done because only the daemon running as root has a real chance of being able to access files in the user's $HOME directory, not the slave running as GDM. I'm not sure Ray's code was written to handle this well. I find it strange that gdmlogin seems to work okay when the face browser is turned on, since it should be getting the same messages. I'm cc:ing Ray on this bug in the hopes that he may have some ideas. After digging into it this long, I've just been able to narrow down where the problem is happening.
Hmm, I also seem to notice that gdmsetup seems to have problems hanging when greeter/Include has a value. It seems to suspeciously be in the same gdm_user logic. gdmsetup doesn't really grab the images, but it does validate the users to display in the "Users" tab which possibly does cause some talking between the daemon and gdmsetup.
Oh, ignore that last comment - I just had my environment messed up after doing some debug. Sorry.
Created attachment 70112 [details] [review] don't setup io channel until after processing faces. One of the changes I made when reworking that code was to make the message input nonblocking. The face browser code expects blocking i/o to work correctly, I think. The reason the standard greeter works is because it gets all the face setup code taken care of before setting up the IO channel. The above patch makes the themed greeter behave the same way. Can you guys confirm that the patch fixes the problem you're seeing?
Many thanks :) And you were quick ! The patch corrected the bug from my point of view. Will it be included in the next release ?
Thanks Ray, I applied the patch to the 2.15 branch.