Bug 320397

Summary: 'Screen Settings' crashes when changing external monitor and afterwards replacing their position with primary
Product: [Plasma] KScreen Reporter: Alexander <alykoshin>
Component: libkscreenAssignee: Daniel Vrátil <dvratil>
Status: RESOLVED DUPLICATE    
Severity: crash CC: afiestas, dvratil
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: kscreen-console bug > work
kscreen-console bug > home1
kscreen-console bug > home3

Description Alexander 2013-05-28 19:00:11 UTC
Application: kcmshell4 (4.10.2)
KDE Platform Version: 4.10.2
Qt Version: 4.8.4
Operating System: Linux 3.8.0-22-generic x86_64
Distribution: Ubuntu 13.04

-- Information about the crash:
- What I was doing when the application crashed:

Minor bug. I have HP notebook with monitor listed as Seiko Epson Corporatio
and two different 27" external monitors: Hewlett Packard HP2710m (at home, positioned to the right of notebook) and iIyama (at work, position to the left of notebook) connected to VGA port of notebook. 
If I turn notebook to sleep mode without disconnecting monitor, then go to home, starting notebook with another monitor, then in 'Screen settings' (sorry, not sure with the translation - using Russian version of KDE) replace positons of monitors (left to right and vice-versa), the module crashes every time. 
However, if I (still using 'Screen settings') switching external monitor off, replace its position with primary monitor, click 'Apply', then switch it on again and click 'Apply', there is no crash.

The crash can be reproduced every time.

-- Backtrace:
Application: Модуль настройки KDE (kdeinit4), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f46ce8387c0 (LWP 22925))]

