Bug 325249 - Crash on generating code
Summary: Crash on generating code
Status: RESOLVED FIXED
Alias: None
Product: umbrello
Classification: Applications
Component: general (show other bugs)
Version: 2.11.1
Platform: Ubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: Joris Steyn
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2013-09-24 12:02 UTC by Gerald Senarclens de Grancy
Modified: 2013-11-12 21:37 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In: 4.11.3
Sentry Crash Report:


Attachments
(nonsensical) xmi file reproducing the crasher (821.00 KB, text/x-xmi)
2013-09-28 13:43 UTC, Gerald Senarclens de Grancy
Details
Fix potential crash on code generation (916 bytes, patch)
2013-09-29 10:09 UTC, Joris Steyn
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Gerald Senarclens de Grancy 2013-09-24 12:02:25 UTC
Application: umbrello (2.11.1)
KDE Platform Version: 4.11.1
Qt Version: 4.8.4
Operating System: Linux 3.8.0-30-generic x86_64
Distribution: Ubuntu 13.04

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

Used the Code generation wizard for C++. In the last step, I hit the generate button an umbrello crashed (tried three times in a row). If the project's .xmi file is needed, I can attach it to this report.

The crash can be reproduced every time.

-- Backtrace:
Application: Umbrello UML Modeller (umbrello), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7ff2436217c0 (LWP 16729))]

