[CRASH] QGraphicsView::mapFromScene buggy

Alexis Ménard menard at kde.org
Mon Oct 20 11:34:54 CEST 2008


QSize s = dialog->size();
QPoint pos = q->view()->mapFromScene(q->scenePos());

Here is the code from popup applet. Three things that can crash :

First q->view() return null so you call mapFromScene to a null or broken
pointer. Run gdb and test the variable (or print it with kDebug).

Second, q->scenePos() return crazy value (check).

Third, q is null or broken. Test.

mapFrom/toScene are common functions used everywhere both in KDE and Qt so
it's probably not a bug inside Qt. If it's the case for sure i will fix it.

Give me news.


2008/10/20 Alessandro Diaferia <alediaferia at gmail.com>

> Hello my dear ML,
> i'm fixing devicenotifier patch according to Aaron's suggestions but i
> encounter a crash calling PopupApplet::showPopup(); The backtrace and my
> tests say that the crash comes from Qt side, and it happens calling
> QGraphicsView::mapFromScene, in particular from line 442 of my
> popupapplet.cpp (PopupAppletPrivate::updateDialogPosition());
>
> Along with this mail comes the device notifier patch.
>
> Here instead comes the BT:
>
> Application: Plasma Workspace (plasma), signal SIGSEGV
>
> Using host libthread_db library "/lib/libthread_db.so.1".
>
> [Current thread is 0 (LWP 1037)]
>
> Thread 2 (Thread 0xb2dd7b90 (LWP 1038)):
>
> #0 0xb8069424 in __kernel_vsyscall ()
>
> #1 0xb5f45be5 in pthread_cond_wait@@GLIBC_2.3.2 () from
> /lib/libpthread.so.0
>
> #2 0xb5fa3fc2 in QWaitCondition::wait (this=0x9cf5d30, mutex=0x9cf5d2c,
> time=4294967295) at thread/qwaitcondition_unix.cpp:88
>
> #3 0xb7dd508b in QHostInfoAgent::run (this=0x9cf5d20) at
> kernel/qhostinfo.cpp:247
>
> #4 0xb5fa2e59 in QThreadPrivate::start (arg=0x9cf5d20) at
> thread/qthread_unix.cpp:191
>
> #5 0xb5f42160 in start_thread () from /lib/libpthread.so.0
>
> #6 0xb5c8fc0e in clone () from /lib/libc.so.6
>
>
>  Thread 1 (Thread 0xb49b7730 (LWP 1037)):
>
> [KCrash Handler]
>
> *#6 0xb73bef70 in QGraphicsView::mapFromScene () from
> /usr/lib/qt4/libQtGui.so.4*
>
> *#7 0xb7f3549a in Plasma::PopupAppletPrivate::updateDialogPosition
> (this=0x9b0ccc0) at
> /var/tmp/paludis/kde-base-libplasma-scm/work/libplasma/libs/plasma/popupapplet.cpp:442
> *
>
> *#8 0xb7f36184 in Plasma::PopupApplet::showPopup (this=0x9b5ad48,
> popupDuration=0) at
> /var/tmp/paludis/kde-base-libplasma-scm/work/libplasma/libs/plasma/popupapplet.cpp:311
> *
>
> #9 0xb315e09e in DeviceNotifier::notifyDevice (this=0x9b5ad48,
> name=@0x9dae9d8)
>
> at
> /var/tmp/paludis/kde-base-plasma-workspace-scm/work/plasma-workspace/plasma/applets/devicenotifier/devicenotifier.cpp:211
>
> #10 0xb315e1da in DeviceNotifier::onSourceAdded (this=0x9b5ad48,
> name=@0x9dae9d8)
>
> at
> /var/tmp/paludis/kde-base-plasma-workspace-scm/work/plasma-workspace/plasma/applets/devicenotifier/devicenotifier.cpp:257
>
> #11 0xb315f130 in DeviceNotifier::fillPreviousDevices (this=0x9b5ad48) at
> /var/tmp/paludis/kde-base-plasma-workspace-scm/work/plasma-workspace/plasma/applets/devicenotifier/devicenotifier.cpp:128
>
> #12 0xb315f217 in DeviceNotifier::constraintsEvent (this=0x9b5ad48,
> constraints={i = -1074254176})
>
> at
> /var/tmp/paludis/kde-base-plasma-workspace-scm/work/plasma-workspace/plasma/applets/devicenotifier/devicenotifier.cpp:106
>
> #13 0xb7efc7d9 in Plasma::Applet::flushPendingConstraintsEvents
> (this=0x9b5ad48) at
> /var/tmp/paludis/kde-base-libplasma-scm/work/libplasma/libs/plasma/applet.cpp:890
>
> #14 0xb7f18ba7 in Plasma::Corona::loadLayout (this=0x9acd3d8,
> configName=@0xbff830c0) at
> /var/tmp/paludis/kde-base-libplasma-scm/work/libplasma/libs/plasma/corona.cpp:308
>
> #15 0xb7f18e33 in Plasma::Corona::initializeLayout (this=0x9acd3d8,
> configName=@0xbff830c0) at
> /var/tmp/paludis/kde-base-libplasma-scm/work/libplasma/libs/plasma/corona.cpp:252
>
> #16 0xb80459e3 in PlasmaApp::corona (this=0x99c9128) at
> /var/tmp/paludis/kde-base-plasma-workspace-scm/work/plasma-workspace/plasma/shells/desktop/plasmaapp.cpp:434
>
> #17 0xb80477e8 in PlasmaApp (this=0x99c9128, display=0x99c0720,
> visual=161251368, colormap=98566145)
>
> at
> /var/tmp/paludis/kde-base-plasma-workspace-scm/work/plasma-workspace/plasma/shells/desktop/plasmaapp.cpp:228
>
> #18 0xb8048105 in PlasmaApp::self () at
> /var/tmp/paludis/kde-base-plasma-workspace-scm/work/plasma-workspace/plasma/shells/desktop/plasmaapp.cpp:121
>
> #19 0xb8038b11 in kdemain (argc=1, argv=0xbff83344) at
> /var/tmp/paludis/kde-base-plasma-workspace-scm/work/plasma-workspace/plasma/shells/desktop/main.cpp:55
>
> #20 0x080487af in main (argc=162901320, argv=0x9e19bb0) at
> /var/tmp/paludis/kde-base-plasma-workspace-scm/work/plasma-workspace_build/plasma/shells/desktop/plasma_qgv_dummy.cpp:3
>
> #21 0xb5bda635 in __libc_start_main () from /lib/libc.so.6
>
> #22 0x080486f1 in _start ()
>
>
> --
> Alessandro Diaferia
>
> _______________________________________________
> Plasma-devel mailing list
> Plasma-devel at kde.org
> https://mail.kde.org/mailman/listinfo/plasma-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.kde.org/pipermail/plasma-devel/attachments/20081020/e4e7b403/attachment.htm 


More information about the Plasma-devel mailing list