Bug 330405 - Crash during exit on LabPlot 2.0
Summary: Crash during exit on LabPlot 2.0
Status: RESOLVED FIXED
Alias: None
Product: LabPlot2
Classification: Applications
Component: general (show other bugs)
Version: 2.0.0.beta2
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: Alexander Semke
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2014-01-25 18:57 UTC by rgb.mldc
Modified: 2014-02-01 07:01 UTC (History)
1 user (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description rgb.mldc 2014-01-25 18:57:17 UTC
Application: labplot2 (2.0.0.beta2)
KDE Platform Version: 4.10.5 "release 1"
Qt Version: 4.8.4
Operating System: Linux 3.7.10-1.24-desktop x86_64
Distribution: "openSUSE 12.3 (x86_64)"

-- Information about the crash:
The program crash on exit, no matter if the work was saved or not.

The crash can be reproduced every time.

-- Backtrace:
Application: LabPlot2 (labplot2), signal: Aborted
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f2033855780 (LWP 2519))]

Thread 2 (Thread 0x7f202d10c700 (LWP 2630)):
#0  0x00007f203ab814ed in poll () from /lib64/libc.so.6
#1  0x00007f2036e79aa4 in ?? () from /usr/lib64/libglib-2.0.so.0
#2  0x00007f2036e79bc4 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#3  0x00007f203c50f2e6 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#4  0x00007f203c4dfadf in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#5  0x00007f203c4dfd68 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#6  0x00007f203c3e20f0 in QThread::exec() () from /usr/lib64/libQtCore.so.4
#7  0x00007f203c4c029f in ?? () from /usr/lib64/libQtCore.so.4
#8  0x00007f203c3e50cc in ?? () from /usr/lib64/libQtCore.so.4
#9  0x00007f2038c0de0f in start_thread () from /lib64/libpthread.so.0
#10 0x00007f203ab8a44d in clone () from /lib64/libc.so.6