Thread 3 (Thread 0x7ff232140700 (LWP 16730)):
#0  0x00007ff2413c7a9c in qt_gettime () at tools/qelapsedtimer_unix.cpp:146
#1  0x00007ff24149d9ed in QTimerInfoList::updateCurrentTime (this=this@entry=0x7ff22c002860) at kernel/qeventdispatcher_unix.cpp:354
#2  0x00007ff24149dd33 in QTimerInfoList::timerWait (this=0x7ff22c002860, tm=...) at kernel/qeventdispatcher_unix.cpp:461
#3  0x00007ff24149c79c in timerSourcePrepareHelper (src=<optimized out>, timeout=0x7ff23213fbc4) at kernel/qeventdispatcher_glib.cpp:136
#4  0x00007ff24149c845 in timerSourcePrepare (source=<optimized out>, timeout=<optimized out>) at kernel/qeventdispatcher_glib.cpp:169
#5  0x00007ff23c8e2900 in g_main_context_prepare () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#6  0x00007ff23c8e30fe in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#7  0x00007ff23c8e3304 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#8  0x00007ff24149d036 in QEventDispatcherGlib::processEvents (this=0x7ff22c0008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#9  0x00007ff24146d38f in QEventLoop::processEvents (this=this@entry=0x7ff23213fd90, flags=...) at kernel/qeventloop.cpp:149
#10 0x00007ff24146d618 in QEventLoop::exec (this=this@entry=0x7ff23213fd90, flags=...) at kernel/qeventloop.cpp:204
#11 0x00007ff24136f410 in QThread::exec (this=this@entry=0x1869090) at thread/qthread.cpp:542
#12 0x00007ff24144eedf in QInotifyFileSystemWatcherEngine::run (this=0x1869090) at io/qfilesystemwatcher_inotify.cpp:256
#13 0x00007ff241371bec in QThreadPrivate::start (arg=0x1869090) at thread/qthread_unix.cpp:338
#14 0x00007ff23f84df8e in start_thread (arg=0x7ff232140700) at pthread_create.c:311
#15 0x00007ff23fb5ce1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 2 (Thread 0x7ff229c76700 (LWP 16758)):
#0  0x00007ff23fb4eb0d in read () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007ff23c9216cf in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007ff23c8e2d3c in g_main_context_check () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ff23c8e3175 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007ff23c8e3304 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007ff24149d036 in QEventDispatcherGlib::processEvents (this=0x7ff2240008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#6  0x00007ff24146d38f in QEventLoop::processEvents (this=this@entry=0x7ff229c75d90, flags=...) at kernel/qeventloop.cpp:149
#7  0x00007ff24146d618 in QEventLoop::exec (this=this@entry=0x7ff229c75d90, flags=...) at kernel/qeventloop.cpp:204
#8  0x00007ff24136f410 in QThread::exec (this=this@entry=0x2a1bd20) at thread/qthread.cpp:542
#9  0x00007ff24144eedf in QInotifyFileSystemWatcherEngine::run (this=0x2a1bd20) at io/qfilesystemwatcher_inotify.cpp:256
#10 0x00007ff241371bec in QThreadPrivate::start (arg=0x2a1bd20) at thread/qthread_unix.cpp:338
#11 0x00007ff23f84df8e in start_thread (arg=0x7ff229c76700) at pthread_create.c:311
#12 0x00007ff23fb5ce1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 1 (Thread 0x7ff2436217c0 (LWP 16729)):
[KCrash Handler]
#6  CodeGenerator::findCodeDocumentByClassifier (this=this@entry=0x315f6b0, classifier=classifier@entry=0x0) at ../../umbrello/codegenerators/codegenerator.cpp:382
#7  0x0000000000581e6d in CPPCodeGenerator::writeCodeToFile (this=0x315f6b0, concepts=...) at ../../umbrello/codegenerators/cpp/cppcodegenerator.cpp:247
#8  0x00000000004ae18d in CodeGenStatusPage::generateCode (this=0x2779e70) at ../../umbrello/codegenwizard/codegenstatuspage.cpp:124
#9  0x00007ff2414830ef in QMetaObject::activate (sender=sender@entry=0x321d180, m=m@entry=0x7ff2412dfca0 <QAbstractButton::staticMetaObject>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7fff4078f2e0) at kernel/qobject.cpp:3539
#10 0x00007ff240e7fdf2 in QAbstractButton::clicked (this=this@entry=0x321d180, _t1=false) at .moc/release-shared/moc_qabstractbutton.cpp:220
#11 0x00007ff240bd33ae in QAbstractButtonPrivate::emitClicked (this=this@entry=0x2494b80) at widgets/qabstractbutton.cpp:548
#12 0x00007ff240bd3ba0 in QAbstractButtonPrivate::click (this=this@entry=0x2494b80) at widgets/qabstractbutton.cpp:541
#13 0x00007ff240bd3e0c in QAbstractButton::mouseReleaseEvent (this=0x321d180, e=0x7fff4078fb80) at widgets/qabstractbutton.cpp:1123
#14 0x00007ff240861a89 in QWidget::event (this=0x321d180, event=0x7fff4078fb80) at kernel/qwidget.cpp:8375
#15 0x00007ff2408148ec in QApplicationPrivate::notify_helper (this=this@entry=0x16df080, receiver=receiver@entry=0x321d180, e=e@entry=0x7fff4078fb80) at kernel/qapplication.cpp:4567
#16 0x00007ff240817a33 in QApplication::notify (this=this@entry=0x7fff40792230, receiver=receiver@entry=0x321d180, e=e@entry=0x7fff4078fb80) at kernel/qapplication.cpp:4110
#17 0x00007ff24210b916 in KApplication::notify (this=0x7fff40792230, receiver=0x321d180, event=0x7fff4078fb80) at ../../kdeui/kernel/kapplication.cpp:311
#18 0x00007ff24146e63e in QCoreApplication::notifyInternal (this=0x7fff40792230, receiver=receiver@entry=0x321d180, event=event@entry=0x7fff4078fb80) at kernel/qcoreapplication.cpp:946
#19 0x00007ff24081a933 in sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#20 QApplicationPrivate::sendMouseEvent (receiver=receiver@entry=0x321d180, event=event@entry=0x7fff4078fb80, alienWidget=alienWidget@entry=0x321d180, nativeWidget=nativeWidget@entry=0x2779e70, buttonDown=buttonDown@entry=0x7ff2412f2308 <qt_button_down>, lastMouseReceiver=..., spontaneous=spontaneous@entry=true) at kernel/qapplication.cpp:3178
#21 0x00007ff24088fe54 in QETWidget::translateMouseEvent (this=this@entry=0x2779e70, event=event@entry=0x7fff40790300) at kernel/qapplication_x11.cpp:4631
#22 0x00007ff24088ee81 in QApplication::x11ProcessEvent (this=0x7fff40792230, event=event@entry=0x7fff40790300) at kernel/qapplication_x11.cpp:3746
#23 0x00007ff2408ba042 in x11EventSourceDispatch (s=0x16cc310, callback=0x0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#24 0x00007ff23c8e2f05 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#25 0x00007ff23c8e3248 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#26 0x00007ff23c8e3304 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#27 0x00007ff24149d016 in QEventDispatcherGlib::processEvents (this=0x16a7760, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#28 0x00007ff2408ba13e in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#29 0x00007ff24146d38f in QEventLoop::processEvents (this=this@entry=0x7fff407906e0, flags=...) at kernel/qeventloop.cpp:149
#30 0x00007ff24146d618 in QEventLoop::exec (this=this@entry=0x7fff407906e0, flags=...) at kernel/qeventloop.cpp:204
#31 0x00007ff240ccf338 in QDialog::exec (this=0x325d980) at dialogs/qdialog.cpp:554
#32 0x000000000072a8c2 in UMLApp::slotExecGenerationWizard (this=<optimized out>) at ../../umbrello/uml.cpp:2187
#33 0x00007ff2414830ef in QMetaObject::activate (sender=sender@entry=0x191ce10, m=m@entry=0x7ff2412b67a0 <QAction::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x7fff40790880) at kernel/qobject.cpp:3539
#34 0x00007ff24080e152 in QAction::triggered (this=this@entry=0x191ce10, _t1=false) at .moc/release-shared/moc_qaction.cpp:277
#35 0x00007ff24080f580 in QAction::activate (this=this@entry=0x191ce10, event=event@entry=QAction::Trigger) at kernel/qaction.cpp:1257
#36 0x00007ff240c4daa3 in QMenuPrivate::activateCausedStack (this=this@entry=0x18d10b0, causedStack=..., action=action@entry=0x191ce10, action_e=action_e@entry=QAction::Trigger, self=self@entry=true) at widgets/qmenu.cpp:1038
#37 0x00007ff240c52d69 in QMenuPrivate::activateAction (this=0x18d10b0, action=0x191ce10, action_e=action_e@entry=QAction::Trigger, self=self@entry=true) at widgets/qmenu.cpp:1130
#38 0x00007ff240c5685d in QMenu::mouseReleaseEvent (this=this@entry=0x18cff50, e=e@entry=0x7fff40791420) at widgets/qmenu.cpp:2372
#39 0x00007ff2421c26a0 in KMenu::mouseReleaseEvent (this=0x18cff50, e=0x7fff40791420) at ../../kdeui/widgets/kmenu.cpp:464
#40 0x00007ff240861a89 in QWidget::event (this=this@entry=0x18cff50, event=event@entry=0x7fff40791420) at kernel/qwidget.cpp:8375
#41 0x00007ff240c5454b in QMenu::event (this=0x18cff50, e=0x7fff40791420) at widgets/qmenu.cpp:2481
#42 0x00007ff2408148ec in QApplicationPrivate::notify_helper (this=this@entry=0x16df080, receiver=receiver@entry=0x18cff50, e=e@entry=0x7fff40791420) at kernel/qapplication.cpp:4567
#43 0x00007ff240817a33 in QApplication::notify (this=this@entry=0x7fff40792230, receiver=receiver@entry=0x18cff50, e=e@entry=0x7fff40791420) at kernel/qapplication.cpp:4110
#44 0x00007ff24210b916 in KApplication::notify (this=0x7fff40792230, receiver=0x18cff50, event=0x7fff40791420) at ../../kdeui/kernel/kapplication.cpp:311
#45 0x00007ff24146e63e in QCoreApplication::notifyInternal (this=0x7fff40792230, receiver=receiver@entry=0x18cff50, event=event@entry=0x7fff40791420) at kernel/qcoreapplication.cpp:946
#46 0x00007ff24081a933 in sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#47 QApplicationPrivate::sendMouseEvent (receiver=0x18cff50, event=event@entry=0x7fff40791420, alienWidget=0x0, nativeWidget=nativeWidget@entry=0x18cff50, buttonDown=buttonDown@entry=0x7ff2412f2308 <qt_button_down>, lastMouseReceiver=..., spontaneous=spontaneous@entry=true) at kernel/qapplication.cpp:3178
#48 0x00007ff24088fd1c in QETWidget::translateMouseEvent (this=this@entry=0x18cff50, event=event@entry=0x7fff40791ba0) at kernel/qapplication_x11.cpp:4565
#49 0x00007ff24088ee81 in QApplication::x11ProcessEvent (this=0x7fff40792230, event=event@entry=0x7fff40791ba0) at kernel/qapplication_x11.cpp:3746
#50 0x00007ff2408ba042 in x11EventSourceDispatch (s=0x16cc310, callback=0x0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#51 0x00007ff23c8e2f05 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#52 0x00007ff23c8e3248 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#53 0x00007ff23c8e3304 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#54 0x00007ff24149d016 in QEventDispatcherGlib::processEvents (this=0x16a7760, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#55 0x00007ff2408ba13e in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#56 0x00007ff24146d38f in QEventLoop::processEvents (this=this@entry=0x7fff40791f70, flags=...) at kernel/qeventloop.cpp:149
#57 0x00007ff24146d618 in QEventLoop::exec (this=this@entry=0x7fff40791f70, flags=...) at kernel/qeventloop.cpp:204
#58 0x00007ff241472cf6 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1218
#59 0x00007ff240812ffc in QApplication::exec () at kernel/qapplication.cpp:3828
#60 0x000000000043885b in main (argc=3, argv=0x7fff40792388) at ../../umbrello/main.cpp:111

