Bug 392870 - Segfault after quickly closing a document after toggling layer visibility
Summary: Segfault after quickly closing a document after toggling layer visibility
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Layer Stack (show other bugs)
Version: git master (please specify the git hash!)
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Dmitry Kazakov
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-04-08 10:21 UTC by Nicholas LaPointe
Modified: 2019-05-23 11:31 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nicholas LaPointe 2018-04-08 10:21:10 UTC
When closing a document within about one second of changing the visibility of a layer, Krita will receive a segmentation fault.
(It is easiest to reproduce using a document with no changes, since you won't be asked about saving it.)

Tested in:
4.1.0-pre-alpha (git aa81a25)
4.0.0 (git c45c4c5)


Thread 1 "krita" received signal SIGSEGV, Segmentation fault.
0x00007ffff75a49ae in KisNodeModel::processUpdateQueue (this=0x9faf890) at src/krita/libs/ui/kis_node_model.cpp:387
387             QModelIndex index = m_d->indexConverter->indexFromDummy(dummy);
(gdb) bt
#0  0x00007ffff75a49ae in KisNodeModel::processUpdateQueue (this=0x9faf890) at src/krita/libs/ui/kis_node_model.cpp:387
#1  0x00007ffff789c3f5 in KisNodeModel::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at builds/krita_standard/libs/ui/moc_kis_node_model.cpp:129
#2  0x00007ffff5b34cc9 in QMetaObject::activate(QObject*, int, int, void**) () from /opt/Qt-5.9/lib/libQt5Core.so.5
#3  0x00007ffff5bae3c7 in QTimer::timeout(QTimer::QPrivateSignal) () from /opt/Qt-5.9/lib/libQt5Core.so.5
#4  0x00007ffff5b414e8 in QTimer::timerEvent(QTimerEvent*) () from /opt/Qt-5.9/lib/libQt5Core.so.5
#5  0x00007ffff5b35cc3 in QObject::event(QEvent*) () from /opt/Qt-5.9/lib/libQt5Core.so.5
#6  0x00007ffff647a3fc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /opt/Qt-5.9/lib/libQt5Widgets.so.5
#7  0x00007ffff6481e07 in QApplication::notify(QObject*, QEvent*) () from /opt/Qt-5.9/lib/libQt5Widgets.so.5
#8  0x00007ffff77b1247 in KisApplication::notify (this=<optimized out>, receiver=0x9fb75e0, event=0x7fffffffd5e0) at src/krita/libs/ui/KisApplication.cpp:652
#9  0x00007ffff5b08d28 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /opt/Qt-5.9/lib/libQt5Core.so.5
#10 0x00007ffff5b5c2fe in QTimerInfoList::activateTimers() () from /opt/Qt-5.9/lib/libQt5Core.so.5
#11 0x00007ffff5b5cb61 in ?? () from /opt/Qt-5.9/lib/libQt5Core.so.5
#12 0x00007fffee921197 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#13 0x00007fffee9213f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#14 0x00007fffee92149c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007ffff5b5d6bf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/Qt-5.9/lib/libQt5Core.so.5
#16 0x00007ffff5b06f0a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/Qt-5.9/lib/libQt5Core.so.5
#17 0x00007ffff5b0f9b4 in QCoreApplication::exec() () from /opt/Qt-5.9/lib/libQt5Core.so.5
#18 0x000000000040520a in main (argc=1, argv=<optimized out>) at src/krita/krita/main.cc:361
Comment 1 Antti Savolainen 2018-04-08 18:12:47 UTC
Confirming this https://webmshare.com/YeEyN

Build Date & Platform:

    krita 4.1.0-pre-alpha
    Xubuntu 17.10
    Krita Lime https://launchpad.net/~kritalime/+archive/ubuntu/ppa

Additional Information: Any other useful information. 

     https://webmshare.com/YeEyN Recorded video of said crash

(gdb) bt
#0  0x00007ffff75beabe in KisNodeModel::processUpdateQueue() () at /usr/lib/x86_64-linux-gnu/libkritaui.so.17
#1  0x00007ffff78a66b5 in  () at /usr/lib/x86_64-linux-gnu/libkritaui.so.17
#2  0x00007ffff53888e5 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#3  0x00007ffff53953b7 in QTimer::timeout(QTimer::QPrivateSignal) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff5395718 in QTimer::timerEvent(QTimerEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff538940b in QObject::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff60d446c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#7  0x00007ffff60dbd34 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#8  0x00007ffff77c13f7 in KisApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libkritaui.so.17
#9  0x00007ffff5359de8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#10 0x00007ffff53b191e in QTimerInfoList::activateTimers() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#11 0x00007ffff53b2119 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#12 0x00007fffece92fb7 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#13 0x00007fffece931f0 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#14 0x00007fffece9327c in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007ffff53b247f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#16 0x00007ffff5357e3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#17 0x00007ffff5360da4 in QCoreApplication::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#18 0x0000555555845c1e in main ()
Comment 2 Antti Savolainen 2018-06-26 18:07:38 UTC
Changing the importance and repasting my backtrace with symbols

Thread 1 "krita" received signal SIGSEGV, Segmentation fault.
0x00007ffff7008d34 in KisNodeModel::processUpdateQueue (this=0x555561a1c1c0)
    at /home/managor/Sourcebuilding/krita/libs/ui/kis_node_model.cpp:387
387	        QModelIndex index = m_d->indexConverter->indexFromDummy(dummy);
(gdb) bt
#0  0x00007ffff7008d34 in KisNodeModel::processUpdateQueue() (this=0x555561a1c1c0) at /home/managor/Sourcebuilding/krita/libs/ui/kis_node_model.cpp:387
#1  0x00007ffff73ecd9b in KisNodeModel::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x555561a1c1c0, _c=QMetaObject::InvokeMetaMethod, _id=9, _a=0x7fffffffd710)
    at /home/managor/Sourcebuilding/b-krita/libs/ui/kritaui_autogen/EWIEGA46WW/moc_kis_node_model.cpp:129
#2  0x00007ffff4ad98e5 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#3  0x00007ffff4ae63b7 in QTimer::timeout(QTimer::QPrivateSignal) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff4ae6718 in QTimer::timerEvent(QTimerEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff4ada40b in QObject::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff582546c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#7  0x00007ffff582cd34 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#8  0x00007ffff72ca717 in KisApplication::notify(QObject*, QEvent*) (this=0x7fffffffde20, receiver=0x555561a22b90, event=0x7fffffffdaa0) at /home/managor/Sourcebuilding/krita/libs/ui/KisApplication.cpp:626
#9  0x00007ffff4aaade8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#10 0x00007ffff4b0291e in QTimerInfoList::activateTimers() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#11 0x00007ffff4b03119 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#12 0x00007fffec03cfb7 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#13 0x00007fffec03d1f0 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#14 0x00007fffec03d27c in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007ffff4b0347f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#16 0x00007ffff4aa8e3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#17 0x00007ffff4ab1da4 in QCoreApplication::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#18 0x0000555555e903cc in main(int, char**) (argc=1, argv=0x7fffffffdf88) at /home/managor/Sourcebuilding/krita/krita/main.cc:419
Comment 3 Dmitry Kazakov 2019-05-23 11:31:31 UTC
Hi, Nicholas and Antti!

I think the bug should now be fixed after my commit 06f53d4d8f378b28b50b88641659b4dc54028c2d. I cannot reproduce it anymore in master.

Please check the current nightly AppImage if you can still reproduce the bug:
https://binary-factory.kde.org/job/Krita_Nightly_Appimage_Build/

If you still see the bug, please reopen this report :)