Bug 282913

Summary: Kig crashed when parameter not given in an textfield
Product: [Applications] kig Reporter: Ommi <ommidi>
Component: generalAssignee: Pino Toscano <pino>
Status: RESOLVED FIXED    
Severity: crash CC: david.narvaez
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: openSUSE   
OS: Linux   
Latest Commit: Version Fixed In: 4.7.3
Sentry Crash Report:

Description Ommi 2011-09-27 15:07:10 UTC
Application: kig (v1.0)
KDE Platform Version: 4.6.00 (4.6.0) "release 6"
Qt Version: 4.7.1
Operating System: Linux 2.6.37.6-0.7-desktop x86_64
Distribution: "openSUSE 11.4 (x86_64)"

-- Information about the crash:
- What I was doing when the application crashed: start kig, open textfield, input: %1, hit continue button,
kig asks to supply a parameter, hit "Fertigstellen" (continue?), kig complains, hit "Ok", kig complains again, hit "ok" again, kig crashes.

The crash can be reproduced every time.

-- Backtrace:
Application: Kig (kig), signal: Segmentation fault
[KCrash Handler]
#6  push_back (this=0x0, c=0xb38ee0) at /usr/include/c++/4.5/bits/stl_vector.h:743
#7  ObjectCalcer::addChild (this=0x0, c=0xb38ee0) at /usr/src/debug/kdeedu-4.6.0/kig/objects/object_calcer.cc:112
#8  0x00007f76cfe2e5ef in operator() (this=0xb38ee0, type=<value optimized out>, parents=<value optimized out>, sort=<value optimized out>) at /usr/include/c++/4.5/bits/stl_function.h:605
#9  operator() (this=0xb38ee0, type=<value optimized out>, parents=<value optimized out>, sort=<value optimized out>) at /usr/include/c++/4.5/backward/binders.h:154
#10 for_each<__gnu_cxx::__normal_iterator<ObjectCalcer**, std::vector<ObjectCalcer*> >, std::binder2nd<std::mem_fun1_t<void, ObjectCalcer, ObjectCalcer*> > > (this=0xb38ee0, type=<value optimized out>, parents=<value optimized out>, sort=<value optimized out>) at /usr/include/c++/4.5/bits/stl_algo.h:4185
#11 ObjectTypeCalcer::ObjectTypeCalcer (this=0xb38ee0, type=<value optimized out>, parents=<value optimized out>, sort=<value optimized out>) at /usr/src/debug/kdeedu-4.6.0/kig/objects/object_calcer.cc:48
#12 0x00007f76cfe30cca in ObjectFactory::attachedLabelCalcer (this=0x7f76d018efe0, s=..., p=<value optimized out>, loc=<value optimized out>, needframe=<value optimized out>, nparents=..., doc=...) at /usr/src/debug/kdeedu-4.6.0/kig/objects/object_factory.cc:416
#13 0x00007f76cfe30da9 in ObjectFactory::labelCalcer (this=<value optimized out>, s=<value optimized out>, loc=<value optimized out>, needframe=<value optimized out>, parents=<value optimized out>, doc=<value optimized out>) at /usr/src/debug/kdeedu-4.6.0/kig/objects/object_factory.cc:399
#14 0x00007f76cfe30dc6 in ObjectFactory::label (this=<value optimized out>, s=<value optimized out>, loc=<value optimized out>, needframe=<value optimized out>, parents=<value optimized out>, doc=<value optimized out>) at /usr/src/debug/kdeedu-4.6.0/kig/objects/object_factory.cc:391
#15 0x00007f76cfe94fa3 in TextLabelConstructionMode::finish (this=0x7fff2e8cc160, coord=..., s=..., props=..., needframe=false, locationparent=<value optimized out>) at /usr/src/debug/kdeedu-4.6.0/kig/modes/label.cc:494
#16 0x00007f76cfe93fd8 in TextLabelModeBase::finishPressed (this=0x7fff2e8cc160) at /usr/src/debug/kdeedu-4.6.0/kig/modes/label.cc:346
#17 0x00007f76dee97bd5 in QDialog::qt_metacall (this=0xa42d20, _c=QMetaObject::InvokeMetaMethod, _id=6, _a=0x7fff2e8cab10) at .moc/release-shared/moc_qdialog.cpp:96
#18 0x00007f76deed8fd5 in QWizard::qt_metacall (this=0xa42d20, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fff2e8cab10) at .moc/release-shared/moc_qwizard.cpp:159
#19 0x00007f76cfea4100 in TextLabelWizard::qt_metacall (this=0xa42d20, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fff2e8cab10) at /usr/src/debug/kdeedu-4.6.0/build/kig/textlabelwizard.moc:74
#20 0x00007f76de05cdef in QMetaObject::activate (sender=0xb2e760, m=<value optimized out>, local_signal_index=<value optimized out>, argv=0x7fff2e8cab10) at kernel/qobject.cpp:3272
#21 0x00007f76df04fa32 in QAbstractButton::clicked (this=<value optimized out>, _t1=false) at .moc/release-shared/moc_qabstractbutton.cpp:206
#22 0x00007f76ded97d9b in QAbstractButtonPrivate::emitClicked (this=<value optimized out>) at widgets/qabstractbutton.cpp:546
#23 0x00007f76ded9935b in QAbstractButtonPrivate::click (this=0xa43b00) at widgets/qabstractbutton.cpp:539
#24 0x00007f76ded995cc in QAbstractButton::mouseReleaseEvent (this=0xb2e760, e=0x7fff2e8cb490) at widgets/qabstractbutton.cpp:1121
#25 0x00007f76dea36538 in QWidget::event (this=0xb2e760, event=0x7fff2e8cb490) at kernel/qwidget.cpp:8200
#26 0x00007f76de9e4d14 in QApplicationPrivate::notify_helper (this=0x64c0d0, receiver=0xb2e760, e=0x7fff2e8cb490) at kernel/qapplication.cpp:4445
#27 0x00007f76de9edaac in QApplication::notify (this=<value optimized out>, receiver=0xb2e760, e=0x7fff2e8cb490) at kernel/qapplication.cpp:4006
#28 0x00007f76df6449e6 in KApplication::notify (this=0x7fff2e8cd910, receiver=0xb2e760, event=0x7fff2e8cb490) at /usr/src/debug/kdelibs-4.6.0/kdeui/kernel/kapplication.cpp:311
#29 0x00007f76de047bfc in QCoreApplication::notifyInternal (this=0x7fff2e8cd910, receiver=0xb2e760, event=0x7fff2e8cb490) at kernel/qcoreapplication.cpp:732
#30 0x00007f76de9e5d25 in sendEvent (receiver=0xb2e760, event=0x7fff2e8cb490, alienWidget=0xb2e760, nativeWidget=0xa42d20, buttonDown=0x7f76df4b4178, lastMouseReceiver=..., spontaneous=true) at ../../src/corelib/kernel/qcoreapplication.h:215
#31 QApplicationPrivate::sendMouseEvent (receiver=0xb2e760, event=0x7fff2e8cb490, alienWidget=0xb2e760, nativeWidget=0xa42d20, buttonDown=0x7f76df4b4178, lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:3105
#32 0x00007f76dea63e08 in QETWidget::translateMouseEvent (this=0xa42d20, event=<value optimized out>) at kernel/qapplication_x11.cpp:4438
#33 0x00007f76dea624c9 in QApplication::x11ProcessEvent (this=0x7fff2e8cd910, event=0x7fff2e8cbdf0) at kernel/qapplication_x11.cpp:3564
#34 0x00007f76dea8a0f2 in x11EventSourceDispatch (s=0x64fb50, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#35 0x00007f76da237bd3 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#36 0x00007f76da2383b0 in ?? () from /lib64/libglib-2.0.so.0
#37 0x00007f76da238650 in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#38 0x00007f76de07291f in QEventDispatcherGlib::processEvents (this=0x619b00, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:422
#39 0x00007f76dea89d8e in QGuiEventDispatcherGlib::processEvents (this=<value optimized out>, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:204
#40 0x00007f76de047052 in QEventLoop::processEvents (this=<value optimized out>, flags=...) at kernel/qeventloop.cpp:149
#41 0x00007f76de047265 in QEventLoop::exec (this=0x7fff2e8cc110, flags=...) at kernel/qeventloop.cpp:201
#42 0x00007f76cfee46d3 in KigPart::runMode (this=0x8e2db0, m=0x7fff2e8cc160) at /usr/src/debug/kdeedu-4.6.0/kig/kig/kig_part.cpp:676
#43 0x00007f76cfe6b6a4 in ConstructTextLabelAction::act (this=<value optimized out>, d=...) at /usr/src/debug/kdeedu-4.6.0/kig/misc/guiaction.cc:195
#44 0x00007f76cfe6b796 in slotActivated (this=0x7c69b0, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=<value optimized out>) at /usr/src/debug/kdeedu-4.6.0/kig/misc/guiaction.cc:106
#45 KigGUIAction::qt_metacall (this=0x7c69b0, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=<value optimized out>) at /usr/src/debug/kdeedu-4.6.0/build/kig/guiaction.moc:72
#46 0x00007f76de05cdef in QMetaObject::activate (sender=0x7c69b0, m=<value optimized out>, local_signal_index=<value optimized out>, argv=0x7fff2e8cc2a0) at kernel/qobject.cpp:3272
#47 0x00007f76de9de982 in QAction::triggered (this=<value optimized out>, _t1=false) at .moc/release-shared/moc_qaction.cpp:263
#48 0x00007f76de9deb7a in QAction::activate (this=0x7c69b0, event=<value optimized out>) at kernel/qaction.cpp:1257
#49 0x00007f76ded9931a in QAbstractButtonPrivate::click (this=0x977440) at widgets/qabstractbutton.cpp:528
#50 0x00007f76ded995cc in QAbstractButton::mouseReleaseEvent (this=0x7d7f10, e=0x7fff2e8ccc30) at widgets/qabstractbutton.cpp:1121
#51 0x00007f76dee55a7a in QToolButton::mouseReleaseEvent (this=<value optimized out>, e=<value optimized out>) at widgets/qtoolbutton.cpp:721
#52 0x00007f76dea36538 in QWidget::event (this=0x7d7f10, event=0x7fff2e8ccc30) at kernel/qwidget.cpp:8200
#53 0x00007f76de9e4d14 in QApplicationPrivate::notify_helper (this=0x64c0d0, receiver=0x7d7f10, e=0x7fff2e8ccc30) at kernel/qapplication.cpp:4445
#54 0x00007f76de9edaac in QApplication::notify (this=<value optimized out>, receiver=0x7d7f10, e=0x7fff2e8ccc30) at kernel/qapplication.cpp:4006
#55 0x00007f76df6449e6 in KApplication::notify (this=0x7fff2e8cd910, receiver=0x7d7f10, event=0x7fff2e8ccc30) at /usr/src/debug/kdelibs-4.6.0/kdeui/kernel/kapplication.cpp:311
#56 0x00007f76de047bfc in QCoreApplication::notifyInternal (this=0x7fff2e8cd910, receiver=0x7d7f10, event=0x7fff2e8ccc30) at kernel/qcoreapplication.cpp:732
#57 0x00007f76de9e5d25 in sendEvent (receiver=0x7d7f10, event=0x7fff2e8ccc30, alienWidget=0x7d7f10, nativeWidget=0x973020, buttonDown=0x7f76df4b4178, lastMouseReceiver=..., spontaneous=true) at ../../src/corelib/kernel/qcoreapplication.h:215
#58 QApplicationPrivate::sendMouseEvent (receiver=0x7d7f10, event=0x7fff2e8ccc30, alienWidget=0x7d7f10, nativeWidget=0x973020, buttonDown=0x7f76df4b4178, lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:3105
#59 0x00007f76dea63e08 in QETWidget::translateMouseEvent (this=0x973020, event=<value optimized out>) at kernel/qapplication_x11.cpp:4438
#60 0x00007f76dea624c9 in QApplication::x11ProcessEvent (this=0x7fff2e8cd910, event=0x7fff2e8cd590) at kernel/qapplication_x11.cpp:3564
#61 0x00007f76dea8a0f2 in x11EventSourceDispatch (s=0x64fb50, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#62 0x00007f76da237bd3 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#63 0x00007f76da2383b0 in ?? () from /lib64/libglib-2.0.so.0
#64 0x00007f76da238650 in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#65 0x00007f76de07291f in QEventDispatcherGlib::processEvents (this=0x619b00, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:422
#66 0x00007f76dea89d8e in QGuiEventDispatcherGlib::processEvents (this=<value optimized out>, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:204
#67 0x00007f76de047052 in QEventLoop::processEvents (this=<value optimized out>, flags=...) at kernel/qeventloop.cpp:149
#68 0x00007f76de047265 in QEventLoop::exec (this=0x7fff2e8cd8b0, flags=...) at kernel/qeventloop.cpp:201
#69 0x00007f76de04b6ab in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1009
#70 0x0000000000408033 in main (argc=<value optimized out>, argv=<value optimized out>) at /usr/src/debug/kdeedu-4.6.0/kig/kig/main.cpp:141