Thread 1 (Thread 0x7f2033855780 (LWP 2519)):
[KCrash Handler]
#5  0x00007f203aad63d5 in raise () from /lib64/libc.so.6
#6  0x00007f203aad7858 in abort () from /lib64/libc.so.6
#7  0x00007f203ab1644b in __libc_message () from /lib64/libc.so.6
#8  0x00007f203ab1bfc6 in malloc_printerr () from /lib64/libc.so.6
#9  0x00007f203ab1cd43 in _int_free () from /lib64/libc.so.6
#10 0x00007f203c4f733c in QObject::~QObject() () from /usr/lib64/libQtCore.so.4
#11 0x00007f203b899129 in QHBoxLayout::~QHBoxLayout() () from /usr/lib64/libQtGui.so.4
#12 0x00007f203b8d428f in QWidget::~QWidget() () from /usr/lib64/libQtGui.so.4
#13 0x00007f203b8d4719 in QWidget::~QWidget() () from /usr/lib64/libQtGui.so.4
#14 0x00007f203c4f34c2 in QObjectPrivate::deleteChildren() () from /usr/lib64/libQtCore.so.4
#15 0x00007f203b8d43cc in QWidget::~QWidget() () from /usr/lib64/libQtGui.so.4
#16 0x00007f203bcde749 in QStackedWidget::~QStackedWidget() () from /usr/lib64/libQtGui.so.4
#17 0x00007f203c4f34c2 in QObjectPrivate::deleteChildren() () from /usr/lib64/libQtCore.so.4
#18 0x00007f203b8d43cc in QWidget::~QWidget() () from /usr/lib64/libQtGui.so.4
#19 0x00007f203bce9da9 in QTabWidget::~QTabWidget() () from /usr/lib64/libQtGui.so.4
#20 0x00007f203c4f34c2 in QObjectPrivate::deleteChildren() () from /usr/lib64/libQtCore.so.4
#21 0x00007f203b8d43cc in QWidget::~QWidget() () from /usr/lib64/libQtGui.so.4
#22 0x000000000048c858 in CartesianPlotDock::~CartesianPlotDock() ()
#23 0x00007f203c4f34c2 in QObjectPrivate::deleteChildren() () from /usr/lib64/libQtCore.so.4
#24 0x00007f203b8d43cc in QWidget::~QWidget() () from /usr/lib64/libQtGui.so.4
#25 0x00007f203bcde749 in QStackedWidget::~QStackedWidget() () from /usr/lib64/libQtGui.so.4
#26 0x00007f203c4f34c2 in QObjectPrivate::deleteChildren() () from /usr/lib64/libQtCore.so.4
#27 0x00007f203b8d43cc in QWidget::~QWidget() () from /usr/lib64/libQtGui.so.4
#28 0x00007f203bc70319 in QDockWidget::~QDockWidget() () from /usr/lib64/libQtGui.so.4
#29 0x00007f203c4f34c2 in QObjectPrivate::deleteChildren() () from /usr/lib64/libQtCore.so.4
#30 0x00007f203b8d43cc in QWidget::~QWidget() () from /usr/lib64/libQtGui.so.4
#31 0x00007f203db0c2f7 in KMainWindow::~KMainWindow() () from /usr/lib64/libkdeui.so.5
#32 0x000000000049265f in MainWin::~MainWin() ()
#33 0x0000000000492729 in MainWin::~MainWin() ()
#34 0x00007f203c4f57a8 in QObject::event(QEvent*) () from /usr/lib64/libQtCore.so.4
#35 0x00007f203b8d988a in QWidget::event(QEvent*) () from /usr/lib64/libQtGui.so.4
#36 0x00007f203bc9e4fb in QMainWindow::event(QEvent*) () from /usr/lib64/libQtGui.so.4
#37 0x00007f203db47748 in KXmlGuiWindow::event(QEvent*) () from /usr/lib64/libkdeui.so.5
#38 0x00007f203b88a86c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#39 0x00007f203b88eceb in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#40 0x00007f203da557f6 in KApplication::notify(QObject*, QEvent*) () from /usr/lib64/libkdeui.so.5
#41 0x00007f203c4e0d8e in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/libQtCore.so.4
#42 0x00007f203c4e46f1 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib64/libQtCore.so.4
#43 0x00007f203c50f133 in ?? () from /usr/lib64/libQtCore.so.4
#44 0x00007f2036e797d5 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#45 0x00007f2036e79b08 in ?? () from /usr/lib64/libglib-2.0.so.0
#46 0x00007f2036e79bc4 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#47 0x00007f203c50f2c6 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#48 0x00007f203b92ac1e in ?? () from /usr/lib64/libQtGui.so.4
#49 0x00007f203c4dfadf in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#50 0x00007f203c4dfd68 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#51 0x00007f203c4e4a08 in QCoreApplication::exec() () from /usr/lib64/libQtCore.so.4
#52 0x000000000048029b in main ()

