Daemon end of session/greeter pipes not closed
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Light Display Manager |
Fix Released
|
High
|
Unassigned | ||
1.10 |
Fix Released
|
High
|
Unassigned | ||
1.12 |
Fix Released
|
High
|
Unassigned | ||
1.2 |
Fix Released
|
High
|
Unassigned | ||
lightdm (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Precise |
Fix Released
|
High
|
Unassigned | ||
Trusty |
Fix Released
|
High
|
Unassigned | ||
Utopic |
Fix Released
|
High
|
Unassigned | ||
Vivid |
Fix Released
|
High
|
Unassigned |
Bug Description
[Impact]
LightDM doesn't close the server side end of the pipes used to communicate with session processes and greeters. This means each session/greeter that is created leaks two file descriptors eventually leading to the system stopping it from creating new pipes.
[Test Case]
1. Start LightDM
2. Check how many pipes are open
# lsof -p {lightdm_pid} | grep FIFO | wc -l
3. Create sessions by either cycling between users in Unity Greeter or logging in and out
4. Check how many pipes exist using step 2.
Expected result:
No more pipes should be open
Observed result:
Many pipes remain open
[Regression Potential]
Low. Fix is to close pipes when finished with them. Tested with regression tests.
Related branches
Changed in lightdm (Ubuntu): | |
status: | New → Triaged |
importance: | Undecided → High |
Changed in lightdm: | |
importance: | Medium → High |
Changed in lightdm (Ubuntu Utopic): | |
status: | New → Triaged |
Changed in lightdm (Ubuntu Precise): | |
status: | New → Triaged |
Changed in lightdm (Ubuntu Trusty): | |
importance: | Undecided → High |
Changed in lightdm (Ubuntu Precise): | |
importance: | Undecided → High |
Changed in lightdm: | |
milestone: | none → 1.13.0 |
Changed in lightdm (Ubuntu Utopic): | |
importance: | Undecided → High |
Changed in lightdm (Ubuntu Trusty): | |
status: | New → Triaged |
Changed in lightdm: | |
status: | Triaged → Fix Released |
description: | updated |
tags: | removed: fd fix |
tags: | removed: leak |
tags: |
added: verification-failed removed: verification-needed |
tags: |
added: testcase verification-needed-utopic removed: verification-failed |
tags: | added: raring |
Changed in lightdm: | |
milestone: | 1.13.0 → 1.13.2 |
status: | Fix Released → Fix Committed |
Changed in lightdm (Ubuntu Trusty): | |
status: | Confirmed → Triaged |
Changed in lightdm (Ubuntu Utopic): | |
status: | Fix Committed → Triaged |
Changed in lightdm (Ubuntu Vivid): | |
status: | Fix Released → Triaged |
description: | updated |
summary: |
- lightdm is leaking FDs -fix + Daemon end of session/greeter pipes not closed |
Changed in lightdm: | |
status: | Fix Committed → Fix Released |
tags: |
added: verification-done-utopic removed: verification-needed-utopic |
affects: | fedora → unity-greeter |
Changed in unity-greeter: | |
importance: | Unknown → Undecided |
status: | Unknown → New |
status: | New → Invalid |
affects: | unity-greeter → ubuntu-translations |
no longer affects: | ubuntu-translations |
There is a bug here:
+++ b/src/greeter.c priv->from_ greeter_ channel)
g_io_ channel_ unref (self-> priv->from_ greeter_ channel) ;
@@ -937,6 +937,8 @@ greeter_finalize (GObject *object)
if (self->
+ close(g_ io_channel_ unix_get_ fd(self- >priv-> to_greeter_ channel) ); io_channel_ unix_get_ fd(self- >priv-> from_greeter_ channel) );
+ close(g_
You access self->priv- >from_greeter_ channel after unreffing it...