Bug 470252 - [regression] Gwenview crashes when trying to load a multi-image tiff file
Summary: [regression] Gwenview crashes when trying to load a multi-image tiff file
Status: RESOLVED WORKSFORME
Alias: None
Product: gwenview
Classification: Applications
Component: general (other bugs)
Version First Reported In: Git (add output of "git log -1 --oneline" to description)
Platform: Other Linux
: NOR crash
Target Milestone: ---
Assignee: Gwenview Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-05-25 12:37 UTC by Oded Arbel
Modified: 2025-08-25 12:13 UTC (History)
1 user (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Oded Arbel 2023-05-25 12:37:54 UTC
SUMMARY
Running Gwenview from kdesrc building for Plasma 6, git: 
0878375b (HEAD -> master, origin/master, origin/HEAD) GIT_SILENT Sync po/docbooks with svn

When trying to open a mutli-image tiff file - saved from a GIMP multiple layers image - gwenview crashes.

This is a regression - gwenview from Neon unstable package 4:23.04.1+p22.04+tunstable+git20230525.0041-0 successfully opens these files.

Here's a backtrace from drkonqi's "interactive debugger" session:

---8<---
Core was generated by `gwenview /home/odeda/Documents/mobile/media/Walls/art/unsorted1/Victoria.(Illus'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  wl_proxy_get_version (proxy=0x0) at ../src/wayland-client.c:2248
2248    ../src/wayland-client.c: No such file or directory.
[Current thread is 1 (Thread 0x7f29823d0640 (LWP 2940239))]
(gdb) bt
#0  wl_proxy_get_version (proxy=0x0) at ../src/wayland-client.c:2248
#1  0x00007f298982dbe8 in zwp_pointer_gestures_v1_release (zwp_pointer_gestures_v1=0x0)
    at /home/odeda/kde/build/gwenview/lib/wayland-pointer-gestures-unstable-v1-client-protocol.h:309
#2  0x00007f298982e08c in QtWayland::zwp_pointer_gestures_v1::release (this=0x55b848a93f60)
    at /home/odeda/kde/build/gwenview/lib/qwayland-pointer-gestures-unstable-v1.cpp:85
#3  0x00007f29897ffc5f in Gwenview::WaylandGestures::~WaylandGestures (this=0x55b848a8d220, __in_chrg=<optimized out>)
    at /home/odeda/kde/src/gwenview/lib/waylandgestures/waylandgestures.cpp:92
#4  0x00007f29897ffcac in Gwenview::WaylandGestures::~WaylandGestures (this=0x55b848a8d220, __in_chrg=<optimized out>)
    at /home/odeda/kde/src/gwenview/lib/waylandgestures/waylandgestures.cpp:97
#5  0x00007f298971bc7e in Gwenview::DocumentView::~DocumentView (this=0x55b848022c70, __in_chrg=<optimized out>)
    at /home/odeda/kde/src/gwenview/lib/documentview/documentview.cpp:499
#6  0x00007f298971bd4a in Gwenview::DocumentView::~DocumentView (this=0x55b848022c70, __in_chrg=<optimized out>)
    at /home/odeda/kde/src/gwenview/lib/documentview/documentview.cpp:504
#7  0x00007f29897432da in qDeleteAll<QSet<Gwenview::DocumentView*>::const_iterator> (begin=..., end=...)
    at /usr/include/x86_64-linux-gnu/qt6/QtCore/qalgorithms.h:27
#8  0x00007f29897422cc in qDeleteAll<QSet<Gwenview::DocumentView*> > (c=...)
    at /usr/include/x86_64-linux-gnu/qt6/QtCore/qalgorithms.h:35
#9  0x00007f2989741f10 in Gwenview::DocumentViewContainerPrivate::resetSet (this=0x55b8482d6cc0, set=0x55b8482d6ce0)
    at /home/odeda/kde/src/gwenview/lib/documentview/documentviewcontainer.cpp:76
#10 0x00007f29897408c4 in Gwenview::DocumentViewContainer::reset (this=0x55b8482dac20)
    at /home/odeda/kde/src/gwenview/lib/documentview/documentviewcontainer.cpp:145
#11 0x000055b845f1c978 in Gwenview::ViewMainPage::reset (this=0x55b84830b750)
    at /home/odeda/kde/src/gwenview/app/viewmainpage.cpp:786
#12 0x000055b845f5b3ce in Gwenview::MainWindow::openDirUrl (this=0x55b847dc8400, url=...)
    at /home/odeda/kde/src/gwenview/app/mainwindow.cpp:1351
#13 0x000055b845f7043f in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<QUrl const&>, void, void (Gwenview::MainWindow::*)(QUrl const&)>::call (
    f=(void (Gwenview::MainWindow::*)(Gwenview::MainWindow * const, const QUrl &)) 0x55b845f5b0b4 <Gwenview::MainWindow::openDirUrl(QUrl const&)>, o=0x55b847dc8400, arg=0x7ffef8dceb80) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:135
#14 0x000055b845f6f4c9 in QtPrivate::FunctionPointer<void (Gwenview::MainWindow::*)(QUrl const&)>::call<QtPrivate::List<QUrl const&>, void> (
    f=(void (Gwenview::MainWindow::*)(Gwenview::MainWindow * const, const QUrl &)) 0x55b845f5b0b4 <Gwenview::MainWindow::openDirUrl(QUrl const&)>, o=0x55b847dc8400, arg=0x7ffef8dceb80) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:172
#15 0x000055b845f6dafb in QtPrivate::QSlotObject<void (Gwenview::MainWindow::*)(QUrl const&), QtPrivate::List<QUrl const&>, void>::impl (which=1, this_=0x55b8482a1800, r=0x55b847dc8400, a=0x7ffef8dceb80, ret=0x0)
    at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:384
#16 0x00007f298678e1f7 in QtPrivate::QSlotObjectBase::call (a=0x7ffef8dceb80, r=0x55b847dc8400, this=<optimized out>)
    at ./src/corelib/kernel/qobjectdefs_impl.h:363
#17 doActivate<false> (sender=0x55b847b74d20, signal_index=8, argv=0x7ffef8dceb80) at ./src/corelib/kernel/qobject.cpp:3992
#18 0x00007f298936bb1a in KUrlNavigator::urlChanged (this=0x55b847b74d20, _t1=...)
    at /home/odeda/kde/build/kio/src/filewidgets/KF6KIOFileWidgets_autogen/include/moc_kurlnavigator.cpp:391
#19 0x00007f298936526d in operator() (__closure=0x55b8482cf940) at /home/odeda/kde/src/kio/src/filewidgets/kurlnavigator.cpp:198
#20 0x00007f298936eae5 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, KUrlNavigatorPrivate::KUrlNavigatorPrivate(const QUrl&, KUrlNavigator*, KFilePlacesModel*)::<lambda()> >::call(struct {...} &, void **) (f=..., 
    arg=0x7ffef8dced28) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:127
#21 0x00007f298936e6d5 in QtPrivate::Functor<KUrlNavigatorPrivate::KUrlNavigatorPrivate(const QUrl&, KUrlNavigator*, KFilePlacesModel*)::<lambda()>, 0>::call<QtPrivate::List<>, void>(struct {...} &, void *, void **) (f=..., arg=0x7ffef8dced28)
    at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:241
#22 0x00007f298936d9c8 in QtPrivate::QFunctorSlotObject<KUrlNavigatorPrivate::KUrlNavigatorPrivate(const QUrl&, KUrlNavigator*, KFilePlacesModel*)::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (
    which=1, this_=0x55b8482cf930, r=0x55b847b74d20, a=0x7ffef8dced28, ret=0x0)
    at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:409
#23 0x00007f298678e1f7 in QtPrivate::QSlotObjectBase::call (a=0x7ffef8dced28, r=0x55b847b74d20, this=<optimized out>)
    at ./src/corelib/kernel/qobjectdefs_impl.h:363
#24 doActivate<false> (sender=0x55b848157580, signal_index=3, argv=0x7ffef8dced28) at ./src/corelib/kernel/qobject.cpp:3992
#25 0x00007f298954135f in KCoreUrlNavigator::currentLocationUrlChanged (this=0x55b848157580)
    at /home/odeda/kde/build/kio/src/gui/KF6KIOGui_autogen/EWIEGA46WW/moc_kcoreurlnavigator.cpp:379
#26 0x00007f298955904e in KCoreUrlNavigator::setCurrentLocationUrl (this=0x55b848157580, newUrl=...)
    at /home/odeda/kde/src/kio/src/gui/kcoreurlnavigator.cpp:246
#27 0x00007f298936ab7f in KUrlNavigator::setLocationUrl (this=0x55b847b74d20, newUrl=...)
    at /home/odeda/kde/src/kio/src/filewidgets/kurlnavigator.cpp:1063
#28 0x00007f298936637f in KUrlNavigatorPrivate::slotApplyUrl (this=0x55b847fdbe40, url=...)
    at /home/odeda/kde/src/kio/src/filewidgets/kurlnavigator.cpp:311
#29 0x00007f29893666ab in operator() (__closure=0x55b84811e970) at /home/odeda/kde/src/kio/src/filewidgets/kurlnavigator.cpp:371
#30 0x00007f298936efb6 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, KUrlNavigatorPrivate::applyUncommittedUrl()::<lambda()> >::call(struct {...} &, void **) (f=..., arg=0x7ffef8dcf1b0)
    at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:127
#31 0x00007f298936e8f7 in QtPrivate::Functor<KUrlNavigatorPrivate::applyUncommittedUrl()::<lambda()>, 0>::call<QtPrivate::List<>, void>(struct {...} &, void *, void **) (f=..., arg=0x7ffef8dcf1b0)
    at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:241
#32 0x00007f298936e10e in QtPrivate::QFunctorSlotObject<KUrlNavigatorPrivate::applyUncommittedUrl()::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0x55b84811e960, 
    r=0x55b847b74d20, a=0x7ffef8dcf1b0, ret=0x0) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:409
#33 0x00007f298678e1f7 in QtPrivate::QSlotObjectBase::call (a=0x7ffef8dcf1b0, r=0x55b847b74d20, this=<optimized out>)
    at ./src/corelib/kernel/qobjectdefs_impl.h:363
#34 doActivate<false> (sender=0x55b8482ad1a0, signal_index=6, argv=0x7ffef8dcf1b0) at ./src/corelib/kernel/qobject.cpp:3992
#35 0x00007f2986d48c2f in KJob::result (this=0x55b8482ad1a0, _t1=0x55b8482ad1a0, _t2=...)
    at /home/odeda/kde/build/kcoreaddons/src/lib/KF6CoreAddons_autogen/include/moc_kjob.cpp:823
#36 0x00007f2986d4631d in KJob::finishJob (this=0x55b8482ad1a0, emitResult=true)
    at /home/odeda/kde/src/kcoreaddons/src/lib/jobs/kjob.cpp:98
#37 0x00007f2986d4704b in KJob::emitResult (this=0x55b8482ad1a0) at /home/odeda/kde/src/kcoreaddons/src/lib/jobs/kjob.cpp:329
#38 0x00007f2988b357ee in KIO::SimpleJob::slotFinished (this=0x55b8482ad1a0)
    at /home/odeda/kde/src/kio/src/core/simplejob.cpp:229
#39 0x00007f2988b39c6a in KIO::StatJob::slotFinished (this=0x55b8482ad1a0) at /home/odeda/kde/src/kio/src/core/statjob.cpp:170
#40 0x00007f2988b38b1f in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (KIO::SimpleJob::*)()>::call(void (KIO::SimpleJob::*)(), KIO::SimpleJob*, void**) (f=&virtual KIO::SimpleJob::slotFinished(), o=0x55b8482ad1a0, 
    arg=0x55b848278238) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:135
#41 0x00007f2988b38839 in QtPrivate::FunctionPointer<void (KIO::SimpleJob::*)()>::call<QtPrivate::List<>, void>(void (KIO::SimpleJob::*)(), KIO::SimpleJob*, void**) (f=&virtual KIO::SimpleJob::slotFinished(), o=0x55b8482ad1a0, arg=0x55b848278238)
    at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:172
#42 0x00007f2988b386c5 in QtPrivate::QSlotObject<void (KIO::SimpleJob::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x55b8482ad260, r=0x55b8482ad1a0, a=0x55b848278238, ret=0x0)
    at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:384
#43 0x00007f298678327f in QObject::event (this=0x55b8482ad1a0, e=0x55b8482781f0) at ./src/corelib/kernel/qobject.cpp:1391
#44 0x00007f29877874a6 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x55b8482ad1a0, e=0x55b8482781f0)
    at ./src/widgets/kernel/qapplication.cpp:3284
#45 0x00007f29867370b8 in QCoreApplication::notifyInternal2 (receiver=0x55b8482ad1a0, event=0x55b8482781f0)
    at ./src/corelib/kernel/qcoreapplication.cpp:1115
#46 0x00007f298673727d in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>)
    at ./src/corelib/kernel/qcoreapplication.cpp:1533
#47 0x00007f298673ab57 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x55b847ac5970)
    at ./src/corelib/kernel/qcoreapplication.cpp:1895
--Type <RET> for more, q to quit, c to continue without paging--
#48 0x00007f298673ae10 in QCoreApplication::sendPostedEvents (receiver=<optimized out>, event_type=<optimized out>)
    at ./src/corelib/kernel/qcoreapplication.cpp:1754
#49 0x00007f2986996ac7 in postEventSourceDispatch (s=0x55b847b2db10) at ./src/corelib/kernel/qeventdispatcher_glib.cpp:243
#50 0x00007f29852c649d in g_main_dispatch (context=0x7f297c000f10) at ../../../glib/gmain.c:3460
#51 g_main_context_dispatch (context=0x7f297c000f10) at ../../../glib/gmain.c:4200
#52 0x00007f2985321178 in g_main_context_iterate.constprop.0 (context=0x7f297c000f10, block=<optimized out>, dispatch=1, 
    self=<optimized out>) at ../../../glib/gmain.c:4276
#53 0x00007f29852c51b0 in g_main_context_iteration (context=0x7f297c000f10, may_block=1) at ../../../glib/gmain.c:4343
#54 0x00007f298699632e in QEventDispatcherGlib::processEvents (this=0x55b847aca5b0, flags=...)
    at ./src/corelib/kernel/qeventdispatcher_glib.cpp:393
#55 0x00007f2986743a5b in QEventLoop::exec (this=this@entry=0x7ffef8dcf7f0, flags=..., flags@entry=...)
    at ./src/corelib/global/qflags.h:34
#56 0x00007f298673f8e6 in QCoreApplication::exec () at ./src/corelib/global/qflags.h:74
#57 0x000055b845f57bd6 in main (argc=2, argv=0x7ffef8dcfb08) at /home/odeda/kde/src/gwenview/app/main.cpp:213
---8<---
Comment 1 Oded Arbel 2023-05-25 22:47:02 UTC
This is apparently not TIFF specific - I get the exact same crash (and backtrace) when trying to open webp and avif files, or even when running gwenview with a command line argument that is not an image file or not even an existing file.

Though I didn't encounter a problem opening png or jpeg files.
Comment 2 A Linux User 2025-08-19 17:12:20 UTC
Thank you for the bug report. Unfortunately we were not able to get to it yet. Can we ask you to please check if this is still an issue with Gwenview 25.08.0 (the latest released version)?
Comment 3 Oded Arbel 2025-08-25 12:13:35 UTC
While I'm not 100% clear on the reproduction, I have failed to cause crash Gwenview 25.08.0 with a multi-image tiff.