Reported using DrKonqi
Comment 1 rgb.mldc 2014-01-25 19:03:21 UTC
Note: even if the report says version 2.0 beta, the report is for LabPlot 2.0 final (the report system do not offer version 2 final as a choice)
Comment 2 Jekyll Wu 2014-01-26 01:27:42 UTC
(In reply to comment #1)
> Note: even if the report says version 2.0 beta, the report is for LabPlot
> 2.0 final (the report system do not offer version 2 final as a choice)

Dr.Konqi (usually) wouldn't lie. If the report says the version is '2.0.0-beta2', then it is . Maybe the maintainer forgets to bump version in the source code before making the final release.
Comment 3 Alexander Semke 2014-01-26 06:38:51 UTC
We forgot to adjust the version string in one place. So, the final release (v.2.0.0) is currently presented as 2.0.0beta2.
With the final version I don't observe any crashes on openSUSE 12.1 and 13.1. Are you sure you've downloaded the final release?
Comment 4 rgb.mldc 2014-01-26 10:48:27 UTC
I got this version from Education repository, reported as version 2.0.0-2.1. A couple of days ago, that repo offered 2.0.0beta2. 

I changed version to the one offered by Science repo and it seems the crash disappeared (version 2.0.0-1.1. 

I'll do more testing later today and report back.
Comment 5 rgb.mldc 2014-01-26 18:21:14 UTC
I did some more testing. If I start LabPlot → New → New spreadsheet → type some data → New Worksheet → New xy-plot → box plot, two axes → new xy-curve → Select the data ranges → Save the document (not saving is the same) → close the window (File → Quit or with the cross on the window decoration) → Accept → Crash. Closing the document first and then quitting gives the same problem.

But this only happens with NEW documents: opening an existing document, editing it and saving does NOT give the crash on exit.
Comment 6 Alexander Semke 2014-01-26 21:44:53 UTC
Thank you a lot for testing and giving LabPlot a try. 
I still cannot reproduce the crash. Do you always get the same call stack as reported in you first post?
Comment 7 rgb.mldc 2014-01-26 22:03:42 UTC
(In reply to comment #6)
> Thank you a lot for testing and giving LabPlot a try. 
> I still cannot reproduce the crash. Do you always get the same call stack as
> reported in you first post?

Yes. I mean, the hexadecimal codes on each lines differ a bit ("#0  0x00007f076e7404ed in poll () from /lib64/libc.so.6" instead of "#0 0x00007f203ab814ed in poll () from /lib64/libc.so.6", for example), but all the libraries and calls are the same and are presented on the same order.
Comment 8 Stefan Gerlach 2014-01-28 21:39:30 UTC
Hi,

i can reproduce the crash on openSUSE 12.2. 
I see a
"*** glibc detected *** labplot2: free(): invalid next size (normal): 0x0000000002b759a0 ***"
so something seems to be wrong with the memory management.
Comment 9 Stefan Gerlach 2014-01-28 21:56:17 UTC
valgrind gives the following errors. Maybe it helps finding the bug.

==31625== Invalid write of size 4
==31625==    at 0x754D564: QGridLayout::setHorizontalSpacing(int) (in /usr/lib64/libQtGui.so.4.8.1)
==31625==    by 0x4CC62E: CartesianPlotDock::CartesianPlotDock(QWidget*) (CartesianPlotDock.cpp:82)
==31625==    by 0x49A5B7: GuiObserver::selectedAspectsChanged(QList<AbstractAspect*>&) (GuiObserver.cpp:168)
==31625==    by 0x4974AA: GuiObserver::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (moc_GuiObserver.cpp:52)
==31625==    by 0x6DF1F5E: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.8.1)
==31625==    by 0x48DCA6: ProjectExplorer::selectedAspectsChanged(QList<AbstractAspect*>&) (moc_ProjectExplorer.cpp:161)
==31625==    by 0x5CDF9B: ProjectExplorer::selectionChanged(QItemSelection const&, QItemSelection const&) (ProjectExplorer.cpp:473)
==31625==    by 0x48DAC6: ProjectExplorer::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (moc_ProjectExplorer.cpp:102)
==31625==    by 0x6DF1F5E: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.8.1)
==31625==    by 0x7A86C16: QItemSelectionModel::selectionChanged(QItemSelection const&, QItemSelection const&) (in /usr/lib64/libQtGui.so.4.8.1)
==31625==    by 0x7A8BD8C: QItemSelectionModel::emitSelectionChanged(QItemSelection const&, QItemSelection const&) (in /usr/lib64/libQtGui.so.4.8.1)
==31625==    by 0x7A8CA7B: QItemSelectionModel::select(QItemSelection const&, QFlags<QItemSelectionModel::SelectionFlag>) (in /usr/lib64/libQtGui.so.4.8.1)
==31625==  Address 0xf8e788c is 4 bytes after a block of size 280 alloc'd
==31625==    at 0x4C2A6E7: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==31625==    by 0x753938A: QBoxLayout::QBoxLayout(QBoxLayout::Direction, QWidget*) (in /usr/lib64/libQtGui.so.4.8.1)
==31625==    by 0x7539ECD: QHBoxLayout::QHBoxLayout(QWidget*) (in /usr/lib64/libQtGui.so.4.8.1)
==31625==    by 0x4CC565: CartesianPlotDock::CartesianPlotDock(QWidget*) (CartesianPlotDock.cpp:71)
==31625==    by 0x49A5B7: GuiObserver::selectedAspectsChanged(QList<AbstractAspect*>&) (GuiObserver.cpp:168)
==31625==    by 0x4974AA: GuiObserver::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (moc_GuiObserver.cpp:52)
==31625==    by 0x6DF1F5E: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.8.1)
==31625==    by 0x48DCA6: ProjectExplorer::selectedAspectsChanged(QList<AbstractAspect*>&) (moc_ProjectExplorer.cpp:161)
==31625==    by 0x5CDF9B: ProjectExplorer::selectionChanged(QItemSelection const&, QItemSelection const&) (ProjectExplorer.cpp:473)
==31625==    by 0x48DAC6: ProjectExplorer::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (moc_ProjectExplorer.cpp:102)
==31625==    by 0x6DF1F5E: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.8.1)
==31625==    by 0x7A86C16: QItemSelectionModel::selectionChanged(QItemSelection const&, QItemSelection const&) (in /usr/lib64/libQtGui.so.4.8.1)
==31625== 
==31625== Invalid write of size 4
==31625==    at 0x754D5A4: QGridLayout::setVerticalSpacing(int) (in /usr/lib64/libQtGui.so.4.8.1)
==31625==    by 0x4CC63F: CartesianPlotDock::CartesianPlotDock(QWidget*) (CartesianPlotDock.cpp:83)
==31625==    by 0x49A5B7: GuiObserver::selectedAspectsChanged(QList<AbstractAspect*>&) (GuiObserver.cpp:168)
==31625==    by 0x4974AA: GuiObserver::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (moc_GuiObserver.cpp:52)
==31625==    by 0x6DF1F5E: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.8.1)
==31625==    by 0x48DCA6: ProjectExplorer::selectedAspectsChanged(QList<AbstractAspect*>&) (moc_ProjectExplorer.cpp:161)
==31625==    by 0x5CDF9B: ProjectExplorer::selectionChanged(QItemSelection const&, QItemSelection const&) (ProjectExplorer.cpp:473)
==31625==    by 0x48DAC6: ProjectExplorer::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (moc_ProjectExplorer.cpp:102)
==31625==    by 0x6DF1F5E: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.8.1)
==31625==    by 0x7A86C16: QItemSelectionModel::selectionChanged(QItemSelection const&, QItemSelection const&) (in /usr/lib64/libQtGui.so.4.8.1)
==31625==    by 0x7A8BD8C: QItemSelectionModel::emitSelectionChanged(QItemSelection const&, QItemSelection const&) (in /usr/lib64/libQtGui.so.4.8.1)
==31625==    by 0x7A8CA7B: QItemSelectionModel::select(QItemSelection const&, QFlags<QItemSelectionModel::SelectionFlag>) (in /usr/lib64/libQtGui.so.4.8.1)
==31625==  Address 0xf8e7890 is 8 bytes after a block of size 280 alloc'd
==31625==    at 0x4C2A6E7: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==31625==    by 0x753938A: QBoxLayout::QBoxLayout(QBoxLayout::Direction, QWidget*) (in /usr/lib64/libQtGui.so.4.8.1)
==31625==    by 0x7539ECD: QHBoxLayout::QHBoxLayout(QWidget*) (in /usr/lib64/libQtGui.so.4.8.1)
==31625==    by 0x4CC565: CartesianPlotDock::CartesianPlotDock(QWidget*) (CartesianPlotDock.cpp:71)
==31625==    by 0x49A5B7: GuiObserver::selectedAspectsChanged(QList<AbstractAspect*>&) (GuiObserver.cpp:168)
==31625==    by 0x4974AA: GuiObserver::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (moc_GuiObserver.cpp:52)
==31625==    by 0x6DF1F5E: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.8.1)
==31625==    by 0x48DCA6: ProjectExplorer::selectedAspectsChanged(QList<AbstractAspect*>&) (moc_ProjectExplorer.cpp:161)
==31625==    by 0x5CDF9B: ProjectExplorer::selectionChanged(QItemSelection const&, QItemSelection const&) (ProjectExplorer.cpp:473)
==31625==    by 0x48DAC6: ProjectExplorer::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (moc_ProjectExplorer.cpp:102)
==31625==    by 0x6DF1F5E: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.8.1)
==31625==    by 0x7A86C16: QItemSelectionModel::selectionChanged(QItemSelection const&, QItemSelection const&) (in /usr/lib64/libQtGui.so.4.8.1)
==31625==
Comment 10 Alexander Semke 2014-01-28 22:19:09 UTC
Hallo Stefan,

ich habe den Bug gefunden, korrigiere ihn gleich.
Warum hat valgring bei mir nix gemeldet?...

Viele Grüße
ich
Comment 11 Alexander Semke 2014-01-28 22:38:46 UTC
I commited a fix for this problem. Can you checkout the current code from our sourceforge repository as described here http://labplot.sourceforge.net/download/, compile and test it again?
Comment 12 Stefan Gerlach 2014-01-29 11:02:14 UTC
Hi,

it is fixed for me.
Comment 13 Alexander Semke 2014-02-01 07:01:27 UTC
Fixed in v2.0.1