Bug 174355 - bash-completion cause GDM to not start session in Modular X
Summary: bash-completion cause GDM to not start session in Modular X
Alias: None
Product: Fedora
Classification: Fedora
Component: bash-completion
Version: rawhide
Hardware: i386
OS: Linux
Target Milestone: ---
Assignee: Ville Skyttä
QA Contact: Fedora Extras Quality Assurance
Depends On:
TreeView+ depends on / blocked
Reported: 2005-11-28 12:32 UTC by Paul Dickson
Modified: 2007-11-30 22:11 UTC (History)
1 user (show)

Fixed In Version: 20050721-2.fc5
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed: 2005-11-28 20:46:36 UTC

Attachments (Terms of Use)
My $HOME/.profile (128 bytes, text/plain)
2005-11-28 12:32 UTC, Paul Dickson
no flags Details

Description Paul Dickson 2005-11-28 12:32:11 UTC
Description of problem:
If bash_completion.sh exists in /etc/profile.d, /etc/X11/gdm/Xsession ultimately
runs that script twice.  The second time it seems to perform an "exit", which
terminates Xsession (which invokes /etc/profile and ~/.profile with a ".".

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:
1. My ~/.profile does ". /etc/profile" then adds additional paths to PATH
2. Logout, login via gdm.
Actual results:
GDM complains that the session last less than 10 seconds.  There is no error

Expected results:
Gnome's (or KDE's) session should start.

Additional info:
Debugging echo's trace the run through /etc/X11/gdm/Xsession through a
successful run of ". /etc/profile", but the echo after ". $HOME/.profile" never

If I rename the bash_completion.sh script (bash_completion.sh.tmp), I can log in.

I can't seem to find an exit in bash_completion.sh.

Comment 1 Paul Dickson 2005-11-28 12:32:11 UTC
Created attachment 121541 [details]
My $HOME/.profile

Comment 2 Ville Skyttä 2005-11-28 13:29:12 UTC

One way to debug stuff like this is to add eg. a "set -x" somewhere near the top
of /etc/X11/gdm/Xsession, then try logging in, and while the gdm dialog about
things going south is still visible, peek into /tmp/xses-$USERNAME.XXXXXX from a
virtual terminal.

Anyway, from debugging like in above, it seems it has something to do with the
"readonly" stuff at top of /etc/bash_completion.  When the session prematurely
aborts (when sourcing it for the second time), the "set +v" at the top is the
last thing run.

I don't see anything wrong offhand with the code, but one potential workaround
is to change this at the top of /etc/profile.d/bash_completion.sh:

    [ -z "$BASH_VERSION" ] && return


    [ -z "$BASH_VERSION" -o -n "$BASH_COMPLETION" ] && return

I'm not sure if this is the best possible way around it but it seems to work for
me.  Could you try it out?

Comment 3 Paul Dickson 2005-11-28 15:26:24 UTC
Yes adding the ' -o -n "$BASH_COMPLETION"' works around the problem for me.

Comment 4 Ville Skyttä 2005-11-28 20:46:36 UTC
Thanks, this workaround will be in 20050721-2.fc5.

Note You need to log in before you can comment on or make changes to this bug.