Bug 479345

Summary: вылет во время удаления файлов
Product: [Applications] gwenview Reporter: andrey <lastchel>
Component: generalAssignee: Gwenview Bugs <gwenview-bugs-null>
Status: CONFIRMED ---    
Severity: crash CC: pehg_
Priority: NOR Keywords: drkonqi
Version First Reported In: 23.08.4   
Target Milestone: ---   
Platform: Fedora RPMs   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description andrey 2024-01-03 07:44:47 UTC
Application: gwenview (23.08.4)

Qt Version: 5.15.11
Frameworks Version: 5.111.0
Operating System: Linux 6.6.8-200.fc39.x86_64 x86_64
Windowing System: X11
Distribution: Fedora Linux 39 (KDE Plasma)
DrKonqi: 5.27.10 [KCrashBackend]

-- Information about the crash:
листал папку с картинками, попутно удаляя ненужные. на 10й картинке программа зависла. картинки были тяжёлыми (6 мб+)

The crash does not seem to be reproducible.

-- Backtrace:
Application: Gwenview (gwenview), signal: Segmentation fault

[KCrash Handler]
#4  0x0000564dfb849c10 in Gwenview::MainWindow::onFocusChanged(QWidget*, QWidget*) ()
#5  0x00007fcd9b2e8871 in void doActivate<false>(QObject*, int, void**) () from /lib64/libQt5Core.so.5
#6  0x00007fcd9bfad347 in QApplication::focusChanged(QWidget*, QWidget*) () from /lib64/libQt5Widgets.so.5
#7  0x00007fcd9bfedadc in QWidget::clearFocus() () from /lib64/libQt5Widgets.so.5
#8  0x00007fcd9bfeec18 in QWidget::~QWidget() () from /lib64/libQt5Widgets.so.5
#9  0x00007fcd9c1ad4a5 in QToolButton::~QToolButton() () from /lib64/libQt5Widgets.so.5
#10 0x00007fcd9b2dd84b in QObjectPrivate::deleteChildren() () from /lib64/libQt5Core.so.5
#11 0x00007fcd9bfeed38 in QWidget::~QWidget() () from /lib64/libQt5Widgets.so.5
#12 0x00007fcd9d1cf835 in Gwenview::ZoomWidget::~ZoomWidget() () from /lib64/libgwenviewlib.so.5
#13 0x00007fcd9b2dd84b in QObjectPrivate::deleteChildren() () from /lib64/libQt5Core.so.5
#14 0x00007fcd9bfeed38 in QWidget::~QWidget() () from /lib64/libQt5Widgets.so.5
#15 0x00007fcd9bfef085 in QWidget::~QWidget() () from /lib64/libQt5Widgets.so.5
#16 0x00007fcd9b2dd84b in QObjectPrivate::deleteChildren() () from /lib64/libQt5Core.so.5
#17 0x00007fcd9bfeed38 in QWidget::~QWidget() () from /lib64/libQt5Widgets.so.5
#18 0x0000564dfb81e455 in Gwenview::ViewMainPage::~ViewMainPage() ()
#19 0x00007fcd9b2dd84b in QObjectPrivate::deleteChildren() () from /lib64/libQt5Core.so.5
#20 0x00007fcd9bfeed38 in QWidget::~QWidget() () from /lib64/libQt5Widgets.so.5
#21 0x00007fcd9c1757f5 in QStackedWidget::~QStackedWidget() () from /lib64/libQt5Widgets.so.5
#22 0x00007fcd9b2dd84b in QObjectPrivate::deleteChildren() () from /lib64/libQt5Core.so.5
#23 0x00007fcd9bfeed38 in QWidget::~QWidget() () from /lib64/libQt5Widgets.so.5
#24 0x00007fcd9bfef085 in QWidget::~QWidget() () from /lib64/libQt5Widgets.so.5
#25 0x00007fcd9b2dd84b in QObjectPrivate::deleteChildren() () from /lib64/libQt5Core.so.5
#26 0x00007fcd9bfeed38 in QWidget::~QWidget() () from /lib64/libQt5Widgets.so.5
#27 0x0000564dfb829d49 in Gwenview::Splitter::~Splitter() [clone .lto_priv.0] ()
#28 0x00007fcd9b2dd84b in QObjectPrivate::deleteChildren() () from /lib64/libQt5Core.so.5
#29 0x00007fcd9bfeed38 in QWidget::~QWidget() () from /lib64/libQt5Widgets.so.5
#30 0x0000564dfb8402a1 in Gwenview::MainWindow::~MainWindow() ()
#31 0x0000564dfb8403a5 in Gwenview::MainWindow::~MainWindow() ()
#32 0x00007fcd9b2def59 in QObject::event(QEvent*) () from /lib64/libQt5Core.so.5
#33 0x00007fcd9c9f03bf in KXmlGuiWindow::event(QEvent*) () from /lib64/libKF5XmlGui.so.5
#34 0x00007fcd9bfaeb75 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib64/libQt5Widgets.so.5
#35 0x00007fcd9b2b4598 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib64/libQt5Core.so.5
#36 0x00007fcd9b2b7a45 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /lib64/libQt5Core.so.5
#37 0x00007fcd9b306fef in postEventSourceDispatch(_GSource*, int (*)(void*), void*) () from /lib64/libQt5Core.so.5
#38 0x00007fcd99311e5c in g_main_context_dispatch_unlocked.lto_priv () from /lib64/libglib-2.0.so.0
#39 0x00007fcd9936cf18 in g_main_context_iterate_unlocked.isra () from /lib64/libglib-2.0.so.0
#40 0x00007fcd9930fad3 in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#41 0x00007fcd9b306ad9 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#42 0x00007fcd9b2b2f5b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#43 0x00007fcd9b2bb1eb in QCoreApplication::exec() () from /lib64/libQt5Core.so.5
#44 0x0000564dfb810ae9 in main ()
[Inferior 1 (process 4658) detached]

