Comment 2 for bug 158245

Revision history for this message
Richard Hansen (rhansen) wrote :

I'm sorry, I misread your bug report. The bug in fast-user-switch-applet is related, but not the same as the bug you reported. I do have the same problem as you, however.

As far as I understand it, your bug is partially due to a limitation in gnome-screensaver, partially due to a limitation in gdm, and partially due to a limitation in the Linux kernel. I'm not sure the best package to assign to this bug, so I just changed it back to gdm.

gnome-screensaver's contribution: When you click on the "Switch User" button in the unlock dialog box, gnome-screensaver executes the command "gdmflexiserver --startnew Standard" (see the do_user_switch() function in gs-lock-plug.c). Looking at the output of "gdmflexiserver --help", it's not clear to me what the "Standard" parameter does. The man page doesn't even mention the "--startnew" parameter. However, I'm assuming that "Standard" is either ignored or it instructs gdmflexiserver to start a new server as defined in the [server-Standard] section of gdm.conf(-custom). If that parameter is not ignored, attempting to start a new instance of the "Standard" server is not the right thing to do in a multi-seat configuration like yours and mine.

gdmflexiserver's (part of gdm) contribution: I'm less clear about how gdmflexiserver works, but as far as I understand it, gdmflexiserver does its job by firing up a new instance of the X server on an unused Linux virtual terminal. I'm not sure which server section in gdm.conf(-custom) it reads -- it has something to do with the "flexible=true" option. It could be firing up an instance of the wrong server. Unfortunately, the "flexible" gdm option isn't well documented. At any rate, there doesn't seem to be a way to run multiple X servers at the same seat without the use of Linux virtual terminals, and this has problems due to Linux's lack of support for multiple consoles (see below).

Linux kernel's contribution: Linux only supports one console. That one console has many virtual terminals. Since there is only one Linux console (even in a multi-seat X setup), switching virtual terminals affects all seats (hit Ctrl-Alt-F1 and you'll see what I mean. Hit Alt-F7 to go back). This is why multi-seat setups should use the "-novtswitch" X argument in addition to the "-sharevts" argument. I'm guessing that this limitation is what fundamentally prevents gdmflexiserver from working properly.

So from what I can tell, there's no easy fix for this. The best you can do for now is probably set "flexible=false" in gdm.conf and never use the user switch functionality.