Bug 981373
Summary: | XFCE4 desktop hangs if TMPDIR is set | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Corinna Vinschen <vinschen> |
Component: | coreutils | Assignee: | Ondrej Oprala <ooprala> |
Status: | CLOSED CURRENTRELEASE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
Severity: | unspecified | Docs Contact: | |
Priority: | unspecified | ||
Version: | 19 | CC: | admiller, kdudka, kevin, kzak, ooprala, ovasik, p, twaugh, vinschen |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2014-06-19 14:35:25 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Corinna Vinschen
2013-07-04 14:44:44 UTC
Is there anything in ~/.xsession-errors (or whereever kdm outputs stdout)? Can you do a 'strace -f -p pidofnewest-xfdesktopprocess' and attach it? Might tell us what it's doing. I'll see if I can duplicate it here. Hi Kevin, I investigated a bit further, and inspecting the ~/.xsession-errors as you suggested gave the final clue. It's a bit more convoluted than what I observed in the first place. The culprit is not xfce4 (the same problem also disallows to start a KDE desktop), but the coreutils package. Here's what happens: My .login file does not set the TMP, TEMP and TMPDIR vars independently, rather it's setting them like this: setenv TMP /home/corinna/tmp setenv TEMP ${TMP} setenv TMPDIR ${TMP} After a failed login, ~/.xsession-errors contained the following message: (xfce4-session:5710): xfce4-session-WARNING **: Unable to open temporary file: Failed to create file '/tmp/.colorlsDyZ/.xfsm-ICE-XCSRZW': Not a directory Note the weird temporary path. There's no /tmp/.colorlsDyZ directory. A bit of grep'ing turned up the /etc/profile.d/colorls.csh file, which sets the TMP variable to the name of a temporary /tmp/.colorlsXXX file. The file is removed at the end of the script, but the TMP variable is not. Since the TMP variable in this script is a tcsh-internal variable, not an environment variable, it is preferred over the TMP environment variable (different variable concept than in sh/bash). The result is that the above `setenv TMPDIR ${TMP}' will set TMPDIR to the value of the internal TMP variable, rather than the value of the environment variable TMP, thus TMPDIR is set to /tmp/colorlsDyZ rather than /home/corinna/tmp. This is a bug in the /etc/profile.d/colorls.csh script, which is part of the coreutils package. Given that colorls.csh is a profile script, it's run in the login shell process itself. The value of TMP will not be forgotten at the end of the script, and given its name it's bound to break settings like the one in my environment. As far as I can see, the /etc/profile.d/colorls.csh should not use the TMP variable name for the temporary filename, but rather something non-dangerous like $_tmp. It should also definitely call `unset' on the variable when finished. For some reason I can't change the "Component" of this bug from xfdesktop to coreutils, the drop-down menu is grayed out. Can you change that? Thanks, Corinna Excellent detective work. Thanks! Hi and thanks for the report. I've changed the variable to a less collision-prone one (the proposed _tmp) and pushed the changes to rawhide. Since this have been here without a response for almost a year, I'm assuming the bugfix is satisfactory. |