After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 650002 - 'No space left on device' message logged continuously, filling /home slice
'No space left on device' message logged continuously, filling /home slice
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
0.10.32
Other Linux
: Normal major
: 0.10.36
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2011-05-11 22:23 UTC by Andrew Wilcox
Modified: 2011-06-15 17:29 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
systemclock: Only retry writing to the socket for EAGAIN and EINTR (1.37 KB, patch)
2011-05-12 13:52 UTC, Sebastian Dröge (slomo)
committed Details | Review

Description Andrew Wilcox 2011-05-11 22:23:10 UTC
Due to an unrelated build, my /home slice became full.  I removed unneeded files and freed up some disk space, but it quickly became full again.  After using iotop and lsof, I found the culprit to be a 7.2G (and rapidly expanding) .xsession-errors file filled with the following line repeated over and over again:

GStreamer-WARNING **: gstsystemclock: write control failed in wakeup_async, trying again : 28:No space left on device

This is caused by a while loop in gst/gstsystemclock.c (lines 328-332).  Because this issue is caused by the /home slice being full, the fact it logs this warning in a tight while loop exacerbated the issue and actually caused what basically amounted to infinite recursion.


Steps to repro:
1) Fill /home slice
2) Use KDE's Phonon with the gstreamer backend, or play music with Banshee, or pretty much anything
3) Free disk space on /home slice
4) Watch fireworks in lsof ~/.xsession-errors and/or iotop...
Comment 1 Sebastian Dröge (slomo) 2011-05-12 13:52:03 UTC
Created attachment 187709 [details] [review]
systemclock: Only retry writing to the socket for EAGAIN and EINTR

Fixes infinite loop in some cases, bug #650002.
Comment 2 Sebastian Dröge (slomo) 2011-05-12 13:53:06 UTC
This should fix it by not retrying if there's no space left on the device... or something else bad happened.
Comment 3 Tim-Philipp Müller 2011-05-12 14:17:33 UTC
Shouldn't it say "not trying again" in the second part (or just not mention the "trying again")?
Comment 4 Olivier Crête 2011-05-12 14:39:29 UTC
What does ENOSPACE means on a pipe anyway ?
Comment 5 Sebastian Dröge (slomo) 2011-05-14 10:04:24 UTC
commit cdffc1d5d561ae069a9ea430f6c414b3f88882cc
Author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
Date:   Thu May 12 15:51:22 2011 +0200

    systemclock: Only retry writing to the socket for EAGAIN, EWOULDBLOCK and EI
    
    Fixes infinite loop in some cases, bug #650002.
Comment 6 David Schleef 2011-05-15 23:28:25 UTC
(In reply to comment #4)
> What does ENOSPACE means on a pipe anyway ?

Good question.  The Linux kernel doesn't appear to have any pathway for writes to pipes to return ENOSPC as an error.

Were there any other errors in the log?
Comment 7 Andrew Wilcox 2011-05-16 19:21:52 UTC
Because I needed that disk space back, I was unable to save any of the log and I thought I was going to have to answer this as "I don't know".  However, I've just (about 10 minutes ago) experienced the bug again.  There is, indeed, an additional line.

GStreamer-CRITICAL **: gst_poll_write_control: assertion `set != NULL' failed
GStreamer-WARNING **: gstsystemclock: write control failed in wakeup_async, trying again : 28:No space left on device

GStreamer-CRITICAL **: gst_poll_write_control: assertion `set != NULL' failed
GStreamer-WARNING **: gstsystemclock: write control failed in wakeup_async, trying again : 28:No spa%


Thank you so much for you prompt response to this bug.  I really appreciate it.