touch-packages team mailing list archive
-
touch-packages team
-
Mailing list archive
-
Message #34130
[Bug 678421] Re: Error message for a faulty ~/.profile script
I have been googling and experimenting a bit. Basically I'd like to
change:
. "$CONFIG_FILE" 2>"$ERR"
to something along these lines:
. "$CONFIG_FILE" 2> >(tee "$ERR" >&2)
There is just one tiny problem: It's bash syntax and doesn't work in sh.
If I change the shebang line of /usr/sbin/lightdm-session to
"#!/bin/bash" it works like a charm. Actually, it works much better,
since it recursively prevents syntax errors in sourced files from
causing fatal errors. OTOH, I suppose that switching to bash wouldn't be
approved just like that. ;)
I got the tip from the first answer at this page:
http://stackoverflow.com/questions/692000/how-do-i-write-stderr-to-a
-file-while-using-tee-with-a-pipe
The answer also includes the equivalent code for sh. I have successfully
applied that approach in stand-alone test scripts, but when moved to
/usr/sbin/lightdm-session, all my attempts so far have caused buggy
behavior.
You might think that something like this should work:
. "$CONFIG_FILE" 2>&1 >/dev/null | tee "$ERR" >&2
It doesn't. As soon as you add a pipe like that, setting environment
variables via the sourced files fails.
So I'm stuck. Any help from a shell scripting wizard would be much
appreciated.
--
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to lightdm in Ubuntu.
https://bugs.launchpad.net/bugs/678421
Title:
Error message for a faulty ~/.profile script
Status in GDM: The Gnome Display Manager:
New
Status in “gdm” package in Ubuntu:
In Progress
Status in “lightdm” package in Ubuntu:
Fix Released
Status in “gdm” source package in Trusty:
Triaged
Status in “lightdm” source package in Trusty:
In Progress
Status in “gdm” source package in Utopic:
Triaged
Status in “lightdm” source package in Utopic:
Fix Committed
Bug description:
trusty and utopic SRU requests
==============================
[Impact]
In case of a syntax error in either of ~/.profile or a few other
similar files, the Xorg login is interrupted, and the user is taken
back to the login screen without an explanation. Debugging this
problem may be a time consuming exercise, especially for non-
experienced users.
With the proposed change, lightdm/gdm does not try to load such a
file, but shows a warning dialog instead. (A warning dialog is also
shown in case of some other type of error, which would not have caused
the login to fail.)
[Test Case]
To reproduce:
* Edit ~/.profile and add something bad, e.g. a non-closed parenthesis.
* Log out and find that you can't log in to a graphical session.
After installing the proposed lightdm/gdm version, you'll instead see
the dialog and can log in.
[Regression Potential]
Since this is only about improved exception handling, it does not at
all affect users with correct configuration files. The regression risk
ought to be minimal.
[Original description]
Binary package hint: gdm
After adding "function AddPath { PATH="$1:$PATH" }" to $HOME/.profile
made the Xorg startup fail. (At that moment I had already forgotten
the changes made to the .profile). As I had autologin that meant it
kept trying to login and finally showed me the graphics
reconfiguration screen. That sent me to a huge hunt for xorg conf and
setup problems.
Anyway finally tracked this down. I had used bash syntax in .profile
file whereas it was run with sh.
This is not a bug per se but I think a user mistake in ".profile"
shouldn't bring the whole xorg startup to a halt as it does with
autologin. I propose running user ".profile" and ".xprofile" scripts
so that Xsession script continues running even if they have errors.
I'm not sure whether this change would have some negative effects as
well.
1) Ubuntu Lucid, Linux egon-laptop 2.6.32-25-generic #45-Ubuntu SMP Sat Oct 16 19:48:22 UTC 2010 i686 GNU/Linux
2) gdm 2.30.2.is.2.30.0-0ubuntu4
To manage notifications about this bug go to:
https://bugs.launchpad.net/gdm/+bug/678421/+subscriptions