GNOME Bugzilla – Bug 650002
'No space left on device' message logged continuously, filling /home slice
Last modified: 2011-06-15 17:29:33 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...
Created attachment 187709 [details] [review] systemclock: Only retry writing to the socket for EAGAIN and EINTR Fixes infinite loop in some cases, bug #650002.
This should fix it by not retrying if there's no space left on the device... or something else bad happened.
Shouldn't it say "not trying again" in the second part (or just not mention the "trying again")?
What does ENOSPACE means on a pipe anyway ?
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.
(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?
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.