Summary: | KPhotoAlbum crashes after Toggle full-screen preview in Annotations window for an image that is already deleted | ||
---|---|---|---|
Product: | [Applications] kphotoalbum | Reporter: | Victor Lobo <victor.ip.lobo> |
Component: | Annotation Dialog | Assignee: | KPhotoAlbum Bugs <kpabugs> |
Status: | VERIFIED FIXED | ||
Severity: | crash | CC: | johannes |
Priority: | NOR | ||
Version: | 5.11.0 | ||
Target Milestone: | --- | ||
Platform: | openSUSE | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/graphics/kphotoalbum/-/commit/3786a06ee0fc8c9edbf92bd3e4a12c752f5dbec1 | Version Fixed In: | |
Sentry Crash Report: |
Description
Victor Lobo
2023-10-08 23:32:29 UTC
Git commit c62626f6c4a5f42fc2518c75aae4665e901f9c33 by Johannes Zarl-Zierl. Committed on 09/10/2023 at 22:38. Pushed by johanneszarl into branch 'master'. Discard images from annotation dialog if they are deleted. This makes the annotation dialog behave like one would expect when an image is deleted while being annotated: Old behaviour: deleted images are still present in the annotation dialog, leading to unclear semantics. New behaviour: deleted images are removed from the dialog. The dialog is closed when the last image is deleted. Additionally, this fixes two crashes that are enabled by the old behaviour: Fix a crash when deleting the currently annotated image and then toggling the fullscreen preview in the annotation window (#475387). Fix a crash when deleting the currently annotated image and then pressing delete in the annotation dialog (#475388). Related: bug 475388 M +26 -0 AnnotationDialog/Dialog.cpp M +8 -0 AnnotationDialog/Dialog.h https://invent.kde.org/graphics/kphotoalbum/-/commit/c62626f6c4a5f42fc2518c75aae4665e901f9c33 Reopening this bug since the following crash now occurs STEPS TO REPRODUCE 1. Open KPhotoAlbum 2. Go to Thumbnail View 3. Open an Image/Video in Annotations window 4. Click on Toggle full-screen preview (Ctrl-Space) in Annotations window 5. Keep the Annotations window open and go back to the Thumbnail view and delete the same image/video (Press Delete key) 6. Select move to trash or delete from disk or remove from database and click OK (in the Removing Items dialog popup) 7. Go back to Annotations window (now no longer in the full-screen view) and click on Toggle full-screen preview (Ctrl-Space) 8. Crash Backtrace: Application: KPhotoAlbum (kphotoalbum), signal: Aborted [KCrash Handler] #4 0x00007f80d7e91e0c in __pthread_kill_implementation () from /lib64/libc.so.6 #5 0x00007f80d7e3f0e6 in raise () from /lib64/libc.so.6 #6 0x00007f80d7e268d7 in abort () from /lib64/libc.so.6 #7 0x00007f80d86bb4f9 in qt_message_fatal (message=<synthetic pointer>..., context=...) at global/qlogging.cpp:1914 #8 QMessageLogger::fatal (this=this@entry=0x7ffd11fc5488, msg=msg@entry=0x7f80d89d2028 "ASSERT failure in %s: \"%s\", file %s, line %d") at global/qlogging.cpp:893 #9 0x00007f80d86ba78c in qt_assert_x (where=<optimized out>, what=<optimized out>, file=<optimized out>, line=<optimized out>) at global/qglobal.cpp:3399 #10 0x00000000005f291c in QList<DB::ImageInfo>::operator[] (this=0x2923b28, i=0) at /usr/include/qt5/QtCore/qlist.h:579 #11 0x00000000005eeb2b in AnnotationDialog::Dialog::togglePreview (this=0x2923ae0) at /home/victor/kphotoalbum/AnnotationDialog/Dialog.cpp:1502 #12 0x00000000005f8b48 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (AnnotationDialog::Dialog::*)()>::call(void (AnnotationDialog::Dialog::*)(), AnnotationDialog::Dialog*, void**) (f=(void (AnnotationDialog::Dialog::*)(AnnotationDialog::Dialog * const)) 0x5eea80 <AnnotationDialog::Dialog::togglePreview()>, o=0x2923ae0, arg=0x7ffd11fc57a0) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:152 #13 0x00000000005f7e7c in QtPrivate::FunctionPointer<void (AnnotationDialog::Dialog::*)()>::call<QtPrivate::List<>, void>(void (AnnotationDialog::Dialog::*)(), AnnotationDialog::Dialog*, void**) (f=(void (AnnotationDialog::Dialog::*)(AnnotationDialog::Dialog * const)) 0x5eea80 <AnnotationDialog::Dialog::togglePreview()>, o=0x2923ae0, arg=0x7ffd11fc57a0) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:185 #14 0x00000000005f64a3 in QtPrivate::QSlotObject<void (AnnotationDialog::Dialog::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x30af980, r=0x2923ae0, a=0x7ffd11fc57a0, ret=0x0) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:418 #15 0x00007f80d8925812 in QtPrivate::QSlotObjectBase::call (a=0x7ffd11fc57a0, r=0x2923ae0, this=0x30af980) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #16 doActivate<false> (sender=0x309f210, signal_index=13, argv=0x7ffd11fc57a0) at kernel/qobject.cpp:3925 #17 0x0000000000609e91 in AnnotationDialog::ImagePreviewWidget::togglePreview (this=0x309f210) at /home/victor/kphotoalbum/build/kphotoalbum_autogen/include/moc_ImagePreviewWidget.cpp:284 #18 0x00000000006092ec in AnnotationDialog::ImagePreviewWidget::toggleFullscreenPreview (this=0x309f210) at /home/victor/kphotoalbum/AnnotationDialog/ImagePreviewWidget.cpp:326 #19 0x00000000005f9ac3 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (AnnotationDialog::ImagePreviewWidget::*)()>::call(void (AnnotationDialog::ImagePreviewWidget::*)(), AnnotationDialog::ImagePreviewWidget*, void**) (f=(void (AnnotationDialog::ImagePreviewWidget::*)(AnnotationDialog::ImagePreviewWidget * const)) 0x6092d4 <AnnotationDialog::ImagePreviewWidget::toggleFullscreenPreview()>, o=0x309f210, arg=0x7ffd11fc59d0) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:152 #20 0x00000000005f9961 in QtPrivate::FunctionPointer<void (AnnotationDialog::ImagePreviewWidget::*)()>::call<QtPrivate::List<>, void>(void (AnnotationDialog::ImagePreviewWidget::*)(), AnnotationDialog::ImagePreviewWidget*, void**) (f=(void (AnnotationDialog::ImagePreviewWidget::*)(AnnotationDialog::ImagePreviewWidget * const)) 0x6092d4 <AnnotationDialog::ImagePreviewWidget::toggleFullscreenPreview()>, o=0x309f210, arg=0x7ffd11fc59d0) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:185 #21 0x00000000005f97df in QtPrivate::QSlotObject<void (AnnotationDialog::ImagePreviewWidget::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x30a20e0, r=0x309f210, a=0x7ffd11fc59d0, ret=0x0) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:418 #22 0x00007f80d8925812 in QtPrivate::QSlotObjectBase::call (a=0x7ffd11fc59d0, r=0x309f210, this=0x30a20e0) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #23 doActivate<false> (sender=0x30a11f0, signal_index=9, argv=0x7ffd11fc59d0) at kernel/qobject.cpp:3925 #24 0x00007f80d891e47f in QMetaObject::activate (sender=sender@entry=0x30a11f0, m=m@entry=0x7f80d9ac0280 <QAbstractButton::staticMetaObject>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7ffd11fc59d0) at kernel/qobject.cpp:3985 #25 0x00007f80d9696ac2 in QAbstractButton::clicked (this=this@entry=0x30a11f0, _t1=<optimized out>) at .moc/moc_qabstractbutton.cpp:308 #26 0x00007f80d9696d2a in QAbstractButtonPrivate::emitClicked (this=0x30a1700) at widgets/qabstractbutton.cpp:416 #27 0x00007f80d9698567 in QAbstractButtonPrivate::click (this=0x30a1700) at widgets/qabstractbutton.cpp:409 #28 0x00007f80d9698777 in QAbstractButton::mouseReleaseEvent (this=0x30a11f0, e=0x7ffd11fc5f60) at widgets/qabstractbutton.cpp:1045 #29 0x00007f80d95e6d68 in QWidget::event (this=0x30a11f0, event=0x7ffd11fc5f60) at kernel/qwidget.cpp:9045 #30 0x00007f80d95a519e in QApplicationPrivate::notify_helper (this=this@entry=0x23b51c0, receiver=receiver@entry=0x30a11f0, e=e@entry=0x7ffd11fc5f60) at kernel/qapplication.cpp:3640 #31 0x00007f80d95ad5cf in QApplication::notify (this=<optimized out>, receiver=<optimized out>, e=0x7ffd11fc5f60) at kernel/qapplication.cpp:3084 #32 0x00007f80d88ed568 in QCoreApplication::notifyInternal2 (receiver=0x30a11f0, event=0x7ffd11fc5f60) at kernel/qcoreapplication.cpp:1064 #33 0x00007f80d88ed73e in QCoreApplication::sendSpontaneousEvent (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1474 #34 0x00007f80d95ab92e in QApplicationPrivate::sendMouseEvent (receiver=receiver@entry=0x30a11f0, event=event@entry=0x7ffd11fc5f60, alienWidget=<optimized out>, nativeWidget=0x2923ae0, buttonDown=buttonDown@entry=0x7f80d9af2330 <qt_button_down>, lastMouseReceiver=..., spontaneous=true, onlyDispatchEnterLeave=false) at kernel/qapplication.cpp:2622 #35 0x00007f80d95ff7fd in QWidgetWindow::handleMouseEvent (this=this@entry=0x3b79470, event=event@entry=0x7ffd11fc6210) at kernel/qwidgetwindow.cpp:684 #36 0x00007f80d9602d1f in QWidgetWindow::event (this=0x3b79470, event=0x7ffd11fc6210) at kernel/qwidgetwindow.cpp:300 #37 0x00007f80d95a519e in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x3b79470, e=0x7ffd11fc6210) at kernel/qapplication.cpp:3640 #38 0x00007f80d88ed568 in QCoreApplication::notifyInternal2 (receiver=0x3b79470, event=0x7ffd11fc6210) at kernel/qcoreapplication.cpp:1064 #39 0x00007f80d88ed73e in QCoreApplication::sendSpontaneousEvent (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1474 #40 0x00007f80d8d7d0eb in QGuiApplicationPrivate::processMouseEvent (e=0x313fcd0) at kernel/qguiapplication.cpp:2285 #41 0x00007f80d8d5036c in QWindowSystemInterface::sendWindowSystemEvents (flags=flags@entry=...) at kernel/qwindowsysteminterface.cpp:1169 #42 0x00007f80ccb1b1aa in xcbSourceDispatch (source=<optimized out>) at qxcbeventdispatcher.cpp:105 #43 0x00007f80d54b59d8 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0 #44 0x00007f80d54b5de8 in ?? () from /lib64/libglib-2.0.so.0 #45 0x00007f80d54b5e7c in g_main_context_iteration () from /lib64/libglib-2.0.so.0 #46 0x00007f80d89464a6 in QEventDispatcherGlib::processEvents (this=0x248fe30, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #47 0x00007f80d88ebffb in QEventLoop::exec (this=this@entry=0x7ffd11fc6540, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69 #48 0x00007f80d97ada07 in QDialog::exec (this=0x2923ae0) at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #49 0x00000000005ea0ee in AnnotationDialog::Dialog::exec (this=0x2923ae0) at /home/victor/kphotoalbum/AnnotationDialog/Dialog.cpp:957 #50 0x00000000005e8399 in AnnotationDialog::Dialog::configure (this=0x2923ae0, list=..., oneAtATime=true) at /home/victor/kphotoalbum/AnnotationDialog/Dialog.cpp:768 #51 0x0000000000536c57 in MainWindow::Window::configImages (this=0x25e7550, list=..., oneAtATime=true) at /home/victor/kphotoalbum/MainWindow/Window.cpp:509 #52 0x0000000000536bf5 in MainWindow::Window::configureImages (list=..., oneAtATime=true) at /home/victor/kphotoalbum/MainWindow/Window.cpp:503 #53 0x0000000000536b4c in MainWindow::Window::configureImages (this=0x25e7550, oneAtATime=true) at /home/victor/kphotoalbum/MainWindow/Window.cpp:497 #54 0x00000000005369db in MainWindow::Window::slotConfigureImagesOneAtATime (this=0x25e7550) at /home/victor/kphotoalbum/MainWindow/Window.cpp:483 #55 0x000000000054e828 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (MainWindow::Window::*)()>::call(void (MainWindow::Window::*)(), MainWindow::Window*, void**) (f=(void (MainWindow::Window::*)(MainWindow::Window * const)) 0x5369be <MainWindow::Window::slotConfigureImagesOneAtATime()>, o=0x25e7550, arg=0x7ffd11fc6960) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:152 #56 0x000000000054de6d in QtPrivate::FunctionPointer<void (MainWindow::Window::*)()>::call<QtPrivate::List<>, void>(void (MainWindow::Window::*)(), MainWindow::Window*, void**) (f=(void (MainWindow::Window::*)(MainWindow::Window * const)) 0x5369be <MainWindow::Window::slotConfigureImagesOneAtATime()>, o=0x25e7550, arg=0x7ffd11fc6960) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:185 #57 0x000000000054c5e9 in QtPrivate::QSlotObject<void (MainWindow::Window::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x29e29e0, r=0x25e7550, a=0x7ffd11fc6960, ret=0x0) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:418 #58 0x00007f80d8925812 in QtPrivate::QSlotObjectBase::call (a=0x7ffd11fc6960, r=0x25e7550, this=0x29e29e0) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #59 doActivate<false> (sender=0x29e2b10, signal_index=4, argv=0x7ffd11fc6960) at kernel/qobject.cpp:3925 #60 0x00007f80d891e47f in QMetaObject::activate (sender=sender@entry=0x29e2b10, m=m@entry=0x7f80d9abacc0 <QAction::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x7ffd11fc6960) at kernel/qobject.cpp:3985 #61 0x00007f80d959e8b2 in QAction::triggered (this=this@entry=0x29e2b10, _t1=<optimized out>) at .moc/moc_qaction.cpp:376 #62 0x00007f80d95a142f in QAction::activate (this=0x29e2b10, event=<optimized out>) at kernel/qaction.cpp:1161 #63 0x00007f80d9725ef2 in QMenuPrivate::activateCausedStack (this=this@entry=0x2b43540, causedStack=..., action=action@entry=0x29e2b10, action_e=action_e@entry=QAction::Trigger, self=self@entry=true) at widgets/qmenu.cpp:1384 #64 0x00007f80d972dd23 in QMenuPrivate::activateAction (this=0x2b43540, action=0x29e2b10, action_e=QAction::Trigger, self=true) at widgets/qmenu.cpp:1461 #65 0x00007f80d95e6d68 in QWidget::event (this=0x7ffd11fc7620, event=0x7ffd11fc6f50) at kernel/qwidget.cpp:9045 #66 0x00007f80d95a519e in QApplicationPrivate::notify_helper (this=this@entry=0x23b51c0, receiver=receiver@entry=0x7ffd11fc7620, e=e@entry=0x7ffd11fc6f50) at kernel/qapplication.cpp:3640 #67 0x00007f80d95ad5cf in QApplication::notify (this=<optimized out>, receiver=<optimized out>, e=0x7ffd11fc6f50) at kernel/qapplication.cpp:3084 #68 0x00007f80d88ed568 in QCoreApplication::notifyInternal2 (receiver=0x7ffd11fc7620, event=0x7ffd11fc6f50) at kernel/qcoreapplication.cpp:1064 #69 0x00007f80d88ed73e in QCoreApplication::sendSpontaneousEvent (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1474 #70 0x00007f80d95ab92e in QApplicationPrivate::sendMouseEvent (receiver=0x7ffd11fc7620, event=event@entry=0x7ffd11fc6f50, alienWidget=<optimized out>, nativeWidget=0x7ffd11fc7620, buttonDown=buttonDown@entry=0x7f80d9af2330 <qt_button_down>, lastMouseReceiver=..., spontaneous=true, onlyDispatchEnterLeave=false) at kernel/qapplication.cpp:2622 #71 0x00007f80d96002ca in QWidgetWindow::handleMouseEvent (this=this@entry=0x2b61a60, event=event@entry=0x7ffd11fc7200) at kernel/qwidgetwindow.cpp:580 #72 0x00007f80d9602d1f in QWidgetWindow::event (this=0x2b61a60, event=0x7ffd11fc7200) at kernel/qwidgetwindow.cpp:300 #73 0x00007f80d95a519e in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x2b61a60, e=0x7ffd11fc7200) at kernel/qapplication.cpp:3640 #74 0x00007f80d88ed568 in QCoreApplication::notifyInternal2 (receiver=0x2b61a60, event=0x7ffd11fc7200) at kernel/qcoreapplication.cpp:1064 #75 0x00007f80d88ed73e in QCoreApplication::sendSpontaneousEvent (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1474 #76 0x00007f80d8d7d0eb in QGuiApplicationPrivate::processMouseEvent (e=0x2adfbd0) at kernel/qguiapplication.cpp:2285 #77 0x00007f80d8d5036c in QWindowSystemInterface::sendWindowSystemEvents (flags=flags@entry=...) at kernel/qwindowsysteminterface.cpp:1169 #78 0x00007f80ccb1b1aa in xcbSourceDispatch (source=<optimized out>) at qxcbeventdispatcher.cpp:105 #79 0x00007f80d54b59d8 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0 #80 0x00007f80d54b5de8 in ?? () from /lib64/libglib-2.0.so.0 #81 0x00007f80d54b5e7c in g_main_context_iteration () from /lib64/libglib-2.0.so.0 #82 0x00007f80d89464a6 in QEventDispatcherGlib::processEvents (this=0x248fe30, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #83 0x00007f80d88ebffb in QEventLoop::exec (this=this@entry=0x7ffd11fc7540, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69 #84 0x00007f80d972b70f in QMenuPrivate::exec(QPoint const&, QAction*, std::function<QPoint (QSize const&)>) (this=0x2b43540, p=..., action=0x0, positionFunction=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #85 0x00007f80d972b82f in QMenu::exec (this=<optimized out>, p=..., action=<optimized out>) at widgets/qmenu.cpp:2686 #86 0x0000000000541abe in MainWindow::Window::contextMenuEvent (this=0x25e7550, e=0x7ffd11fc7970) at /home/victor/kphotoalbum/MainWindow/Window.cpp:1318 #87 0x00007f80d95e6d68 in QWidget::event (this=0x25e7550, event=0x7ffd11fc7970) at kernel/qwidget.cpp:9045 #88 0x00007f80e3e4e469 in KXmlGuiWindow::event(QEvent*) () from /lib64/libKF5XmlGui.so.5 #89 0x0000000000538843 in MainWindow::Window::event (this=0x25e7550, event=0x7ffd11fc7970) at /home/victor/kphotoalbum/MainWindow/Window.cpp:751 #90 0x00007f80d95a519e in QApplicationPrivate::notify_helper (this=this@entry=0x23b51c0, receiver=receiver@entry=0x25e7550, e=e@entry=0x7ffd11fc7970) at kernel/qapplication.cpp:3640 #91 0x00007f80d95adaaa in QApplication::notify (this=<optimized out>, receiver=<optimized out>, e=0x7ffd11fc7ba0) at kernel/qapplication.cpp:3246 #92 0x00007f80d88ed568 in QCoreApplication::notifyInternal2 (receiver=0x2a346a0, event=0x7ffd11fc7ba0) at kernel/qcoreapplication.cpp:1064 #93 0x00007f80d88ed5b2 in QCoreApplication::forwardEvent (receiver=<optimized out>, event=<optimized out>, originatingEvent=<optimized out>) at kernel/qcoreapplication.cpp:1079 #94 0x00007f80d95fff59 in QWidgetWindow::handleMouseEvent (this=this@entry=0x28ad340, event=event@entry=0x7ffd11fc7e90) at kernel/qwidgetwindow.cpp:692 #95 0x00007f80d9602d1f in QWidgetWindow::event (this=0x28ad340, event=0x7ffd11fc7e90) at kernel/qwidgetwindow.cpp:300 #96 0x00007f80d95a519e in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x28ad340, e=0x7ffd11fc7e90) at kernel/qapplication.cpp:3640 #97 0x00007f80d88ed568 in QCoreApplication::notifyInternal2 (receiver=0x28ad340, event=0x7ffd11fc7e90) at kernel/qcoreapplication.cpp:1064 #98 0x00007f80d88ed73e in QCoreApplication::sendSpontaneousEvent (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1474 #99 0x00007f80d8d7d0eb in QGuiApplicationPrivate::processMouseEvent (e=0x2b1b270) at kernel/qguiapplication.cpp:2285 #100 0x00007f80d8d5036c in QWindowSystemInterface::sendWindowSystemEvents (flags=flags@entry=...) at kernel/qwindowsysteminterface.cpp:1169 #101 0x00007f80ccb1b1aa in xcbSourceDispatch (source=<optimized out>) at qxcbeventdispatcher.cpp:105 #102 0x00007f80d54b59d8 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0 #103 0x00007f80d54b5de8 in ?? () from /lib64/libglib-2.0.so.0 #104 0x00007f80d54b5e7c in g_main_context_iteration () from /lib64/libglib-2.0.so.0 #105 0x00007f80d89464a6 in QEventDispatcherGlib::processEvents (this=0x248fe30, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #106 0x00007f80d88ebffb in QEventLoop::exec (this=this@entry=0x7ffd11fc81c0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69 #107 0x00007f80d88f4490 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #108 0x0000000000472a30 in main (argc=2, argv=0x7ffd11fc88c8) at /home/victor/kphotoalbum/main.cpp:161 [Inferior 1 (process 3893) detached] A similar crash also occurs when the Map tab is clicked in the Annotations window STEPS TO REPRODUCE 1. Open KPhotoAlbum 2. Go to Thumbnail View 3. Open an Image/Video in Annotations window 4. Click on Toggle full-screen preview (Ctrl-Space) in Annotations window 5. Keep the Annotations window open and go back to the Thumbnail view and delete the same image/video (Press Delete key) 6. Select move to trash or delete from disk or remove from database and click OK (in the Removing Items dialog popup) 7. Go back to Annotations window (now no longer in the full-screen view) and click on the Map tab 8. Crash Backtrace: Application: KPhotoAlbum (kphotoalbum), signal: Aborted [KCrash Handler] #4 0x00007f9e29491e0c in __pthread_kill_implementation () from /lib64/libc.so.6 #5 0x00007f9e2943f0e6 in raise () from /lib64/libc.so.6 #6 0x00007f9e294268d7 in abort () from /lib64/libc.so.6 #7 0x00007f9e29cbb4f9 in qt_message_fatal (message=<synthetic pointer>..., context=...) at global/qlogging.cpp:1914 #8 QMessageLogger::fatal (this=this@entry=0x7ffda3d88568, msg=msg@entry=0x7f9e29fd2028 "ASSERT failure in %s: \"%s\", file %s, line %d") at global/qlogging.cpp:893 #9 0x00007f9e29cba78c in qt_assert_x (where=<optimized out>, what=<optimized out>, file=<optimized out>, line=<optimized out>) at global/qglobal.cpp:3399 #10 0x0000000000599378 in QList<QExplicitlySharedDataPointer<DB::ImageInfo> >::operator[] (this=0x241a560, i=0) at /usr/include/qt5/QtCore/qlist.h:579 #11 0x00000000005f0203 in AnnotationDialog::Dialog::updateMapForCurrentImage (this=0x241a520) at /home/victor/kphotoalbum/AnnotationDialog/Dialog.cpp:1762 #12 0x00000000005f066a in AnnotationDialog::Dialog::mapLoadingFinished (this=0x241a520, mapHasImages=false, allImagesHaveCoordinates=true) at /home/victor/kphotoalbum/AnnotationDialog/Dialog.cpp:1855 #13 0x00000000005f051d in AnnotationDialog::Dialog::populateMap (this=0x241a520) at /home/victor/kphotoalbum/AnnotationDialog/Dialog.cpp:1820 #14 0x00000000005f8b48 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (AnnotationDialog::Dialog::*)()>::call(void (AnnotationDialog::Dialog::*)(), AnnotationDialog::Dialog*, void**) (f=(void (AnnotationDialog::Dialog::*)(AnnotationDialog::Dialog * const)) 0x5f031c <AnnotationDialog::Dialog::populateMap()>, o=0x241a520, arg=0x3445088) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:152 #15 0x00000000005f7e7c in QtPrivate::FunctionPointer<void (AnnotationDialog::Dialog::*)()>::call<QtPrivate::List<>, void>(void (AnnotationDialog::Dialog::*)(), AnnotationDialog::Dialog*, void**) (f=(void (AnnotationDialog::Dialog::*)(AnnotationDialog::Dialog * const)) 0x5f031c <AnnotationDialog::Dialog::populateMap()>, o=0x241a520, arg=0x3445088) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:185 #16 0x00000000005f64a3 in QtPrivate::QSlotObject<void (AnnotationDialog::Dialog::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x39ab750, r=0x241a520, a=0x3445088, ret=0x0) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:418 #17 0x00007f9e29f19320 in QObject::event (this=0x241a520, e=0x3445040) at kernel/qobject.cpp:1347 #18 0x00007f9e2aba519e in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x241a520, e=0x3445040) at kernel/qapplication.cpp:3640 #19 0x00007f9e29eed568 in QCoreApplication::notifyInternal2 (receiver=0x241a520, event=0x3445040) at kernel/qcoreapplication.cpp:1064 #20 0x00007f9e29eed72e in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1462 #21 0x00007f9e29ef0b61 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x1dfbd60) at kernel/qcoreapplication.cpp:1821 #22 0x00007f9e29ef10a8 in QCoreApplication::sendPostedEvents (receiver=<optimized out>, event_type=<optimized out>) at kernel/qcoreapplication.cpp:1680 #23 0x00007f9e29f46c93 in postEventSourceDispatch (s=0x1ec9500) at kernel/qeventdispatcher_glib.cpp:277 #24 0x00007f9e2672b9d8 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0 #25 0x00007f9e2672bde8 in ?? () from /lib64/libglib-2.0.so.0 #26 0x00007f9e2672be7c in g_main_context_iteration () from /lib64/libglib-2.0.so.0 #27 0x00007f9e29f464a6 in QEventDispatcherGlib::processEvents (this=0x1ed8e20, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #28 0x00007f9e29eebffb in QEventLoop::exec (this=this@entry=0x7ffda3d88b10, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69 #29 0x00007f9e2adada07 in QDialog::exec (this=0x241a520) at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #30 0x00000000005ea0ee in AnnotationDialog::Dialog::exec (this=0x241a520) at /home/victor/kphotoalbum/AnnotationDialog/Dialog.cpp:957 #31 0x00000000005e8399 in AnnotationDialog::Dialog::configure (this=0x241a520, list=..., oneAtATime=true) at /home/victor/kphotoalbum/AnnotationDialog/Dialog.cpp:768 #32 0x0000000000536c57 in MainWindow::Window::configImages (this=0x2042f90, list=..., oneAtATime=true) at /home/victor/kphotoalbum/MainWindow/Window.cpp:509 #33 0x0000000000536bf5 in MainWindow::Window::configureImages (list=..., oneAtATime=true) at /home/victor/kphotoalbum/MainWindow/Window.cpp:503 #34 0x0000000000536b4c in MainWindow::Window::configureImages (this=0x2042f90, oneAtATime=true) at /home/victor/kphotoalbum/MainWindow/Window.cpp:497 #35 0x00000000005369db in MainWindow::Window::slotConfigureImagesOneAtATime (this=0x2042f90) at /home/victor/kphotoalbum/MainWindow/Window.cpp:483 #36 0x000000000054e828 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (MainWindow::Window::*)()>::call(void (MainWindow::Window::*)(), MainWindow::Window*, void**) (f=(void (MainWindow::Window::*)(MainWindow::Window * const)) 0x5369be <MainWindow::Window::slotConfigureImagesOneAtATime()>, o=0x2042f90, arg=0x7ffda3d88f30) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:152 #37 0x000000000054de6d in QtPrivate::FunctionPointer<void (MainWindow::Window::*)()>::call<QtPrivate::List<>, void>(void (MainWindow::Window::*)(), MainWindow::Window*, void**) (f=(void (MainWindow::Window::*)(MainWindow::Window * const)) 0x5369be <MainWindow::Window::slotConfigureImagesOneAtATime()>, o=0x2042f90, arg=0x7ffda3d88f30) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:185 #38 0x000000000054c5e9 in QtPrivate::QSlotObject<void (MainWindow::Window::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x24b6960, r=0x2042f90, a=0x7ffda3d88f30, ret=0x0) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:418 #39 0x00007f9e29f25812 in QtPrivate::QSlotObjectBase::call (a=0x7ffda3d88f30, r=0x2042f90, this=0x24b6960) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #40 doActivate<false> (sender=0x24b6a90, signal_index=4, argv=0x7ffda3d88f30) at kernel/qobject.cpp:3925 #41 0x00007f9e29f1e47f in QMetaObject::activate (sender=sender@entry=0x24b6a90, m=m@entry=0x7f9e2b0bacc0 <QAction::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x7ffda3d88f30) at kernel/qobject.cpp:3985 #42 0x00007f9e2ab9e8b2 in QAction::triggered (this=this@entry=0x24b6a90, _t1=<optimized out>) at .moc/moc_qaction.cpp:376 #43 0x00007f9e2aba142f in QAction::activate (this=0x24b6a90, event=<optimized out>) at kernel/qaction.cpp:1161 #44 0x00007f9e2ad25ef2 in QMenuPrivate::activateCausedStack (this=this@entry=0x255f000, causedStack=..., action=action@entry=0x24b6a90, action_e=action_e@entry=QAction::Trigger, self=self@entry=true) at widgets/qmenu.cpp:1384 #45 0x00007f9e2ad2dd23 in QMenuPrivate::activateAction (this=0x255f000, action=0x24b6a90, action_e=QAction::Trigger, self=true) at widgets/qmenu.cpp:1461 #46 0x00007f9e2abe6d68 in QWidget::event (this=0x7ffda3d89bf0, event=0x7ffda3d89520) at kernel/qwidget.cpp:9045 #47 0x00007f9e2aba519e in QApplicationPrivate::notify_helper (this=this@entry=0x1dfe1c0, receiver=receiver@entry=0x7ffda3d89bf0, e=e@entry=0x7ffda3d89520) at kernel/qapplication.cpp:3640 #48 0x00007f9e2abad5cf in QApplication::notify (this=<optimized out>, receiver=<optimized out>, e=0x7ffda3d89520) at kernel/qapplication.cpp:3084 #49 0x00007f9e29eed568 in QCoreApplication::notifyInternal2 (receiver=0x7ffda3d89bf0, event=0x7ffda3d89520) at kernel/qcoreapplication.cpp:1064 #50 0x00007f9e29eed73e in QCoreApplication::sendSpontaneousEvent (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1474 #51 0x00007f9e2abab92e in QApplicationPrivate::sendMouseEvent (receiver=0x7ffda3d89bf0, event=event@entry=0x7ffda3d89520, alienWidget=<optimized out>, nativeWidget=0x7ffda3d89bf0, buttonDown=buttonDown@entry=0x7f9e2b0f2330 <qt_button_down>, lastMouseReceiver=..., spontaneous=true, onlyDispatchEnterLeave=false) at kernel/qapplication.cpp:2622 #52 0x00007f9e2ac002ca in QWidgetWindow::handleMouseEvent (this=this@entry=0x356e830, event=event@entry=0x7ffda3d897d0) at kernel/qwidgetwindow.cpp:580 #53 0x00007f9e2ac02d1f in QWidgetWindow::event (this=0x356e830, event=0x7ffda3d897d0) at kernel/qwidgetwindow.cpp:300 #54 0x00007f9e2aba519e in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x356e830, e=0x7ffda3d897d0) at kernel/qapplication.cpp:3640 #55 0x00007f9e29eed568 in QCoreApplication::notifyInternal2 (receiver=0x356e830, event=0x7ffda3d897d0) at kernel/qcoreapplication.cpp:1064 #56 0x00007f9e29eed73e in QCoreApplication::sendSpontaneousEvent (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1474 #57 0x00007f9e2a37d0eb in QGuiApplicationPrivate::processMouseEvent (e=0x2b22e00) at kernel/qguiapplication.cpp:2285 #58 0x00007f9e2a35036c in QWindowSystemInterface::sendWindowSystemEvents (flags=flags@entry=...) at kernel/qwindowsysteminterface.cpp:1169 #59 0x00007f9e1e51b1aa in xcbSourceDispatch (source=<optimized out>) at qxcbeventdispatcher.cpp:105 #60 0x00007f9e2672b9d8 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0 #61 0x00007f9e2672bde8 in ?? () from /lib64/libglib-2.0.so.0 #62 0x00007f9e2672be7c in g_main_context_iteration () from /lib64/libglib-2.0.so.0 #63 0x00007f9e29f464a6 in QEventDispatcherGlib::processEvents (this=0x1ed8e20, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #64 0x00007f9e29eebffb in QEventLoop::exec (this=this@entry=0x7ffda3d89b10, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69 #65 0x00007f9e2ad2b70f in QMenuPrivate::exec(QPoint const&, QAction*, std::function<QPoint (QSize const&)>) (this=0x255f000, p=..., action=0x0, positionFunction=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #66 0x00007f9e2ad2b82f in QMenu::exec (this=<optimized out>, p=..., action=<optimized out>) at widgets/qmenu.cpp:2686 #67 0x0000000000541abe in MainWindow::Window::contextMenuEvent (this=0x2042f90, e=0x7ffda3d89f40) at /home/victor/kphotoalbum/MainWindow/Window.cpp:1318 #68 0x00007f9e2abe6d68 in QWidget::event (this=0x2042f90, event=0x7ffda3d89f40) at kernel/qwidget.cpp:9045 #69 0x00007f9e3558e469 in KXmlGuiWindow::event(QEvent*) () from /lib64/libKF5XmlGui.so.5 #70 0x0000000000538843 in MainWindow::Window::event (this=0x2042f90, event=0x7ffda3d89f40) at /home/victor/kphotoalbum/MainWindow/Window.cpp:751 #71 0x00007f9e2aba519e in QApplicationPrivate::notify_helper (this=this@entry=0x1dfe1c0, receiver=receiver@entry=0x2042f90, e=e@entry=0x7ffda3d89f40) at kernel/qapplication.cpp:3640 #72 0x00007f9e2abadaaa in QApplication::notify (this=<optimized out>, receiver=<optimized out>, e=0x7ffda3d8a170) at kernel/qapplication.cpp:3246 #73 0x00007f9e29eed568 in QCoreApplication::notifyInternal2 (receiver=0x24160d0, event=0x7ffda3d8a170) at kernel/qcoreapplication.cpp:1064 #74 0x00007f9e29eed5b2 in QCoreApplication::forwardEvent (receiver=<optimized out>, event=<optimized out>, originatingEvent=<optimized out>) at kernel/qcoreapplication.cpp:1079 #75 0x00007f9e2abfff59 in QWidgetWindow::handleMouseEvent (this=this@entry=0x22f5fb0, event=event@entry=0x7ffda3d8a460) at kernel/qwidgetwindow.cpp:692 #76 0x00007f9e2ac02d1f in QWidgetWindow::event (this=0x22f5fb0, event=0x7ffda3d8a460) at kernel/qwidgetwindow.cpp:300 #77 0x00007f9e2aba519e in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x22f5fb0, e=0x7ffda3d8a460) at kernel/qapplication.cpp:3640 #78 0x00007f9e29eed568 in QCoreApplication::notifyInternal2 (receiver=0x22f5fb0, event=0x7ffda3d8a460) at kernel/qcoreapplication.cpp:1064 #79 0x00007f9e29eed73e in QCoreApplication::sendSpontaneousEvent (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1474 #80 0x00007f9e2a37d0eb in QGuiApplicationPrivate::processMouseEvent (e=0x3b95e00) at kernel/qguiapplication.cpp:2285 #81 0x00007f9e2a35036c in QWindowSystemInterface::sendWindowSystemEvents (flags=flags@entry=...) at kernel/qwindowsysteminterface.cpp:1169 #82 0x00007f9e1e51b1aa in xcbSourceDispatch (source=<optimized out>) at qxcbeventdispatcher.cpp:105 #83 0x00007f9e2672b9d8 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0 #84 0x00007f9e2672bde8 in ?? () from /lib64/libglib-2.0.so.0 #85 0x00007f9e2672be7c in g_main_context_iteration () from /lib64/libglib-2.0.so.0 #86 0x00007f9e29f464a6 in QEventDispatcherGlib::processEvents (this=0x1ed8e20, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #87 0x00007f9e29eebffb in QEventLoop::exec (this=this@entry=0x7ffda3d8a790, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69 #88 0x00007f9e29ef4490 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #89 0x0000000000472a30 in main (argc=2, argv=0x7ffda3d8ae98) at /home/victor/kphotoalbum/main.cpp:161 [Inferior 1 (process 4657) detached] Git commit 3786a06ee0fc8c9edbf92bd3e4a12c752f5dbec1 by Johannes Zarl-Zierl. Committed on 13/10/2023 at 09:57. Pushed by johanneszarl into branch 'master'. Fix crash when annotated image is deleted while full screen preview is active. If the last image in the annotation dialog was deleted while the dialog was showing the fullscreen preview, instead of closing the dialog as expected, only the fullscreen preview was toggled. This lead to the annotation dialog still showing the last image, even though it should have been closed - thus triggering the same behaviour as described in bug #475387. M +3 -2 AnnotationDialog/Dialog.cpp https://invent.kde.org/graphics/kphotoalbum/-/commit/3786a06ee0fc8c9edbf92bd3e4a12c752f5dbec1 Thanks, good catch! Fix is good. Thank you! |