Bug 434253 - Crash in KoCompositeOpRegistry: The global static was used after being destroyed
Summary: Crash in KoCompositeOpRegistry: The global static was used after being destroyed
Status: RESOLVED WORKSFORME
Alias: None
Product: krita
Classification: Applications
Component: General (show other bugs)
Version: git master (please specify the git hash!)
Platform: Mint (Ubuntu based) Linux
: NOR crash
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-03-10 21:11 UTC by Tiar
Modified: 2021-10-07 04:36 UTC (History)
2 users (show)

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


Attachments
Crash log for all threads (15.23 KB, text/plain)
2021-03-10 21:11 UTC, Tiar
Details
Crash log for all threads (34.45 KB, text/plain)
2021-03-20 22:40 UTC, Tiar
Details
Screenshot of Krita after the crash (512.32 KB, image/png)
2021-03-20 23:01 UTC, Tiar
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Tiar 2021-03-10 21:11:02 UTC
Created attachment 136571 [details]
Crash log for all threads

SUMMARY
I'm not sure what I was doing then :(
And the git hash - somewhere between 5c02e617 and 2bd49f34.

STEPS TO REPRODUCE
No known steps.

OBSERVED RESULT
Crash

EXPECTED RESULT
No crash! :)

SOFTWARE/OS VERSIONS
Krita

 Version: 5.0.0-prealpha (git eda033d)
 Languages: pl_PL, pl, pl_PL, pl
 Hidpi: true

Qt: 5.11.1

ADDITIONAL INFORMATION
i965: Failed to submit batchbuffer: Błędny adres [English: wrong address]
ASSERT failure in Q_GLOBAL_STATIC: "The global static was used after being destroyed", file /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobalstatic.h, line 143

Thread 1 "krita" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50	../sysdeps/unix/sysv/linux/raise.c: Nie ma takiego pliku ani katalogu. [English: no such file or directory; please ignore this part, it always shows up]
(gdb) bt
#0  0x00007ffff3d6eed7 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007ffff3d50535 in __GI_abort () at abort.c:79
#2  0x00007ffff45388d7 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#3  0x00007ffff4537db3 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff28ffa25 in QGlobalStatic<KoCompositeOpRegistry, (anonymous namespace)::Q_QGS_registry::innerFunction, (anonymous namespace)::Q_QGS_registry::guard>::operator* (this=<optimized out>)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:1185
#5  0x00007ffff28ffa25 in KoCompositeOpRegistry::instance() () at /home/tymon/kritadev/krita/libs/pigment/KoCompositeOpRegistry.cpp:185
#6  0x00007ffff6cd537f in KisCompositeOpListModel::validate(KoColorSpace const*) (this=0x55555fe066a8, cs=0x5555597c8a10) at /home/tymon/kritadev/krita/libs/ui/kis_composite_ops_model.cc:77
#7  0x00007fffc6670018 in LayerBox::updateUI() (this=0x55555fd67c60) at /home/tymon/kritadev/krita/plugins/dockers/layerdocker/LayerBox.cpp:577
#8  0x00007fffc6672273 in LayerBox::slotModelReset() (this=0x55555fd67c60) at /home/tymon/kritadev/krita/plugins/dockers/layerdocker/LayerBox.cpp:623
#9  0x00007fffc66778fd in LayerBox::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x55555fd67c60, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>)
    at /home/tymon/kritadev/build/plugins/dockers/layerdocker/kritalayerdocker_autogen/include/moc_LayerBox.cpp:246
#10 0x00007ffff474b6db in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#11 0x00007ffff46d682a in QAbstractItemModel::modelReset(QAbstractItemModel::QPrivateSignal) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#12 0x00007ffff6d4e177 in KisNodeModel::setDummiesFacade(KisDummiesFacadeBase*, KisWeakSharedPtr<KisImage>, KisShapeController*, KisSelectionActionsAdapter*, KisNodeManager*) (this=0x55555fdcc3b0, dummiesFacade=0x0, image=..., shapeController=<optimized out>, selectionActionsAdapter=<optimized out>, nodeManager=<optimized out>) at /home/tymon/kritadev/krita/libs/ui/kis_node_model.cpp:315
#13 0x00007fffc6670744 in LayerBox::setCanvas(KoCanvasBase*) (this=0x55555fd67c60, canvas=0x0) at /home/tymon/kritadev/krita/libs/global/kis_shared_ptr.h:429
#14 0x00007fffc6677803 in LayerBox::notifyImageDeleted() (this=0x55555fd67c60) at /home/tymon/kritadev/krita/plugins/dockers/layerdocker/LayerBox.cpp:526
#15 0x00007fffc6677803 in LayerBox::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x55555fd67c60, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>)
    at /home/tymon/kritadev/build/plugins/dockers/layerdocker/kritalayerdocker_autogen/include/moc_LayerBox.cpp:236