Thread 3 (Thread 0x7f46b3459700 (LWP 22926)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007f46bfe87e77 in ?? () from /usr/lib/x86_64-linux-gnu/libQtScript.so.4
#2  0x00007f46bfe87ea9 in ?? () from /usr/lib/x86_64-linux-gnu/libQtScript.so.4
#3  0x00007f46c98c8f8e in start_thread (arg=0x7f46b3459700) at pthread_create.c:311
#4  0x00007f46cc0b8e1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 2 (Thread 0x7f46b2048700 (LWP 22927)):
#0  0x00007f46cc0ac3cd in poll () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007f46c91f41dc in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f46c91f4304 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f46cd4de036 in QEventDispatcherGlib::processEvents (this=0x7f46ac0008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#4  0x00007f46cd4ae38f in QEventLoop::processEvents (this=this@entry=0x7f46b2047d90, flags=...) at kernel/qeventloop.cpp:149
#5  0x00007f46cd4ae618 in QEventLoop::exec (this=this@entry=0x7f46b2047d90, flags=...) at kernel/qeventloop.cpp:204
#6  0x00007f46cd3b0410 in QThread::exec (this=this@entry=0x12d5cf0) at thread/qthread.cpp:542
#7  0x00007f46cd48fedf in QInotifyFileSystemWatcherEngine::run (this=0x12d5cf0) at io/qfilesystemwatcher_inotify.cpp:256
#8  0x00007f46cd3b2bec in QThreadPrivate::start (arg=0x12d5cf0) at thread/qthread_unix.cpp:338
#9  0x00007f46c98c8f8e in start_thread (arg=0x7f46b2048700) at pthread_create.c:311
#10 0x00007f46cc0b8e1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 1 (Thread 0x7f46ce8387c0 (LWP 22925)):
[KCrash Handler]
#6  KScreen::Mode::size (this=0x0) at /build/buildd/libkscreen-0.0.92/src/mode.cpp:83
#7  0x00007f46b3464719 in XRandRConfig::applyKScreenConfig (this=0x1105f80, config=0x130fad0) at /build/buildd/libkscreen-0.0.92/backends/xrandr/xrandrconfig.cpp:164
#8  0x00007f46b3675fd5 in KScreen::Config::setConfig (config=0x130fad0) at /build/buildd/libkscreen-0.0.92/src/config.cpp:66
#9  0x00007f46b38af409 in KCMKScreen::save (this=0x103ce10) at /build/buildd/kscreen-0.0.92/kcm/src/kcm_kscreen.cpp:213
#10 0x00007f46be1c3807 in KCModuleProxy::save (this=<optimized out>) at ../../kutils/kcmoduleproxy.cpp:279
#11 0x00007f46be1bfb60 in KCMultiDialogPrivate::apply (this=<optimized out>) at ../../kutils/kcmultidialog.cpp:300
#12 0x00007f46be1bfc67 in KCMultiDialog::slotOkClicked (this=0x105a6c0) at ../../kutils/kcmultidialog.cpp:334
#13 0x00007f46cd4c40ef in QMetaObject::activate (sender=sender@entry=0x105a6c0, m=m@entry=0x7f46ce627320 <KDialog::staticMetaObject>, local_signal_index=local_signal_index@entry=9, argv=argv@entry=0x0) at kernel/qobject.cpp:3539
#14 0x00007f46ce18f113 in KDialog::okClicked (this=this@entry=0x105a6c0) at ./kdialog.moc:272
#15 0x00007f46ce18f7c8 in KDialog::slotButtonClicked (this=0x105a6c0, button=4) at ../../kdeui/dialogs/kdialog.cpp:884
#16 0x00007f46ce191d44 in qt_static_metacall (_a=<optimized out>, _id=<optimized out>, _o=<optimized out>, _c=<optimized out>) at ./kdialog.moc:167
#17 KDialog::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at ./kdialog.moc:127
#18 0x00007f46cd4c40ef in QMetaObject::activate (sender=sender@entry=0x10b30e0, m=m@entry=0x7f46cd807c60 <QSignalMapper::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fff77479600) at kernel/qobject.cpp:3539
#19 0x00007f46cd4cb0fe in QSignalMapper::mapped (this=this@entry=0x10b30e0, _t1=4) at .moc/release-shared/moc_qsignalmapper.cpp:115
#20 0x00007f46cd4cb305 in QSignalMapper::map (this=0x10b30e0, sender=0x10031b0) at kernel/qsignalmapper.cpp:266
#21 0x00007f46cd4c40ef in QMetaObject::activate (sender=sender@entry=0x10031b0, m=m@entry=0x7f46cd320ca0 <QAbstractButton::staticMetaObject>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7fff77479790) at kernel/qobject.cpp:3539
#22 0x00007f46ccec0c82 in QAbstractButton::clicked (this=this@entry=0x10031b0, _t1=false) at .moc/release-shared/moc_qabstractbutton.cpp:220
#23 0x00007f46ccc1423e in QAbstractButtonPrivate::emitClicked (this=this@entry=0x10a3080) at widgets/qabstractbutton.cpp:548
#24 0x00007f46ccc14a30 in QAbstractButtonPrivate::click (this=this@entry=0x10a3080) at widgets/qabstractbutton.cpp:541
#25 0x00007f46ccc14c9c in QAbstractButton::mouseReleaseEvent (this=0x10031b0, e=0x7fff7747a030) at widgets/qabstractbutton.cpp:1123
#26 0x00007f46cc8a2a89 in QWidget::event (this=0x10031b0, event=0x7fff7747a030) at kernel/qwidget.cpp:8375
#27 0x00007f46cc8558ec in QApplicationPrivate::notify_helper (this=this@entry=0xee9aa0, receiver=receiver@entry=0x10031b0, e=e@entry=0x7fff7747a030) at kernel/qapplication.cpp:4567
#28 0x00007f46cc858a33 in QApplication::notify (this=this@entry=0x7fff7747ae50, receiver=receiver@entry=0x10031b0, e=e@entry=0x7fff7747a030) at kernel/qapplication.cpp:4110
#29 0x00007f46ce232af6 in KApplication::notify (this=0x7fff7747ae50, receiver=0x10031b0, event=0x7fff7747a030) at ../../kdeui/kernel/kapplication.cpp:311
#30 0x00007f46cd4af63e in QCoreApplication::notifyInternal (this=0x7fff7747ae50, receiver=receiver@entry=0x10031b0, event=event@entry=0x7fff7747a030) at kernel/qcoreapplication.cpp:946
#31 0x00007f46cc85b933 in sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#32 QApplicationPrivate::sendMouseEvent (receiver=receiver@entry=0x10031b0, event=event@entry=0x7fff7747a030, alienWidget=alienWidget@entry=0x10031b0, nativeWidget=nativeWidget@entry=0x105a6c0, buttonDown=buttonDown@entry=0x7f46cd333308 <qt_button_down>, lastMouseReceiver=..., spontaneous=spontaneous@entry=true) at kernel/qapplication.cpp:3178
#33 0x00007f46cc8d0ec4 in QETWidget::translateMouseEvent (this=this@entry=0x105a6c0, event=event@entry=0x7fff7747a7b0) at kernel/qapplication_x11.cpp:4631
#34 0x00007f46cc8cfef1 in QApplication::x11ProcessEvent (this=0x7fff7747ae50, event=event@entry=0x7fff7747a7b0) at kernel/qapplication_x11.cpp:3746
#35 0x00007f46cc8fb0b2 in x11EventSourceDispatch (s=0xeeb1a0, callback=0x0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#36 0x00007f46c91f3f05 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#37 0x00007f46c91f4248 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#38 0x00007f46c91f4304 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#39 0x00007f46cd4de016 in QEventDispatcherGlib::processEvents (this=0xe2c670, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#40 0x00007f46cc8fb1ae in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#41 0x00007f46cd4ae38f in QEventLoop::processEvents (this=this@entry=0x7fff7747ab90, flags=...) at kernel/qeventloop.cpp:149
#42 0x00007f46cd4ae618 in QEventLoop::exec (this=this@entry=0x7fff7747ab90, flags=...) at kernel/qeventloop.cpp:204
#43 0x00007f46ccd101c8 in QDialog::exec (this=this@entry=0x105a6c0) at dialogs/qdialog.cpp:554
#44 0x00007f46b909cb1c in kdemain (_argc=15636800, _argv=<optimized out>) at ../../kcmshell/main.cpp:297
#45 0x00000000004084ea in launch (argc=argc@entry=2, _name=_name@entry=0xec2ec8 "kcmshell4", args=0xec2eda "\001", args@entry=0xec2ed2 "kscreen", cwd=cwd@entry=0x0, envc=envc@entry=1, envs=<optimized out>, envs@entry=0xec2ee2 "DISPLAY=:0", reset_env=false, tty=tty@entry=0x0, avoid_loops=false, startup_id_str=startup_id_str@entry=0x40aff6 "0") at ../../kinit/kinit.cpp:738
#46 0x00000000004095fb in handle_launcher_request (sock=8, who=<optimized out>) at ../../kinit/kinit.cpp:1230
#47 0x0000000000409c40 in handle_requests (waitForPid=waitForPid@entry=0) at ../../kinit/kinit.cpp:1423
#48 0x00000000004054f7 in main (argc=4, argv=<optimized out>, envp=0x7fff7747bc50) at ../../kinit/kinit.cpp:1911

Reported using DrKonqi
Comment 1 Daniel Vrátil 2013-05-29 13:38:01 UTC
Can you please provide output from "kscreen-console bug" for both configurations, work and home?
Comment 2 Alexander 2013-05-29 19:24:51 UTC
Created attachment 80163 [details]
kscreen-console bug > work
Comment 3 Alexander 2013-05-29 19:30:36 UTC
Created attachment 80164 [details]
kscreen-console bug > home1
Comment 4 Alexander 2013-05-29 19:33:12 UTC
Created attachment 80165 [details]
kscreen-console bug > home3

Output after I turned off ext.monitor, pressed Apply, changed positions of monitors, turned it on again, pressed Apply (without crash)
Comment 5 Alexander 2013-05-29 19:35:37 UTC
(In reply to comment #3)
> Created attachment 80164 [details]
> kscreen-console bug > home1

Forgot to mention that this output is just before crash. Output after crash shows no slight difference:
===================================
$ diff home1 home2
2c2
< Config::current() took 136 milliseconds 
---
> Config::current() took 69 milliseconds 
$
Comment 6 Daniel Vrátil 2013-05-29 20:56:25 UTC
Thanks a lot.

> Minor bug. I have HP notebook with monitor listed as Seiko Epson Corporation
Not a bug, this is simply how the LVDS (laptop monitor) reports itself. It's hardwired in it's EDID. Nothing we can do about that, sorry.
Comment 7 Daniel Vrátil 2013-06-06 15:26:14 UTC

*** This bug has been marked as a duplicate of bug 320537 ***