| Summary: | Crash when there is no EDID | ||
|---|---|---|---|
| Product: | [Plasma] KScreen | Reporter: | Loïc Yhuel <loic.yhuel> |
| Component: | common | Assignee: | Alex Fiestas <afiestas> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | bhubbard, cyberbeat, dvratil, mail |
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | Compiled Sources | ||
| OS: | Linux | ||
| Latest Commit: | http://commits.kde.org/libkscreen/b309874669283054825f24194bdafff1e776a0ce | Version Fixed/Implemented In: | |
| Sentry Crash Report: | |||
| Attachments: | Fix for VMware | ||
|
Description
Loïc Yhuel
2012-12-26 20:26:12 UTC
I saw the crash once without VMware once : when connecting a VGA monitor, but I'm not able to reproduce it (perhaps for some reason the EDID wasn't available immediately). #5 KScreen::Edid::hash (this=0x0) at /home/sah0169/ext_src/kde/libkscreen/src/edid.cpp:132 #6 0x00007f2751c5cad3 in Serializer::currentId () at /home/sah0169/ext_src/kde/kscreen/kded/serializer.cpp:46 #7 0x00007f2751c5cb9e in Serializer::configExists () at /home/sah0169/ext_src/kde/kscreen/kded/serializer.cpp:58 #8 0x00007f2751c5b4ec in KScreenDaemon::applyConfig (this=<optimized out>) at /home/sah0169/ext_src/kde/kscreen/kded/daemon.cpp:76 #9 0x00000032ce98cebf in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /lib64/libQtCore.so.4 #10 0x00007f274c1334e8 in XRandROutput::updateKScreenOutput (this=0x1cd4a60, output=0x1eec660) at /home/sah0169/ext_src/kde/libkscreen/backends/xrandr/xrandroutput.cpp:269 #11 0x00007f274c12f179 in XRandRConfig::updateKScreenConfig (this=0x1e9c2a0, config=0x1eeaa00) at /home/sah0169/ext_src/kde/libkscreen/backends/xrandr/xrandrconfig.cpp:103 #12 0x0000003121c0756c in KScreen::ConfigMonitor::updateConfigs (this=<optimized out>) at /home/sah0169/ext_src/kde/libkscreen/src/configmonitor.cpp:77 #13 0x0000003121c075b9 in KScreen::ConfigMonitor::notifyUpdate (this=<optimized out>) at /home/sah0169/ext_src/kde/libkscreen/src/configmonitor.cpp:67 #14 0x00007f274c12e599 in XRandR::handleX11Event (message=<optimized out>) at /home/sah0169/ext_src/kde/libkscreen/backends/xrandr/xrandr.cpp:1024 Created attachment 76028 [details]
Fix for VMware
When there is no EDID, use the output name instead in Serializer::currentId(), so it can still allow two different configurations : output connected or not.
I'm not sure how the second case when plugging the external monitor happened. With this patch it won't take the existing configuration recorded with EDID, but it's at least better than crashing.
I also have this crash, when trying to the edid, but I am not running kde as a virtual machine guest.
this is my configuration:
hwinfo --gfx
09: PCI 02.0: 0300 VGA compatible controller (VGA)
[Created at pci.319]
Unique ID: _Znp.lPQO3e3I18E
SysFS ID: /devices/pci0000:00/0000:00:02.0
SysFS BusID: 0000:00:02.0
Hardware Class: graphics card
Model: "Intel Mobile 4 Series Chipset Integrated Graphics Controller"
Vendor: pci 0x8086 "Intel Corporation"
Device: pci 0x2a42 "Mobile 4 Series Chipset Integrated Graphics Controller"
SubVendor: pci 0x1179 "Toshiba America Info Systems"
SubDevice: pci 0x000d
Revision: 0x07
Driver: "i915"
Driver Modules: "drm"
Memory Range: 0xff400000-0xff7fffff (rw,non-prefetchable)
Memory Range: 0xe0000000-0xefffffff (ro,non-prefetchable)
I/O Ports: 0xcff8-0xcfff (rw)
IRQ: 43 (17721 events)
I/O Ports: 0x3c0-0x3df (rw)
Module Alias: "pci:v00008086d00002A42sv00001179sd0000000Dbc03sc00i00"
Driver Info #0:
Driver Status: i915 is active
Driver Activation Cmd: "modprobe i915"
Config Status: cfg=no, avail=yes, need=no, active=unknown
10: PCI 02.1: 0380 Display controller
[Created at pci.319]
Unique ID: ruGf.Gsn0zTMyIl3
SysFS ID: /devices/pci0000:00/0000:00:02.1
SysFS BusID: 0000:00:02.1
Hardware Class: graphics card
Model: "Intel Mobile 4 Series Chipset Integrated Graphics Controller"
Vendor: pci 0x8086 "Intel Corporation"
Device: pci 0x2a43 "Mobile 4 Series Chipset Integrated Graphics Controller"
SubVendor: pci 0x1179 "Toshiba America Info Systems"
SubDevice: pci 0x000d
Revision: 0x07
Memory Range: 0xc0000000-0xc00fffff (rw,non-prefetchable,disabled)
Module Alias: "pci:v00008086d00002A43sv00001179sd0000000Dbc03sc80i00"
Config Status: cfg=no, avail=yes, need=no, active=unknown
Primary display adapter: #9
(In reply to comment #3) > I also have this crash, when trying to the edid, but I am not running kde as > a virtual machine guest. > Does your monitor have an EDID ? You can check with "xrandr --verbose". If it does, there is perhaps a problem with the plug event. If it doesn't, then it's the same as the virtual machine. I tested only with the internal laptop screen, no other screen attached (there are additional dvi and vga outputs). This is my output:
xrandr --verbose
Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 8192 x 8192
LVDS1 connected (normal left inverted right x axis y axis)
Identifier: 0x41
Timestamp: 32049
Subpixel: horizontal rgb
Clones:
CRTCs: 1 0
Transform: 1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
filter:
BACKLIGHT: 0 (0x00000000) range: (0,7)
Backlight: 0 (0x00000000) range: (0,7)
scaling mode: Full aspect
supported: None Full Center Full aspect
1280x800 (0x44) 68.8MHz -HSync -VSync +preferred
h: width 1280 start 1328 end 1360 total 1420 skew 0 clock 48.5KHz
v: height 800 start 801 end 802 total 806 clock 60.2Hz
1024x768 (0x45) 65.0MHz -HSync -VSync
h: width 1024 start 1048 end 1184 total 1344 skew 0 clock 48.4KHz
v: height 768 start 771 end 777 total 806 clock 60.0Hz
800x600 (0x46) 40.0MHz +HSync +VSync
h: width 800 start 840 end 968 total 1056 skew 0 clock 37.9KHz
v: height 600 start 601 end 605 total 628 clock 60.3Hz
800x600 (0x47) 36.0MHz +HSync +VSync
h: width 800 start 824 end 896 total 1024 skew 0 clock 35.2KHz
v: height 600 start 601 end 603 total 625 clock 56.2Hz
640x480 (0x48) 25.2MHz -HSync -VSync
h: width 640 start 656 end 752 total 800 skew 0 clock 31.5KHz
v: height 480 start 490 end 492 total 525 clock 59.9Hz
VGA1 disconnected (normal left inverted right x axis y axis)
Identifier: 0x42
Timestamp: 32049
Subpixel: unknown
Clones:
CRTCs: 1 0
Transform: 1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
filter:
(In reply to comment #5) > I tested only with the internal laptop screen, no other screen attached So it seems your LVDS panel doesn't have an EDID (so the video modes probably come from the BIOS). I think my proposed patch will solve your problem : you don't need to identify the panel exactly in the configuration, unlike external monitors, as you cannot change it. serializer.cpp line 103 also needs to be patched, then it does not crash at least. It still does not work 100% reliable. It would be nice to have a list of own configurations/monitor setups to select from in the configuration window. Thanks for the patch, we are currently considering a slightly different approach. Hopefully we will be able to ship it soonish. Another thing to think of: kwin allows to remember positions for windows/programs. if I have configured two monitor beside each other, and work mainly on the right one (my external screen), this could be something like x=2800,y=50, even if my internal screen is switched off. So would it be usefull to cooperate with kwin to save those positions relative to the screens and monitor-setup? (In reply to comment #9) > Another thing to think of: > > kwin allows to remember positions for windows/programs. if I have configured > two monitor beside each other, and work mainly on the right one (my external > screen), this could be something like x=2800,y=50, even if my internal > screen is switched off. So would it be usefull to cooperate with kwin to > save those positions relative to the screens and monitor-setup? Please create a new feature request in KScreen/common I have seen this on bare metal with two displays, both with EDIDs, whilst switching users (brad->test, new session) so maybe this bug is inappropriately titled or maybe we need a new one? This was with libkscreen/kscreen compiled from git in the last couple of days.
Screen 0: minimum 320 x 200, current 3360 x 1080, maximum 8192 x 8192
LVDS1 connected 1920x1080+0+0 (0x49) normal (normal left inverted right x axis y axis) 344mm x 193mm
Identifier: 0x41
Timestamp: 167958573
Subpixel: horizontal rgb
Gamma: 1.0:1.0:1.0
Brightness: 1.0
Clones:
CRTC: 1
CRTCs: 1 0
Transform: 1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
filter:
EDID:
00ffffffffffff0030aeb24000000000
0113010380221378ea2135ad5037aa24
11505400000001010101010101010101
0101010101014c368082703832403c30
aa0058c1100000183f2d808270383240
3c30aa0058c1100000180000000f00d1
0932d109281b190006af5634000000fe
004231353648573031205634200a00d6
HDMI1 connected 1440x900+1920+78 (0x52) normal (normal left inverted right x axis y axis) 408mm x 255mm
Identifier: 0x43
Timestamp: 167958573
Subpixel: unknown
Gamma: 1.0:1.0:1.0
Brightness: 1.0
Clones:
CRTC: 0
CRTCs: 1 0
Transform: 1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
filter:
EDID:
00ffffffffffff0010ac04f053413230
1411010380291a78eec125a3564b9927
115054bfef809500714f8180950f0101
0101010101019a29a0d0518422305098
360098ff1000001c000000fd00384b1e
530e000a202020202020000000ff0059
59373730373548303241530a000000fc
0044454c4c20534531393857465000d4
$ find ~/.kde/share/apps/kscreen/ -type f -print -exec cat {} \;
/home/brad/.kde/share/apps/kscreen/0c3c523dac191d47d524e3ded96c9780
[ { "enabled" : true, "hash" : "3ec2e55eb2526859dc5e2a71769d1263", "mode" : { "refresh" : 60.0043, "size" : { "height" : 1080, "width" : 1920 } }, "pos" : { "x" : 0, "y" : 0 }, "primary" : false, "rotation" : 1 } ]/home/brad/.kde/share/apps/kscreen/2363c42efec10f9de1abf5cb1a02661d
[ { "enabled" : true, "hash" : "3ec2e55eb2526859dc5e2a71769d1263", "mode" : { "refresh" : 60.0043, "size" : { "height" : 1080, "width" : 1920 } }, "pos" : { "x" : 0, "y" : 0 }, "primary" : false, "rotation" : 1 }, { "enabled" : true, "hash" : "36885b8c1ffb81885bcf2e612edb69d9", "mode" : { "refresh" : 59.8874, "size" : { "height" : 900, "width" : 1440 } }, "pos" : { "x" : 1920, "y" : 78 }, "primary" : true, "rotation" : 1 } ]
$ sudo find ~test/.kde/share/apps/kscreen/ -type f -print -exec cat {} \;
/home/test/.kde/share/apps/kscreen/2363c42efec10f9de1abf5cb1a02661d
[ { "enabled" : true, "hash" : "3ec2e55eb2526859dc5e2a71769d1263", "mode" : { "refresh" : 60.0043, "size" : { "height" : 1080, "width" : 1920 } }, "pos" : { "x" : 0, "y" : 0 }, "primary" : true, "rotation" : 1 }, { "enabled" : true, "hash" : "36885b8c1ffb81885bcf2e612edb69d9", "mode" : { "refresh" : 59.8874, "size" : { "height" : 900, "width" : 1440 } }, "pos" : { "x" : 1920, "y" : 0 }, "primary" : false, "rotation" : 1 } ]
(gdb) bt
#0 KScreen::Edid::hash (this=<optimized out>) at /home/brad/working/src/libkscreen/src/edid.cpp:132
#1 0x00007f0f7bc28c26 in Serializer::currentId () at /home/brad/working/src/kscreen/kded/serializer.cpp:46
#2 0x00007f0f7bc28dbd in Serializer::configExists () at /home/brad/working/src/kscreen/kded/serializer.cpp:58
#3 0x00007f0f7bc27559 in KScreenDaemon::applyConfig (this=this@entry=0x8dc120) at /home/brad/working/src/kscreen/kded/daemon.cpp:76
#4 0x00007f0f7bc27cc9 in KScreenDaemon::init (this=0x8dc120) at /home/brad/working/src/kscreen/kded/daemon.cpp:68
#5 0x0000003ee0f8cdbf in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /lib64/libQtCore.so.4
#6 0x0000003ee0f8cdbf in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /lib64/libQtCore.so.4
#7 0x00007f0f7bc2ebd4 in Device::isLidClosedFetched (this=0x8e9710, watcher=0x75b1d0) at /home/brad/working/src/kscreen/kded/device.cpp:146
#8 0x0000003ee0f8cdbf in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /lib64/libQtCore.so.4
#9 0x0000003ee205c2bf in QDBusPendingCallWatcher::finished(QDBusPendingCallWatcher*) () from /lib64/libQtDBus.so.4
#10 0x0000003ee0f8c29e in QObject::event(QEvent*) () from /lib64/libQtCore.so.4
#11 0x0000003ee3bca5ac in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib64/libQtGui.so.4
#12 0x0000003ee3bcea2a in QApplication::notify(QObject*, QEvent*) () from /lib64/libQtGui.so.4
#13 0x0000003ea7a468a6 in KApplication::notify(QObject*, QEvent*) () from /lib64/libkdeui.so.5
#14 0x0000003ee0f7799e in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /lib64/libQtCore.so.4
#15 0x0000003ee0f7b451 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /lib64/libQtCore.so.4
#16 0x0000003ee0fa5e33 in ?? () from /lib64/libQtCore.so.4
#17 0x0000003ed7647825 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#18 0x0000003ed7647b58 in ?? () from /lib64/libglib-2.0.so.0
#19 0x0000003ed7647c14 in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#20 0x0000003ee0fa5fc6 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQtCore.so.4
#21 0x0000003ee3c6a5ee in ?? () from /lib64/libQtGui.so.4
#22 0x0000003ee0f766ef in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQtCore.so.4
#23 0x0000003ee0f76978 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQtCore.so.4
#24 0x0000003ee0f7b768 in QCoreApplication::exec() () from /lib64/libQtCore.so.4
#25 0x0000003ea9e084c0 in kdemain () from /lib64/libkdeinit4_kded4.so
#26 0x0000003ed5a21735 in __libc_start_main () from /lib64/libc.so.6
#27 0x00000000004007a1 in _start ()
(gdb) f
#1 0x00007f0f7bc28c26 in Serializer::currentId () at /home/brad/working/src/kscreen/kded/serializer.cpp:46
46 hashList.insert(0, output->edid()->hash());
(gdb) p output->m_edid
$9 = {
o = 0x0
}
I have the complete abrtd dump so ping me if you want it.
I probably should mention that this was the first time I'd logged on as that user since switching to kscreen and that whilst the session was initilising I had switched back to my original session. It was only upon switching back to the new session for user "test" that i noticed the crash. *** Bug 312619 has been marked as a duplicate of this bug. *** I added my backtrace to a duplicate of this bug. However, the crash appears while I obviously do have a EDID:
Screen 0: minimum 320 x 200, current 1600 x 900, maximum 8192 x 8192
LVDS1 connected 1600x900+0+0 (0x43) normal (normal left inverted right x axis y axis) 322mm x 181mm
Identifier: 0x41
Timestamp: 16191
Subpixel: horizontal rgb
Gamma: 0.97:1.1:1.4
Brightness: 0.97
Clones:
CRTC: 0
CRTCs: 0 1
Transform: 1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
filter:
EDID:
00ffffffffffff003064090e01010101
14140103802012780a2b8ca45549a627
09505300000001010101010101010101
0101010101011c2a407e618407304040
110042b5100000180000000f00040804
080000010173c2020500000000fe0054
4d444953504c41590a202020000000fe
004c54313435454531353030300a005f
BACKLIGHT: 10 (0x0000000a) range: (0,10)
Backlight: 10 (0x0000000a) range: (0,10)
scaling mode: Full aspect
supported: None Full Center Full aspect
1600x900 (0x43) 107.8MHz -HSync -VSync *current +preferred
h: width 1600 start 1664 end 1728 total 1982 skew 0 clock 54.4KHz
v: height 900 start 901 end 902 total 907 clock 60.0Hz
1024x768 (0x44) 65.0MHz -HSync -VSync
h: width 1024 start 1048 end 1184 total 1344 skew 0 clock 48.4KHz
v: height 768 start 771 end 777 total 806 clock 60.0Hz
800x600 (0x45) 40.0MHz +HSync +VSync
h: width 800 start 840 end 968 total 1056 skew 0 clock 37.9KHz
v: height 600 start 601 end 605 total 628 clock 60.3Hz
800x600 (0x46) 36.0MHz +HSync +VSync
h: width 800 start 824 end 896 total 1024 skew 0 clock 35.2KHz
v: height 600 start 601 end 603 total 625 clock 56.2Hz
640x480 (0x47) 25.2MHz -HSync -VSync
h: width 640 start 656 end 752 total 800 skew 0 clock 31.5KHz
v: height 480 start 490 end 492 total 525 clock 59.9Hz
VGA1 disconnected (normal left inverted right x axis y axis)
Identifier: 0x42
Timestamp: 16191
Subpixel: unknown
Clones:
CRTCs: 0 1
Transform: 1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
filter:
Git commit b309874669283054825f24194bdafff1e776a0ce by Lamarque V. Souza. Committed on 09/01/2013 at 22:07. Pushed by lvsouza into branch 'master'. Semantic change in XRandROutput::edid() and select the first preferred mode found for a montior. REVIEW: 107940 Related: bug 312951 M +7 -1 backends/xrandr/xrandroutput.cpp http://commits.kde.org/libkscreen/b309874669283054825f24194bdafff1e776a0ce with the latest version I don't have any crashes anymore. |