Reported using DrKonqi
Comment 1 Joris Steyn 2013-09-27 16:05:18 UTC
Could you attach the XMI that triggers this behaviour?
Comment 2 Gerald Senarclens de Grancy 2013-09-28 13:43:23 UTC
Created attachment 82524 [details]
(nonsensical) xmi file reproducing the crasher

Added nonsensical xmi file that reproduces the crasher. The file is entirely generated by umbrello and was never hand-modified (not sure how it ended up the way it is, but it reproduces the crasher).

In order to reproduce,
1 open the attached mini.xmi file
2 go to settings->configure umbrello...
3 in the general tab, under 'miscellaneous' select "use new c++/java/ruby generators"
4 save the file and close umbrello (couldn't reproduce the crash w/out closing umbrello after changing the above setting).
5 start umbrello and open mini.xmi
6 go to code->code generation wizard
7 remove all items but std::list<Cluster*>::iterator
8 hit next 'twice' and then 'generate'

expected:
- something (or nothing) is generated or message about the xmi file being nonsense

actual:
- crash
Comment 3 Joris Steyn 2013-09-29 10:09:29 UTC
Created attachment 82537 [details]
Fix potential crash on code generation

Indeed I can't make sense out of this one. However, proposed patch makes Umbrello log an error instead of crashing.