Details
-
Bug
-
Resolution: Done
-
Not Evaluated
-
4.7.2
-
None
-
6db0153cd7e35e4a919a76ae2aadbf2d2510bfb7
Description
Hulkkonen Lassi (Symbio) 2011-03-14 12:18:14 EET
SOFTWARE VERSION:
DFL61_HARMATTAN_0.2011.10-7_PR_001
HARDWARE VERSION:
product RM-696 hw-build 0807 nolo 2.0.20 boot-mode normal
This bug was generated from a crash report:
https://coreweb.projects.maemo.org/core?sha1sum=46cf2a9ea910250c091f92e9f7601d95f4cbc83d
Stack:
Signal 11 (SIGSEGV)
0 internalWinId (this=0x41fe0) at
../../include/QtGui/../../src/gui/kernel/qwidget.h:234
1 QWidget::effectiveWinId (this=0x41fe0) at kernel/qwidget.cpp:2562
2 0x3db5cfb0 MReactionMapPrivate::eventFilter (this=0x7f9a0,
obj=0x41fe0) at mreactionmap_p.cpp:371
3 0x3b6922a0 QCoreApplicationPrivate::sendThroughObjectEventFilters
(receiver=0x41fe0, event=0xae9acf80) at kernel/qcoreapplication.cpp:902
4 0x3ac8e710 QApplicationPrivate::notify_helper (this=0x23610,
receiver=0x41fe0, e=0xae9acf80) at kernel/qapplication.cpp:4458
5 0x3ac95374 QApplication::notify (this=0xae9adb64, receiver=0x41fe0,
e=0xae9acf80) at kernel/qapplication.cpp:4341
6 0x3b6926e4 QCoreApplication::notifyInternal (this=0xae9adb64,
event=0xae9acf80) at kernel/qcoreapplication.cpp:787
7 0x3ace0f94 sendEvent (id=0) at
../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
8 QWidgetPrivate::setWinId (id=0) at kernel/qwidget.cpp:1694
9 0x3ad38930 QWidgetPrivate::setParent_sys (this=0x39a00, parent=0x0)
at kernel/qwidget_x11.cpp:1200
10 0x3aceb7b0 QWidget::setParent (this=0x41fe0, parent=0x0) at
kernel/qwidget.cpp:10072
11 0x3ad399f4 QWidget::setWindowState (this=0x41fe0) at
kernel/qwidget_x11.cpp:1833
12 0x3ace0634 QWidget::showFullScreen (this=0x41fe0) at
kernel/qwidget.cpp:3057
13 0x0000d004 MPassThruWindow::inputPassthrough (this=0x41fe0) at
mpassthruwindow.cpp:130
14 0x0000e200 MPassThruWindow::qt_metacall (this=0x41fe0, _id=0,
_a=0xae9ad3f8) at moc_mpassthruwindow.cpp:80
15 0x3b69879c QMetaObject::metacall (object=0x0, idx=28, argv=0x39a00)
at kernel/qmetaobject.cpp:237
16 0x3b6ae30c QMetaObject::activate (sender=0x41718, argv=0x39a00) at
kernel/qobject.cpp:3278
17 0x3ab01f80 MIMPluginManager::regionUpdated (this=0x0) at
.moc/moc_mimpluginmanager.cpp:115
18 0x3ab45f24 MAbstractInputMethodHost::qt_metacall (this=0x681c0,
_id=-4, _a=0xae9ad4b8) at .moc/moc_mabstractinputmethodhost.cpp:143
19 0x3b69879c QMetaObject::metacall (object=0x0, idx=28, argv=0x39a00)
at kernel/qmetaobject.cpp:237
20 0x3b6ae30c QMetaObject::activate (sender=0xc0830, argv=0x39a00) at
kernel/qobject.cpp:3278
21 0x3de7133c RegionTracker::regionChanged (this=0x0) at
.moc/moc_regiontracker.cpp:87
22 0x3de5a7a4 MKeyboardHost::sendRegionEstimate () at
mkeyboardhost.cpp:572
23 0x3de5aa14 MKeyboardHost::show (this=0x77048) at
mkeyboardhost.cpp:620
24 0x3ab06eb8 MIMPluginManagerPrivate::showActivePlugins () at
mimpluginmanager.cpp:664
25 0x3ab0cefc MIMPluginManager::qt_metacall (this=0x41718, _id=-9,
_a=0xae9ad664) at .moc/moc_mimpluginmanager.cpp:95
26 0x3b69879c QMetaObject::metacall (object=0x0, idx=28, argv=0x39a00)
at kernel/qmetaobject.cpp:237
27 0x3b6ae30c QMetaObject::activate (sender=0x45390, argv=0x39a00) at
kernel/qobject.cpp:3278
28 0x3ab3158c m_dbus_glib_ic_connection_show_input_method () at
minputcontextglibdbusconnection.cpp:107
29 0x3ab31dc8
dbus_glib_marshal_m_dbus_glib_ic_connection_BOOLEAN__POINTER
(closure=0xae9ad7c8, return_value=0xae9ad810, param_values=0x1061b0,
invocation_hint=0x0, marshal_data=0x3ab3157c) at
mdbusglibicconnectionserviceglue.h:243
30 0x3bb620d8 invoke_object_method () at dbus-gobject.c:1721
31 object_registration_message () at dbus-gobject.c:1941
32 0x3bb954b0 _dbus_object_tree_dispatch_and_unlock (tree=0x1a89e0,
message=0x1e0aa8) at dbus-object-tree.c:858
33 0x3bb870d4 dbus_connection_dispatch (connection=0x1e34e0) at
dbus-connection.c:4687
34 0x3bb5dd24 message_queue_dispatch () at dbus-gmain.c:101
35 0x3bc4ee58 g_main_dispatch () at
/home/bifh13/cs2009q3-armel/work/glib2.0-2.26.0/glib/gmain.c:2171
36 g_main_context_dispatch () at
/home/bifh13/cs2009q3-armel/work/glib2.0-2.26.0/glib/gmain.c:2724
37 0x3bc52f38 g_main_context_iterate (context=0x26200) at
/home/bifh13/cs2009q3-armel/work/glib2.0-2.26.0/glib/gmain.c:2802
38 0x3bc53198 g_main_context_iteration (context=0x26200, may_block=1)
at /home/bifh13/cs2009q3-armel/work/glib2.0-2.26.0/glib/gmain.c:2865
39 0x3b6c4fb0 QEventDispatcherGlib::processEvents (this=0x24e78) at
kernel/qeventdispatcher_glib.cpp:422
40 0x3ad46f14 QGuiEventDispatcherGlib::processEvents (this=0x0) at
kernel/qguieventdispatcher_glib.cpp:204
41 0x3b691208 QEventLoop::processEvents () at kernel/qeventloop.cpp:149
42 0x3b6916ac QEventLoop::exec (this=0xae9adadc) at
kernel/qeventloop.cpp:201
43 0x3b696d60 QCoreApplication::exec () at
kernel/qcoreapplication.cpp:1064
44 0x0000be78 main (argc=3) at main.cpp:86
[reply] [-] Comment 1 Hasselmann Michael (Openismus) 2011-03-14 17:07:03 EET
Cannot call ::effectiveWinId for unmapped (X) windows - something goes awfully
wrong in Qt, as effectiveWinId should simply return 0 in this case!
So, shall we move this to Qt?
[reply] [-] Comment 2 Hasselmann Michael (Openismus) 2011-03-14 17:19:10 EET
From the relevant Qt code:
WId QWidget::effectiveWinId() const
{
WId id = internalWinId();
if (id || !testAttribute(Qt::WA_WState_Created))
return id;
QWidget *realParent = nativeParentWidget();
Q_ASSERT(realParent);
Q_ASSERT(realParent->internalWinId());
return realParent->internalWinId();
}
This is broken. The Q_ASSERT's are useless, and wrong. The only real solution
is to return 0 if nativeParentWidget returns 0.
As our backtrace here shows, the Qt::WA_WState_Created guard is not good enough
if for example event filters are involved.
Forwarding to Qt. Proposing to raise severity, as it applies to all users of
QWidget::effectiveWinId.
[reply] [-] Comment 3 Sun Richard (NokiaSSU) H_TPO 2011-03-14 17:27:04 EET
request for Sales Flag.
[reply] [-] Comment 4 Bhatti Asbhatti (Tieto) 2011-03-15 10:07:29 EET
As the crash happens at:
WId id = internalWinId();
Is this the change you meant?
WId QWidget::effectiveWinId() const
{
if (!testAttribute(Qt::WA_WState_Created))
QWidget *realParent = nativeParentWidget();
Q_ASSERT(realParent);
Q_ASSERT(realParent->internalWinId());
return realParent->internalWinId();
}
[reply] [-] Comment 5 Hasselmann Michael (Openismus) 2011-03-15 11:10:22 EET
(In reply to comment #4)
> As the crash happens at:
> WId id = internalWinId();
>
> Is this the change you meant?
The line number in the bt says it crashes at:
return realParent->internalWinId();
which means we dereferencing a nullptr here.
[reply] [-] Comment 6 Pakarinen Juuso (Tieto) 2011-03-18 12:18:13 EET
Assignign.
[reply] [-] Comment 7 Kekki Jussi-Pekka (Nokia) H_BPO product_managers 2011-03-18 13:28:04 EET
flagging to sales.
[reply] [-] Comment 8 Sun Richard (NokiaSSU) H_TPO 2011-03-25 15:23:28 EET
request PILOT inherited from blocked bug
[reply] [-] Comment 9 Bhatti Asbhatti (Tieto) 2011-03-29 07:56:30 EEST
qt merge requested:
Oswald Buddenhagen commented:
hi, looks like our widget guys are rather busy. :/
to accelerate integration, you should add an autotest that demonstrates the
problem.
http://gitorious.org/qt/qt/merge_requests/1141
Lassi.Hulkkonen can you do the needful?
[reply] [-] Comment 10 Hulkkonen Lassi (Symbio) 2011-03-29 08:14:20 EEST
(In reply to comment #9)
> qt merge requested:
>
> Oswald Buddenhagen commented:
>
> hi, looks like our widget guys are rather busy. :/
> to accelerate integration, you should add an autotest that demonstrates the
> problem.
>
> http://gitorious.org/qt/qt/merge_requests/1141
>
> Lassi.Hulkkonen can you do the needful?
No, I don't think I can do this.