#16 0x00007ffff474b6db in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#17 0x00007ffff700f5e8 in KisDocument::~KisDocument() (this=0x55555ab11eb0, __in_chrg=<optimized out>) at /home/tymon/kritadev/krita/libs/ui/KisDocument.cpp:634
#18 0x00007ffff700f789 in KisDocument::~KisDocument() (this=0x55555ab11eb0, __in_chrg=<optimized out>) at /home/tymon/kritadev/krita/libs/ui/KisDocument.cpp:611
#19 0x00007ffff704d471 in KisPart::~KisPart() (this=0x7ffff7fc6990 <_ZZN12_GLOBAL__N_116Q_QGS_s_instance13innerFunctionEvE6holder>, __in_chrg=<optimized out>) at /usr/include/c++/8/bits/atomic_base.h:390
#20 0x00007ffff704d879 in (anonymous namespace)::Q_QGS_s_instance::Holder::~Holder() (this=<optimized out>, __in_chrg=<optimized out>) at /home/tymon/kritadev/krita/libs/ui/KisPart.cpp:71
#21 0x00007ffff3d722ac in __run_exit_handlers (status=1, listp=0x7ffff3f0f718 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true) at exit.c:108
#22 0x00007ffff3d723da in __GI_exit (status=<optimized out>) at exit.c:139
#23 0x00007fffe4822fa3 in  () at /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#24 0x00007fffe48073bb in  () at /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#25 0x00007fffe4977558 in  () at /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#26 0x00007fffe49775f5 in  () at /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#27 0x00007ffff6e1c233 in QOpenGLFunctions::glDrawArrays(unsigned int, int, int) (this=0x55556a6c0840, count=6, first=0, mode=4) at /usr/include/x86_64-linux-gnu/qt5/QtGui/qopenglfunctions.h:766
#28 0x00007ffff6e1c233 in KisOpenGLCanvas2::drawImage(QRect const&) (this=0x55556a6c0810, updateRect=...) at /home/tymon/kritadev/krita/libs/ui/opengl/kis_opengl_canvas2.cpp:981
#29 0x00007ffff6e1cbc3 in KisOpenGLCanvas2::renderCanvasGL(QRect const&) (this=0x55556a6c0810, updateRect=...) at /home/tymon/kritadev/krita/libs/ui/opengl/kis_opengl_canvas2.cpp:1078
#30 0x00007ffff6e1cdf0 in KisOpenGLCanvas2::paintGL() (this=0x55556a6c0810) at /home/tymon/kritadev/krita/libs/ui/opengl/kis_opengl_canvas2.cpp:444
#31 0x00007ffff513fead in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#32 0x00007ffff6e1e3f9 in KisOpenGLCanvas2::paintEvent(QPaintEvent*) (this=0x55556a6c0810, e=<optimized out>) at /home/tymon/kritadev/krita/libs/ui/opengl/kis_opengl_canvas2.cpp:475
#33 0x00007ffff511f7d8 in QWidget::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#34 0x00007ffff50e14a1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#35 0x00007ffff50e8ae0 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#36 0x00007ffff6ffa857 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x55556a6c0810, event=0x7fffffffd0d0) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:710
#37 0x00007ffff4722499 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#38 0x00007ffff511837a in QWidgetPrivate::sendPaintEvent(QRegion const&) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#39 0x00007ffff50f0392 in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#40 0x00007ffff50f0a29 in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#41 0x00007ffff5107af5 in QWidgetPrivate::syncBackingStore() () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#42 0x00007ffff511f908 in QWidget::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#43 0x00007ffff5225f34 in QMainWindow::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#44 0x00007ffff27859cb in KMainWindow::event(QEvent*) (this=this@entry=0x555559a280a0, ev=ev@entry=0x555581eaed30) at /home/tymon/kritadev/krita/libs/widgetutils/xmlgui/kmainwindow.cpp:753
#45 0x00007ffff27c5589 in KXmlGuiWindow::event(QEvent*) (this=0x555559a280a0, ev=0x555581eaed30) at /home/tymon/kritadev/krita/libs/widgetutils/xmlgui/kxmlguiwindow.cpp:113
#46 0x00007ffff50e14a1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#47 0x00007ffff50e8ae0 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#48 0x00007ffff6ffa857 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x555559a280a0, event=0x555581eaed30) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:710
#49 0x00007ffff4722499 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
---Type <return> to continue, or q <return> to quit---
#50 0x00007ffff472548b in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#51 0x00007ffff4774b23 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#52 0x00007ffff0641d5e in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#53 0x00007ffff0641ff8 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#54 0x00007ffff064208c in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#55 0x00007ffff4774143 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#56 0x00007fffea777e51 in  () at /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#57 0x00007ffff472116b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#58 0x00007ffff47292e2 in QCoreApplication::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#59 0x0000555555e2a21b in main (argc=<optimized out>, argv=0x7fffffffde48) at /home/tymon/kritadev/krita/krita/main.cc:663
#60 0x00007ffff3d51b6b in __libc_start_main (main=0x555555e28890 <main>, argc=1, argv=0x7fffffffde48, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffde38) at ../csu/libc-start.c:308
#61 0x0000555555e2b2da in _start () at /home/tymon/kritadev/krita/krita/main.cc:468
Comment 1 Tiar 2021-03-20 22:40:10 UTC
Created attachment 136896 [details]
Crash log for all threads

