Bug 444740

Summary: Crash on quitting Krita when switching to a new session
Product: [Applications] krita Reporter: tomtomtomreportingin
Component: Resource ManagementAssignee: Krita Bugs <krita-bugs-null>
Status: CONFIRMED ---    
Severity: normal CC: shzam
Priority: NOR    
Version First Reported In: nightly build (please specify the git hash!)   
Target Milestone: ---   
Platform: Appimage   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description tomtomtomreportingin 2021-10-31 20:15:26 UTC
krita-5.1.0-prealpha-e2a04dd

SUMMARY
Krita segfaults when the user closes Krita while a session (resource) is being opened. This occurs in both Krita 4 and Krita 5.

STEPS TO REPRODUCE
1. In the session manager, switch to a particular session.
2. Close Krita while the session is in the process of being opened.

OBSERVED RESULT
A segfault is observed in the terminal.

EXPECTED RESULT
No segfault.

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Debian sid
KDE Plasma Version: 5.23.0
KDE Frameworks Version: 5.86.0
Qt Version: 5.12.11 (Appimage)
Comment 1 sh_zam 2021-11-01 08:50:04 UTC
Can confirm the crash. I have investigated this crash in the past, the reason for this seems to be that KisViewManager is destroyed before destroying its dependents. 

```
Thread 1 "krita" received signal SIGSEGV, Segmentation fault.
KisMainWindow::viewManager (this=0x0) at /home/sh_zam/workspace/krita/libs/ui/KisMainWindow.cpp:1975
1975        return d->viewManager;
(gdb) bt
#0  KisMainWindow::viewManager() const (this=0x0) at /home/sh_zam/workspace/krita/libs/ui/KisMainWindow.cpp:1975
#1  0x00007ffff7e4656d in KisMainWindow::notifyChildViewDestroyed(KisView*) (this=0x0, view=0x555555fa16a0) at /home/sh_zam/workspace/krita/libs/ui/KisMainWindow.cpp:716
#2  0x00007ffff7e8a5aa in KisView::~KisView() (this=0x555555fa16a0) at /home/sh_zam/workspace/krita/libs/ui/KisView.cpp:248
#3  0x00007ffff7e8a7d9 in KisView::~KisView() (this=0x555555fa16a0) at /home/sh_zam/workspace/krita/libs/ui/KisView.cpp:242
#4  0x00007ffff2b5ca8e in QObjectPrivate::deleteChildren() () at /usr/lib/libQt5Core.so.5
#5  0x00007ffff365c47e in QWidget::~QWidget() () at /usr/lib/libQt5Widgets.so.5
#6  0x00007ffff37a510e in QMdiSubWindow::~QMdiSubWindow() () at /usr/lib/libQt5Widgets.so.5
#7  0x00007ffff2b5ca8e in QObjectPrivate::deleteChildren() () at /usr/lib/libQt5Core.so.5
#8  0x00007ffff365c47e in QWidget::~QWidget() () at /usr/lib/libQt5Widgets.so.5
#9  0x00007ffff365c7fe in QWidget::~QWidget() () at /usr/lib/libQt5Widgets.so.5
#10 0x00007ffff2b5ca8e in QObjectPrivate::deleteChildren() () at /usr/lib/libQt5Core.so.5
#11 0x00007ffff365c47e in QWidget::~QWidget() () at /usr/lib/libQt5Widgets.so.5
#12 0x00007ffff378f05e in QMdiArea::~QMdiArea() () at /usr/lib/libQt5Widgets.so.5
#13 0x00007ffff2b5ca8e in QObjectPrivate::deleteChildren() () at /usr/lib/libQt5Core.so.5
#14 0x00007ffff365c47e in QWidget::~QWidget() () at /usr/lib/libQt5Widgets.so.5
#15 0x00007ffff37e09be in QStackedWidget::~QStackedWidget() () at /usr/lib/libQt5Widgets.so.5
#16 0x00007ffff2b5ca8e in QObjectPrivate::deleteChildren() () at /usr/lib/libQt5Core.so.5
#17 0x00007ffff365c47e in QWidget::~QWidget() () at /usr/lib/libQt5Widgets.so.5
#18 0x00007ffff536a44d in KMainWindow::~KMainWindow() (this=0x555558fb2bd0) at /home/sh_zam/workspace/krita/libs/widgetutils/xmlgui/kmainwindow.cpp:342
#19 0x00007ffff53b0a63 in KXmlGuiWindow::~KXmlGuiWindow() (this=0x555558fb2bd0, vtt=0x7ffff7f97da8 <VTT for KisMainWindow+8>) at /home/sh_zam/workspace/krita/libs/widgetutils/xmlgui/kxmlguiwindow.cpp:109
#20 0x00007ffff7e4539d in KisMainWindow::~KisMainWindow() (this=0x555558fb2bd0, vtt=0x7ffff7f97da0 <VTT for KisMainWindow>) at /home/sh_zam/workspace/krita/libs/ui/KisMainWindow.cpp:677
#21 0x00007ffff7e45410 in KisMainWindow::~KisMainWindow() (this=0x555558fb2bd0) at /home/sh_zam/workspace/krita/libs/ui/KisMainWindow.cpp:650
#22 0x00007ffff7e454c9 in KisMainWindow::~KisMainWindow() (this=0x555558fb2bd0) at /home/sh_zam/workspace/krita/libs/ui/KisMainWindow.cpp:650
#23 0x00007ffff2b5ee74 in QObject::event(QEvent*) () at /usr/lib/libQt5Core.so.5

```