| Summary: | Application crashes when closing intentionally | ||
|---|---|---|---|
| Product: | [Applications] parley | Reporter: | raubtier |
| Component: | general | Assignee: | parley bug tracker <parley-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | CC: | billcrawford1970, hartmut.riesenbeck, rootkea |
| Priority: | NOR | Keywords: | drkonqi |
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | openSUSE | ||
| OS: | Linux | ||
| Latest Commit: | https://invent.kde.org/education/parley/commit/e06375db7b71d4b0216e02bea9595da0cd5fc9b8 | Version Fixed/Implemented In: | 20.12.0 |
| Sentry Crash Report: | |||
|
Description
raubtier
2020-04-19 12:48:34 UTC
A possibly relevant merge request was started @ https://invent.kde.org/education/parley/-/merge_requests/4 Git commit a7cff050be34b49623f54915f0271e0a847b3abf by Hartmut Riesenbeck. Committed on 10/11/2020 at 20:30. Pushed by aacid into branch 'master'. Fix segfault when leaving statistics main window Reproducible segfault when leaving statistics main window with unsaved changes and clicking on save in the query dialog. The segfault is thrown by KEduVocDocument pointer access which was deleted before during destruction of StatisticsMainWindow. Both document and widget are destructed by deleteLater. With the conditions mentioned above the order of destruction becomes to the document deleted first which leads to the segfault. The fix is done by changing the pointer for KEduVocDocument to a shared pointer which was not deleted until the last using class is deleted. M +0 -1 src/collection/containermodel.cpp M +1 -2 src/collection/readonlycontainermodel.cpp M +4 -2 src/collection/readonlycontainermodel.h M +7 -7 src/editor/editor.cpp M +1 -1 src/editor/editor.h M +3 -3 src/editor/inflectionwidget.cpp M +4 -2 src/editor/inflectionwidget.h M +2 -2 src/editor/summarywordwidget.cpp M +5 -3 src/editor/summarywordwidget.h M +2 -2 src/editor/vocabularydelegate.cpp M +2 -2 src/editor/vocabularydelegate.h M +3 -3 src/editor/vocabularyview.cpp M +3 -2 src/editor/vocabularyview.h M +18 -27 src/parleydocument.cpp M +4 -3 src/parleydocument.h M +7 -7 src/parleymainwindow.cpp M +1 -1 src/parleymainwindow.h M +6 -6 src/practice/practicestatemachine.cpp M +1 -1 src/scripts/scripting/parley.cpp M +2 -2 src/statistics/lessonstatisticsview.cpp M +5 -4 src/statistics/statisticsmainwindow.cpp M +5 -3 src/statistics/statisticsmainwindow.h M +3 -3 src/statistics/statisticsmodel.cpp M +2 -2 src/statistics/statisticsmodel.h https://invent.kde.org/education/parley/commit/a7cff050be34b49623f54915f0271e0a847b3abf Git commit ad449a1e78de2f320afa4e02a9598e077850cf42 by Albert Astals Cid, on behalf of Hartmut Riesenbeck. Committed on 11/11/2020 at 22:15. Pushed by aacid into branch 'release/20.12'. Fix segfault when leaving statistics main window Reproducible segfault when leaving statistics main window with unsaved changes and clicking on save in the query dialog. The segfault is thrown by KEduVocDocument pointer access which was deleted before during destruction of StatisticsMainWindow. Both document and widget are destructed by deleteLater. With the conditions mentioned above the order of destruction becomes to the document deleted first which leads to the segfault. The fix is done by changing the pointer for KEduVocDocument to a shared pointer which was not deleted until the last using class is deleted. (cherry picked from commit a7cff050be34b49623f54915f0271e0a847b3abf) M +0 -1 src/collection/containermodel.cpp M +1 -2 src/collection/readonlycontainermodel.cpp M +4 -2 src/collection/readonlycontainermodel.h M +7 -7 src/editor/editor.cpp M +1 -1 src/editor/editor.h M +3 -3 src/editor/inflectionwidget.cpp M +4 -2 src/editor/inflectionwidget.h M +2 -2 src/editor/summarywordwidget.cpp M +5 -3 src/editor/summarywordwidget.h M +2 -2 src/editor/vocabularydelegate.cpp M +2 -2 src/editor/vocabularydelegate.h M +3 -3 src/editor/vocabularyview.cpp M +3 -2 src/editor/vocabularyview.h M +18 -27 src/parleydocument.cpp M +4 -3 src/parleydocument.h M +7 -7 src/parleymainwindow.cpp M +1 -1 src/parleymainwindow.h M +6 -6 src/practice/practicestatemachine.cpp M +1 -1 src/scripts/scripting/parley.cpp M +2 -2 src/statistics/lessonstatisticsview.cpp M +5 -4 src/statistics/statisticsmainwindow.cpp M +5 -3 src/statistics/statisticsmainwindow.h M +3 -3 src/statistics/statisticsmodel.cpp M +2 -2 src/statistics/statisticsmodel.h https://invent.kde.org/education/parley/commit/ad449a1e78de2f320afa4e02a9598e077850cf42 *** Bug 424054 has been marked as a duplicate of this bug. *** *** Bug 426445 has been marked as a duplicate of this bug. *** I still see SegFault on latest git master when closing parley intentionally.
Steps to reproduce:
1. $ parley
2. Click "Practice" of Spanish English Vocabulary
3. Now click "File" > "Quit"
$ src/parley --version
parley 21.7.70
Backtrace:
Thread 1 "parley" received signal SIGSEGV, Segmentation fault.
0x00007fffee2bd8f9 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) ()
from /lib/x86_64-linux-gnu/libQt5Core.so.5
(gdb) bt
#0 0x00007fffee2bd8f9 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) ()
at /lib/x86_64-linux-gnu/libQt5Core.so.5
#1 0x00007fffee2bd9c3 in QObject::destroyed(QObject*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#2 0x00007fffee2c57b5 in QObject::~QObject() () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#3 0x00007fffee2c587d in QObject::~QObject() () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#4 0x00000000005097cf in std::_Sp_counted_ptr<KEduVocDocument*, (__gnu_cxx::_Lock_policy)2>::_M_dispose()
(this=0x19d9b60) at /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr_base.h:377
#5 0x0000000000452541 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() (this=0x19d9b60)
at /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr_base.h:155
#6 0x00000000004524fa in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() (this=0x7fffff7ff230)
at /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr_base.h:730
#7 0x00000000004524be in std::__shared_ptr<KEduVocDocument, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr()
(this=0x7fffff7ff228) at /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr_base.h:1169
#8 0x0000000000451cf8 in std::shared_ptr<KEduVocDocument>::~shared_ptr() (this=0x7fffff7ff228)
at /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr.h:103
#9 0x000000000044f66d in ParleyMainWindow::slotUpdateWindowCaption() (this=0x986400)
at /home/rootmonk/Downloads/todo/hacking/parley/src/parleymainwindow.cpp:154
#10 0x00000000004530e4 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (ParleyMainWindow::*)()>::call(void (ParleyMainWindow::*)(), ParleyMainWindow*, void**)
(f=(void (ParleyMainWindow::*)(ParleyMainWindow * const)) 0x44f620 <ParleyMainWindow::slotUpdateWindowCaption()>, o=0x986400, arg=0x7fffff7ff480) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:152
#11 0x0000000000453058 in QtPrivate::FunctionPointer<void (ParleyMainWindow::*)()>::call<QtPrivate::List<>, void>(void (ParleyMainWindow::*)(), ParleyMainWindow*, void**)
(f=(void (ParleyMainWindow::*)(ParleyMainWindow * const)) 0x44f620 <ParleyMainWindow::slotUpdateWindowCaption()>, o=0x986400, arg=0x7fffff7ff480) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:185
#12 0x0000000000452f85 in QtPrivate::QSlotObject<void (ParleyMainWindow::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0xcaf750, r=0x986400, a=0x7fffff7ff480, ret=0x0)
A possibly relevant merge request was started @ https://invent.kde.org/education/parley/-/merge_requests/10 Git commit 3a8c04e903f2f8ac66024a2c171641a1d6f6d7fa by Hartmut Riesenbeck. Committed on 25/03/2021 at 19:41. Pushed by aacid into branch 'master'. Fix segfault on quit Reproducible segmentation fault when start practice a collection and quit immediately from statistics main window without changing anything. The segfault is only shown on console output. DrKonqi window doesn't open. The segfault appears when ParleyDocument member is deleted in ParleyMainWindows destructor. The destroyed signal of ParleyDocuments KEduVocDocument member calls a slot to update the window cation which want to access an already deleted KEduVocDocument pointer. To fix this, the destroyed signal connection is removed before deleting the ParleyDocument member in ParleyMainWindows destructor. M +6 -0 src/parleymainwindow.cpp https://invent.kde.org/education/parley/commit/3a8c04e903f2f8ac66024a2c171641a1d6f6d7fa Git commit e06375db7b71d4b0216e02bea9595da0cd5fc9b8 by Albert Astals Cid, on behalf of Hartmut Riesenbeck. Committed on 25/03/2021 at 22:32. Pushed by aacid into branch 'release/21.04'. Fix segfault on quit Reproducible segmentation fault when start practice a collection and quit immediately from statistics main window without changing anything. The segfault is only shown on console output. DrKonqi window doesn't open. The segfault appears when ParleyDocument member is deleted in ParleyMainWindows destructor. The destroyed signal of ParleyDocuments KEduVocDocument member calls a slot to update the window cation which want to access an already deleted KEduVocDocument pointer. To fix this, the destroyed signal connection is removed before deleting the ParleyDocument member in ParleyMainWindows destructor. (cherry picked from commit 3a8c04e903f2f8ac66024a2c171641a1d6f6d7fa) M +6 -0 src/parleymainwindow.cpp https://invent.kde.org/education/parley/commit/e06375db7b71d4b0216e02bea9595da0cd5fc9b8 |