I encountered the same crash on 

86f9fd11ba Mon Feb 8 10:13:49 2021 +0000 Sharaf Zaman (HEAD) ResourceQueryMapper: cache the thumbnails
(+ I cherry-picked the autosave fix: f9a9ef8080 but since the original report was before I commited that fix, I believe it's unrelated)
Comment 2 Tiar 2021-03-20 23:01:14 UTC
Created attachment 136897 [details]
Screenshot of Krita after the crash

What I was doing before:
- I transformed some group
- then I toggled visibility quite fast for multiple layers and/or groups (not sure what exact course of action, but it was switching visibility).
- you can see in the attachment that the crash happened in the middle of updating (there are tears between content on tiles edges).
Comment 3 Tiar 2021-03-20 23:01:49 UTC
Note: the crash log is very different from bug 434601 which also mentions visibility.
Comment 4 Dmitry Kazakov 2021-07-30 12:43:28 UTC
As far as I can tell, DRI triggers internal abort() or exit(1), which basically starts destroying all the static objects inside Krita:

#19 0x00007ffff7040fb1 in KisPart::~KisPart() (this=0x7ffff7fc7410 <_ZZN12_GLOBAL__N_116Q_QGS_s_instance13innerFunctionEvE6holder>, __in_chrg=<optimized out>) at /usr/include/c++/8/bits/atomic_base.h:390
#20 0x00007ffff70413b9 in (anonymous namespace)::Q_QGS_s_instance::Holder::~Holder() (this=<optimized out>, __in_chrg=<optimized out>) at /media/tymon/Dane/Development/devthird/krita/libs/ui/KisPart.cpp:71
#21 0x00007ffff3d9e2ac in __run_exit_handlers (status=1, listp=0x7ffff3f3b718 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true) at exit.c:108
#22 0x00007ffff3d9e3da in __GI_exit (status=<optimized out>) at exit.c:139
#23 0x00007fffe486afa3 in  () at /usr/lib/x86_64-linux-gnu/dri/i965_dri.so 


So the problem is actually somewhere in DRI. Perhaps we failed to allocated a buffer somehow? E.g. due to a low-memory situation? 

If you can reproduce the crash somehow, could you please check the state of all the pointers in this function? It looks like some pointer became null for some reason.

#34 0x00007ffff6e1c961 in KisTextureTile::update(KisTextureTileUpdateInfo const&, bool) (this=0x555577d503e0, updateInfo=..., blockMipmapRegeneration=<optimized out>)
    at /media/tymon/Dane/Development/devthird/krita/libs/ui/opengl/kis_texture_tile.cpp:286

i965: Failed to submit batchbuffer: Błędny adres [English: wrong address]
Comment 5 Halla Rempt 2021-09-07 11:41:34 UTC
Setting to needsinfo, since Tiar needs to provide the information Dmitry asked for.
Comment 6 Bug Janitor Service 2021-09-22 04:35:52 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 7 Bug Janitor Service 2021-10-07 04:36:16 UTC
This bug has been in NEEDSINFO status with no change for at least
30 days. The bug is now closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

Thank you for helping us make KDE software even better for everyone!