Reported using DrKonqi
Comment 1 Pedro 2025-02-10 02:39:47 UTC
I can reproduce this issue in a more recent version of Gwenview, but it doesn’t seem consistent and the backtrace looks different. Here I list the steps I follow but I don’t know what conditions are important.

Procedure
- Open a directory with Gwenview.
    - The directory has 72 images from 7MB to 11MB, but I've been able to replicate it with smaller images.
- Display the images in the `Browse` view
- Set the zoom so the vertical scrollbar is about half the window.
- Select the last visible image with the vertical scrollbar all to the top
- Start deleting images from the the selected image to the first one. Move using the arrow keys.
- Repeat delete process if the app doesn’t crash
    - I've seen it crash at the 6th deleted image but sometimes it takes more than 20 deleted images, or even it doesn't happen and I need to copy the images and try again.


Software
  Operating System: TUXEDO OS 
  KDE Plasma Version: 6.2.5
  KDE Frameworks Version: 6.10.0
  Qt Version: 6.8.1
  Kernel Version: 6.11.0-108014-tuxedo (64-bit)
  Graphics Platform: Wayland


Backtrace

Application: Gwenview (gwenview), signal: Segmentation fault
Content of s_kcrashErrorMessage: std::unique_ptr<char []> = {get() = <optimized out>}
[KCrash Handler]
#4  0x000076b8584b9e10 in Gwenview::Document::setExiv2Image (this=0x5cb686641, image=std::unique_ptr<Exiv2::Image> = {...}) at /usr/src/gwenview-4:24.12.1-0zneon+24.04+noble+release+build15/lib/document/document.cpp:392
#5  0x000076b8584c17c3 in Gwenview::AbstractDocumentImpl::setDocumentExiv2Image (this=0x5cb6866867c0, image=std::unique_ptr<Exiv2::Image> = {...}) at /usr/src/gwenview-4:24.12.1-0zneon+24.04+noble+release+build15/lib/document/abstractdocumentimpl.cpp:81
#6  Gwenview::LoadingDocumentImpl::slotMetaInfoLoaded (this=0x5cb6866867c0) at /usr/src/gwenview-4:24.12.1-0zneon+24.04+noble+release+build15/lib/document/loadingdocumentimpl.cpp:488
#7  0x000076b85607ada9 in QtPrivate::QSlotObjectBase::call (a=0x7ffcc58908f8, r=<optimized out>, this=0x5cb686631950, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/qt6-base-6.8.1-0zneon+24.04+noble+release+build38/src/corelib/kernel/qobjectdefs_impl.h:486
#8  doActivate<false> (sender=0x5cb685d89298, signal_index=4, argv=0x7ffcc58908f8) at /usr/src/qt6-base-6.8.1-0zneon+24.04+noble+release+build38/src/corelib/kernel/qobject.cpp:4124
#9  0x000076b855eac648 in QFutureWatcherBasePrivate::sendCallOutEvent (event=0x76b7e804f010, this=0x5cb685e58360) at /usr/src/qt6-base-6.8.1-0zneon+24.04+noble+release+build38/src/corelib/thread/qfuturewatcher.cpp:493
#10 QFutureWatcherBase::event (this=<optimized out>, event=0x76b7e804f010) at /usr/src/qt6-base-6.8.1-0zneon+24.04+noble+release+build38/src/corelib/thread/qfuturewatcher.cpp:392
#11 0x000076b8571fff48 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5cb685d89298, e=0x76b7e804f010) at /usr/src/qt6-base-6.8.1-0zneon+24.04+noble+release+build38/src/widgets/kernel/qapplication.cpp:3296
#12 0x000076b8560b5718 in QCoreApplication::notifyInternal2 (receiver=0x5cb685d89298, event=0x76b7e804f010) at /usr/src/qt6-base-6.8.1-0zneon+24.04+noble+release+build38/src/corelib/kernel/qcoreapplication.cpp:1168
#13 0x000076b8560b575d in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/qt6-base-6.8.1-0zneon+24.04+noble+release+build38/src/corelib/kernel/qcoreapplication.cpp:1612
#14 0x000076b8560b8242 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x5cb685327d00) at /usr/src/qt6-base-6.8.1-0zneon+24.04+noble+release+build38/src/corelib/kernel/qcoreapplication.cpp:1968
#15 0x000076b855e725cf in postEventSourceDispatch (s=s@entry=0x5cb68535fa20) at /usr/src/qt6-base-6.8.1-0zneon+24.04+noble+release+build38/src/corelib/kernel/qeventdispatcher_glib.cpp:246
#16 0x000076b853f9e5b5 in g_main_dispatch (context=0x76b848000f30) at ../../../glib/gmain.c:3344
#17 0x000076b853ffd717 in g_main_context_dispatch_unlocked (context=0x76b848000f30) at ../../../glib/gmain.c:4152
#18 g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x76b848000f30, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4217
#19 0x000076b853f9da53 in g_main_context_iteration (context=0x76b848000f30, may_block=1) at ../../../glib/gmain.c:4282
#20 0x000076b855e702cf in QEventDispatcherGlib::processEvents (this=0x5cb6852e9910, flags=...) at /usr/src/qt6-base-6.8.1-0zneon+24.04+noble+release+build38/src/corelib/kernel/qeventdispatcher_glib.cpp:399
#21 0x000076b8560c1aeb in QEventLoop::exec (this=0x7ffcc5890d60, flags=...) at /usr/src/qt6-base-6.8.1-0zneon+24.04+noble+release+build38/src/corelib/global/qflags.h:34
#22 0x000076b8560b8c2d in QCoreApplication::exec () at /usr/src/qt6-base-6.8.1-0zneon+24.04+noble+release+build38/src/corelib/global/qflags.h:74
#23 0x000076b8564d6fbd in QGuiApplication::exec () at /usr/src/qt6-base-6.8.1-0zneon+24.04+noble+release+build38/src/gui/kernel/qguiapplication.cpp:1975
#24 0x000076b8571f9069 in QApplication::exec () at /usr/src/qt6-base-6.8.1-0zneon+24.04+noble+release+build38/src/widgets/kernel/qapplication.cpp:2564
#25 0x00005cb679a3fae5 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/gwenview-4:24.12.1-0zneon+24.04+noble+release+build15/app/main.cpp:221
[Inferior 1 (process 30581) detached]