the-butterfly-effect / tbe

The Butterfly Effect, a realistic physics simulation game
http://the-butterfly-effect.org
GNU General Public License v2.0
96 stars 13 forks source link

Trying to save level after adding things from toolbox crashes TBE #232

Open Wuzzy2 opened 8 years ago

Wuzzy2 commented 8 years ago

How to reproduce:

TBE crashes with this:

**** t=137: entry void MainWindow::on_action_Save_triggered()
ASSERT: "!isEmpty()" in file /usr/include/qt/QtCore/qlist.h, line 339

gdb backtrace:

Thread 1 "tbe" received signal SIGABRT, Aborted.
0x00007ffff566a295 in raise () from /usr/lib/libc.so.6
(gdb) bt
#0  0x00007ffff566a295 in raise () from /usr/lib/libc.so.6
#1  0x00007ffff566b6da in abort () from /usr/lib/libc.so.6
#2  0x00007ffff630bc61 in QMessageLogger::fatal(char const*, ...) const () from /usr/lib/libQt5Core.so.5
#3  0x00007ffff6306ebe in qt_assert(char const*, char const*, int) () from /usr/lib/libQt5Core.so.5
#4  0x00000000004b0090 in QList<std::shared_ptr<AbstractObject> >::last (this=0xce5fc0) at /usr/include/qt/QtCore/qlist.h:339
#5  0x00000000004aff94 in ToolboxGroup::last (this=0xce5fb0) at /home/wuzzy/src/tbe/tbe/src/control/ToolboxGroup.h:44
#6  0x00000000004c7e28 in ToolboxGroupSerializer::serialize (aDomDocument=..., aToolboxGroupPtr=0xce5fb0)
    at /home/wuzzy/src/tbe/tbe/src/loadsave/ToolboxGroupSerializer.cpp:117
#7  0x00000000004bffd9 in Level::save (this=0xcc15b0, aFileName=...) at /home/wuzzy/src/tbe/tbe/src/loadsave/Level.cpp:469
#8  0x0000000000525f26 in MainWindow::on_action_Save_triggered (this=0x7fffffffe040) at /home/wuzzy/src/tbe/tbe/src/view/MainWindow.cpp:295
#9  0x0000000000526431 in MainWindow::on_action_Save_As_triggered (this=0x7fffffffe040) at /home/wuzzy/src/tbe/tbe/src/view/MainWindow.cpp:325
#10 0x000000000054576c in MainWindow::qt_static_metacall (_o=0x7fffffffe040, _c=QMetaObject::InvokeMetaMethod, _id=18, _a=0x7fffffffd2c0)
    at /home/wuzzy/src/tbe/tbe/build/src/moc_MainWindow.cpp:289
#11 0x00000000005458e0 in MainWindow::qt_metacall (this=0x7fffffffe040, _c=QMetaObject::InvokeMetaMethod, _id=18, _a=0x7fffffffd2c0)
    at /home/wuzzy/src/tbe/tbe/build/src/moc_MainWindow.cpp:324
#12 0x00007ffff65273a7 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#13 0x00007ffff7219422 in QAction::triggered(bool) () from /usr/lib/libQt5Widgets.so.5
#14 0x00007ffff721c030 in QAction::activate(QAction::ActionEvent) () from /usr/lib/libQt5Widgets.so.5
#15 0x00007ffff731e5dd in ?? () from /usr/lib/libQt5Widgets.so.5
#16 0x00007ffff731e814 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/libQt5Widgets.so.5
#17 0x00007ffff73e6eaa in QToolButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/libQt5Widgets.so.5
#18 0x00007ffff7267298 in QWidget::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
#19 0x00007ffff73e6f89 in QToolButton::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
#20 0x00007ffff72227bc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#21 0x00007ffff7228727 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#22 0x00007ffff64fa280 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#23 0x00007ffff7226ee5 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) ()
   from /usr/lib/libQt5Widgets.so.5
#24 0x00007ffff72812c3 in ?? () from /usr/lib/libQt5Widgets.so.5
#25 0x00007ffff7283793 in ?? () from /usr/lib/libQt5Widgets.so.5
#26 0x00007ffff72227bc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#27 0x00007ffff722795f in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#28 0x00007ffff64fa280 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#29 0x00007ffff6a46693 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib/libQt5Gui.so.5
#30 0x00007ffff6a47ea5 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/libQt5Gui.so.5
#31 0x00007ffff6a2518b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Gui.so.5
#32 0x00007fffecd8c080 in ?? () from /usr/lib/libQt5XcbQpa.so.5
#33 0x00007ffff4cecdd7 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#34 0x00007ffff4ced040 in ?? () from /usr/lib/libglib-2.0.so.0
#35 0x00007ffff4ced0ec in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#36 0x00007ffff65506cf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#37 0x00007ffff64f846a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#38 0x00007ffff6500a0c in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
#39 0x00000000004caafa in main (argc=1, argv=0x7fffffffe428) at /home/wuzzy/src/tbe/tbe/src/main.cpp:290

Revision: f973aa28a0130b8c0eb139c0746358c8381b7b9f

kaa-ching commented 8 years ago

Actually this is what is preventing #231 from being done immediately.