Reported using DrKonqi
Comment 1 David E. Narvaez 2011-09-28 06:10:58 UTC
Thank you very much for this bug report! Sorry for the inconvenience.

I've just confirmed using latest development version of Kig and I'll be working on it. I'll let you know when I have more feedback on this.

David E. Narváez
Comment 2 David E. Narvaez 2011-10-04 04:01:10 UTC
Git commit 7301b06a30b994210e713950c8600e0f25558a80 by David E. Narváez.
Committed on 04/10/2011 at 05:57.
Pushed by narvaez into branch 'master'.

Avoid processing parameters if the number of arguments is not met

Changed the finished variable to finish, as I think is the way the code
was intended to be. Also fixes the second validation that took place
(calling canFinish in the finishPressed method) since first validation
happens in the validatePage method of the Arguments page.
FIXED-IN: 4.7.2
CCBUG: 282913
REVIEW: 102725

M  +2    -7    modes/label.cc
M  +5    -2    modes/textlabelwizard.cc

http://commits.kde.org/kig/7301b06a30b994210e713950c8600e0f25558a80
Comment 3 David E. Narvaez 2011-10-04 20:50:27 UTC
Err, this will be fixed in 4.7.3 as the patch didn't make it to the 4.7.2 release. Sorry for the inconvenience.
Comment 4 David E. Narvaez 2011-10-09 03:12:00 UTC
Git commit ead886e476ed8be103bbdb3cdc763c0f526f9206 by David E. Narváez.
Committed on 04/10/2011 at 05:57.
Pushed by narvaez into branch 'KDE/4.7'.

Avoid processing parameters if the number of arguments is not met

Changed the finished variable to finish, as I think is the way the code
was intended to be. Also fixes the second validation that took place
(calling canFinish in the finishPressed method) since first validation
happens in the validatePage method of the Arguments page.
FIXED-IN: 4.7.3
CCBUG: 282913
REVIEW: 102725

cherry-picked from 7301b06a30b994210e713950c8600e0f25558a80

M  +2    -7    modes/label.cc
M  +5    -2    modes/textlabelwizard.cc

http://commits.kde.org/kig/ead886e476ed8be103bbdb3cdc763c0f526f9206