GNOME Bugzilla – Bug 709009
crash when monitor is turned off and on again
Last modified: 2013-10-21 19:19:19 UTC
Description of problem: I am experiencing a fatal error when I turn the monitor off and back on again. I don't know whether it's the former or the latter that triggers the fault. When the monitor is turned off and on at the login prompt, gdm is frozen. The mouse cursor is displayed properly, but I cannot click anywhere. I have to login as root in a terminal and restart gdm. When the monitor is switched off and on again in a gnome session, I am greeted with the "oh snap" screen of death. I can click ok to get back to gdm, which lets me log in again without a restart. Sometimes I see various application windows floating around the "oh snap" message, ripped off their decorations and presented in legacy (motif? cde?) instead of the adwaita gui style. How reproducible: Always faults. Steps to reproduce: Be either in gdm's login screen or in a gnome session. Turn the monitor off. Turn it on again. Surprise. Actual results: Fatal error. gdm is frozen or the gnome-session ends abruptly. Expected results: Flawless continuation of operation. Additional info: I have tried the same in twm. No problem. The issue manifested after upgrading to 3.10. 3.8.x was unaffected.
Here's a backtrace. The sigabrt is raised when I turn the monitor off.
+ Trace 232551
I get this crash if I *unplug* the only connected monitor In general, the DDC standard used to provide information about connected monitors is supposed to report information even when a monitor isn't turned on - however, we clearly need to be robust against this: - In case of unusual monitors - If the user knocks out their monitor cable - If there is a KVM switch that doesn't pass DDC information to disconnected outputs Etc. Having no connected outputs is a state we need to guard against. I'm not immediately sure how to do this however - maybe we should create a dummy output that is the size of the current root window and return that from meta_monitor_manager_xrandr_read_current()? I don't think we want to actually return information out of the monitor manager about disconnected outputs - all our abstractions are built around the idea that an output is a *connected* output, and reflects a monitor with a definite display size, not a connector sitting empty.
DisplayPort (and perhaps other connection technologies) does not differentiate between unplug and turn off, unfortunately, so that might be what the reporter is seeing.
The monitor is connected via DisplayPort, indeed.
Created attachment 257381 [details] [review] monitor-config: don't assert that at least one output is connected Apparently some connector technologies don't distinguish between on and off, and there might be valid use cases for running without any connected monitor. In that case, just avoid any configuration at all.
Review of attachment 257381 [details] [review]: Where are you removing the assert?
(In reply to comment #6) > Review of attachment 257381 [details] [review]: > > Where are you removing the assert? I'm not removing the assert, I'm removing all ways to trigger it.
Review of attachment 257381 [details] [review]: A better commit message would be appreciated, then.
Pushed
*** Bug 710239 has been marked as a duplicate of this bug. ***