Bug 417218 - Crash when doing operations on pictures
Summary: Crash when doing operations on pictures
Status: CONFIRMED
Alias: None
Product: gwenview
Classification: Applications
Component: general (show other bugs)
Version: Git (add output of "git log -1 --oneline" to description)
Platform: Other Linux
: NOR crash
Target Milestone: ---
Assignee: Gwenview Bugs
URL:
Keywords:
: 439146 (view as bug list)
Depends on:
Blocks:
 
Reported: 2020-02-06 09:00 UTC by Christophe Marin
Modified: 2022-09-20 20:01 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
New crash information added by DrKonqi (8.29 KB, text/plain)
2020-11-02 10:40 UTC, Ondrej Holecek
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Christophe Marin 2020-02-06 09:00:47 UTC
Also reproducible with a local git build:

Performing operation on any picture triggers the crash (eg, after pressing "apply" after cropping an image or using the "flip" button)


Application: Gwenview (gwenview), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
29	  return SYSCALL_CANCEL (poll, fds, nfds, timeout);
[Current thread is 1 (Thread 0x7fbf664239c0 (LWP 18300))]

Thread 4 (Thread 0x7f7f5f05b700 (LWP 18337)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x56253fde5754) at ../sysdeps/unix/sysv/linux/futex-internal.h:80
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x56253fde5700, cond=0x56253fde5728) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x56253fde5728, mutex=0x56253fde5700) at pthread_cond_wait.c:638
#3  0x00007fbf6997723b in QWaitConditionPrivate::wait (deadline=..., this=0x56253fde5700) at thread/qwaitcondition_unix.cpp:146
#4  QWaitCondition::wait (this=<optimized out>, mutex=0x56253fc4d8f8, deadline=...) at thread/qwaitcondition_unix.cpp:225
#5  0x00007fbf699772f9 in QWaitCondition::wait (this=this@entry=0x56253fc4d900, mutex=mutex@entry=0x56253fc4d8f8, time=time@entry=18446744073709551615) at ../../include/QtCore/../../src/corelib/kernel/qdeadlinetimer.h:68
#6  0x00007fbf6b50869c in Gwenview::ThumbnailGenerator::run (this=0x56253fc4d890) at /usr/src/debug/gwenview5-20.03.70git.20200109T101140~6ce5ccb0-ku.33.9.x86_64/lib/thumbnailprovider/thumbnailgenerator.cpp:248
#7  0x00007fbf699716f8 in QThreadPrivate::start (arg=0x56253fc4d890) at thread/qthread_unix.cpp:342
#8  0x00007fbf68088f2a in start_thread (arg=<optimized out>) at pthread_create.c:479
#9  0x00007fbf6b78d38f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7fbf61fb6700 (LWP 18334)):
#0  futex_abstimed_wait_cancelable (private=0, abstime=0x7fbf61fb5b10, clockid=<optimized out>, expected=0, futex_word=0x56253fd98130) at ../sysdeps/unix/sysv/linux/futex-internal.h:208
#1  __pthread_cond_wait_common (abstime=0x7fbf61fb5b10, clockid=<optimized out>, mutex=0x56253fd980e0, cond=0x56253fd98108) at pthread_cond_wait.c:520
#2  __pthread_cond_timedwait (cond=0x56253fd98108, mutex=0x56253fd980e0, abstime=0x7fbf61fb5b10) at pthread_cond_wait.c:656
#3  0x00007fbf699771c4 in QWaitConditionPrivate::wait_relative (this=0x56253fd980e0, deadline=...) at thread/qwaitcondition_unix.cpp:136
#4  QWaitConditionPrivate::wait (deadline=..., this=0x56253fd980e0) at thread/qwaitcondition_unix.cpp:144
#5  QWaitCondition::wait (this=<optimized out>, mutex=0x56253fb35a98, deadline=...) at thread/qwaitcondition_unix.cpp:225
#6  0x00007fbf699772c7 in QWaitCondition::wait (this=this@entry=0x56253fd97f10, mutex=mutex@entry=0x56253fb35a98, time=<optimized out>) at thread/qwaitcondition_unix.cpp:209
#7  0x00007fbf69974a3b in QThreadPoolThread::run (this=0x56253fd97f00) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:270
#8  0x00007fbf699716f8 in QThreadPrivate::start (arg=0x56253fd97f00) at thread/qthread_unix.cpp:342
#9  0x00007fbf68088f2a in start_thread (arg=<optimized out>) at pthread_create.c:479
#10 0x00007fbf6b78d38f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7fbf63e16700 (LWP 18302)):
#0  0x00007fbf6772e49f in g_source_ref () from /usr/lib64/libglib-2.0.so.0
#1  0x00007fbf6772e551 in ?? () from /usr/lib64/libglib-2.0.so.0
#2  0x00007fbf6772f7b3 in g_main_context_prepare () from /usr/lib64/libglib-2.0.so.0
#3  0x00007fbf6773021b in ?? () from /usr/lib64/libglib-2.0.so.0
#4  0x00007fbf6773040f in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#5  0x00007fbf69b9dc6b in QEventDispatcherGlib::processEvents (this=0x56253f83dfc0, flags=...) at kernel/qeventdispatcher_glib.cpp:425
#6  0x00007fbf69b45bfb in QEventLoop::exec (this=this@entry=0x7fbf63e15bb0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:136
#7  0x00007fbf6997062e in QThread::exec (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:118
#8  0x00007fbf6959a507 in ?? () from /usr/lib64/libQt5DBus.so.5
#9  0x00007fbf699716f8 in QThreadPrivate::start (arg=0x7fbf6961cda0) at thread/qthread_unix.cpp:342
#10 0x00007fbf68088f2a in start_thread (arg=<optimized out>) at pthread_create.c:479
#11 0x00007fbf6b78d38f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7fbf664239c0 (LWP 18300)):
[KCrash Handler]
#6  std::__atomic_base<QObjectPrivate::SignalVector*>::load (__m=std::memory_order_relaxed, this=0x454545454545454d) at /usr/include/c++/9/bits/atomic_base.h:734
#7  std::atomic<QObjectPrivate::SignalVector*>::load (__m=std::memory_order_relaxed, this=0x454545454545454d) at /usr/include/c++/9/atomic:519
#8  QAtomicOps<QObjectPrivate::SignalVector*>::loadRelaxed<QObjectPrivate::SignalVector*> (_q_value=...) at ../../include/QtCore/../../src/corelib/thread/qatomic_cxx11.h:239
#9  QBasicAtomicPointer<QObjectPrivate::SignalVector>::loadRelaxed (this=0x454545454545454d) at ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h:248
#10 QObjectPrivate::isSignalConnected (this=this@entry=0x562540144db0, signalIndex=7, checkDeclarative=checkDeclarative@entry=true) at kernel/qobject.cpp:463
#11 0x00007fbf6995aa6c in QVariantAnimationPrivate::setCurrentValueForProgress (this=0x562540144db0, progress=<optimized out>) at /usr/include/c++/9/bits/atomic_base.h:413
#12 0x00007fbf6995b2f0 in QVariantAnimationPrivate::recalculateCurrentInterval (this=0x562540144db0, force=<optimized out>) at animation/qvariantanimation.cpp:270
#13 0x00007fbf69957f48 in QAbstractAnimation::setCurrentTime (this=0x5625406b51e0, msecs=25) at animation/qabstractanimation.cpp:1326
#14 0x00007fbf69958087 in QAnimationTimer::updateAnimationsTime (this=0x56253fbedb20, delta=25) at animation/qabstractanimation.cpp:608
#15 0x00007fbf69956a23 in QUnifiedTimer::updateAnimationTimers (this=0x56253fb93720, currentTick=<optimized out>) at animation/qabstractanimation.cpp:324
#16 0x00007fbf6995868d in QAnimationDriver::advanceAnimation (this=<optimized out>, timeStep=-1) at animation/qabstractanimation.cpp:823
#17 0x00007fbf69b73995 in QObject::event (this=0x56253fb93738, e=0x7ffdb960c8d0) at kernel/qobject.cpp:1361
#18 0x00007fbf6a80fcaf in QApplicationPrivate::notify_helper (this=this@entry=0x56253f773940, receiver=receiver@entry=0x56253fb93738, e=e@entry=0x7ffdb960c8d0) at kernel/qapplication.cpp:3684
#19 0x00007fbf6a818df0 in QApplication::notify (this=0x7ffdb960cc00, receiver=0x56253fb93738, e=0x7ffdb960c8d0) at kernel/qapplication.cpp:3430
#20 0x00007fbf69b47062 in QCoreApplication::notifyInternal2 (receiver=0x56253fb93738, event=0x7ffdb960c8d0) at ../../include/QtCore/../../src/corelib/kernel/qobject.h:153
#21 0x00007fbf69b9d020 in QTimerInfoList::activateTimers (this=0x56253f893220) at kernel/qtimerinfo_unix.cpp:643
#22 0x00007fbf69b9d8a4 in timerSourceDispatch (source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:183
#23 0x00007fbf6772fff8 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#24 0x00007fbf67730380 in ?? () from /usr/lib64/libglib-2.0.so.0
#25 0x00007fbf6773040f in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#26 0x00007fbf69b9dc4e in QEventDispatcherGlib::processEvents (this=0x56253f777e30, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#27 0x00007fbf69b45bfb in QEventLoop::exec (this=this@entry=0x7ffdb960cb10, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:136
#28 0x00007fbf69b4d9d2 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:118
#29 0x000056253ed1847d in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/gwenview5-20.03.70git.20200109T101140~6ce5ccb0-ku.33.9.x86_64/app/main.cpp:168
[Inferior 1 (process 18300) detached]
Comment 1 Ondrej Holecek 2020-11-02 10:40:37 UTC
Created attachment 132961 [details]
New crash information added by DrKonqi

gwenview (20.08.2) using Qt 5.15.1

- What I was doing when the application crashed:
The same as reported before. Cropping an image results in crash of Gwenview

- Unusual behavior I noticed:
What was unusual is that I can reproduce this every time except times when Gwenview was opened from Dolphin using some weird theme. For me reproducing was:
1) close all doplhin instances
2) take a screenhost using spectacle and save it
3) open containing folder via spectale interface
4) dolphin will open but looking like old windows instead of regular breeze theme, even requires double click to open files
5) open gwenview and now I am able to crop files without crash

-- Backtrace (Reduced):
#4  std::__atomic_base<QObjectPrivate::SignalVector*>::load (__m=std::memory_order_relaxed, this=0x454545454545454d) at /usr/include/c++/10/bits/atomic_base.h:741
#5  std::atomic<QObjectPrivate::SignalVector*>::load (__m=std::memory_order_relaxed, this=0x454545454545454d) at /usr/include/c++/10/atomic:523
#6  QAtomicOps<QObjectPrivate::SignalVector*>::loadRelaxed<QObjectPrivate::SignalVector*> (_q_value=...) at ../../include/QtCore/../../src/corelib/thread/qatomic_cxx11.h:239
#7  QBasicAtomicPointer<QObjectPrivate::SignalVector>::loadRelaxed (this=0x454545454545454d) at ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h:248
#8  QObjectPrivate::isSignalConnected (this=this@entry=0x55c087ac4860, signalIndex=7, checkDeclarative=checkDeclarative@entry=true) at kernel/qobject.cpp:459
Comment 2 Christophe Marin 2021-09-13 09:19:21 UTC
Still valid on master. The backtrace is different however.

reproduced on different pictures with different operations (crop, rotate...)

Thread 1 "gwenview" received signal SIGSEGV, Segmentation fault.
QObjectPrivate::isSignalConnected (this=this@entry=0x555556337cc0, signalIndex=7, checkDeclarative=checkDeclarative@entry=true) at kernel/qobject.cpp:459
459         SignalVector *signalVector = cd->signalVector.loadRelaxed();
(gdb) bt
#0  QObjectPrivate::isSignalConnected (this=this@entry=0x555556337cc0, signalIndex=7, checkDeclarative=checkDeclarative@entry=true) at kernel/qobject.cpp:459
#1  0x00007ffff59ca3fc in QVariantAnimationPrivate::setCurrentValueForProgress (this=0x555556337cc0, progress=<optimized out>) at animation/qvariantanimation.cpp:291
#2  0x00007ffff59c7693 in QAbstractAnimation::setCurrentTime (this=0x55555630e2f0, msecs=44) at animation/qabstractanimation.cpp:1326
#3  0x00007ffff59c77d4 in QAnimationTimer::updateAnimationsTime (this=0x555555dc2570, delta=44) at animation/qabstractanimation.cpp:608
#4  0x00007ffff59c610b in QUnifiedTimer::updateAnimationTimers (this=0x555555f104c0, currentTick=<optimized out>) at animation/qabstractanimation.cpp:324
#5  0x00007ffff59c7e1d in QAnimationDriver::advanceAnimation (this=<optimized out>, timeStep=-1) at animation/qabstractanimation.cpp:823
#6  0x00007ffff5bf1eff in QObject::event (this=0x555555f104d8, e=0x7fffffffc4c0) at kernel/qobject.cpp:1336
#7  0x00007ffff6b05a7f in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#8  0x00007ffff5bc59ea in QCoreApplication::notifyInternal2 (receiver=0x555555f104d8, event=0x7fffffffc4c0) at kernel/qcoreapplication.cpp:1064
#9  0x00007ffff5c1c25b in QTimerInfoList::activateTimers (this=0x555555939990) at kernel/qtimerinfo_unix.cpp:643
#10 0x00007ffff5c1cb04 in timerSourceDispatch (source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:183
#11 0x00007ffff320f80f in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#12 0x00007ffff320fb98 in ?? () from /usr/lib64/libglib-2.0.so.0
#13 0x00007ffff320fc4f in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#14 0x00007ffff5c1cec4 in QEventDispatcherGlib::processEvents (this=0x55555594ecf0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#15 0x00007ffff5bc43eb in QEventLoop::exec (this=this@entry=0x7fffffffc700, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#16 0x00007ffff5bcc6d0 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#17 0x000055555559573b in ?? ()
#18 0x00007ffff552ab35 in __libc_start_main () from /usr/lib64/libc.so.6
#19 0x0000555555595dae in ?? ()
Comment 3 Christophe Marin 2022-05-19 17:07:24 UTC
Still no improvement with current git master:
4  std::__atomic_base<QObjectPrivate::SignalVector*>::load (__m=std::memory_order_relaxed, this=0x454545454545454d) at /usr/include/c++/11/bits/atomic_base.h:836
#5  std::atomic<QObjectPrivate::SignalVector*>::load (__m=std::memory_order_relaxed, this=0x454545454545454d) at /usr/include/c++/11/atomic:570
#6  QAtomicOps<QObjectPrivate::SignalVector*>::loadRelaxed<QObjectPrivate::SignalVector*> (_q_value=<error reading variable: Cannot access memory at address 0x454545454545454d>) at ../../include/QtCore/../../src/corelib/thread/qatomic_cxx11.h:239
#7  QBasicAtomicPointer<QObjectPrivate::SignalVector>::loadRelaxed (this=0x454545454545454d) at ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h:248
#8  QObjectPrivate::isSignalConnected (this=this@entry=0x5608964a88f0, signalIndex=7, checkDeclarative=checkDeclarative@entry=true) at kernel/qobject.cpp:459
#9  0x00007f235d4ce407 in QVariantAnimationPrivate::setCurrentValueForProgress (this=0x5608964a88f0, progress=<optimized out>) at animation/qvariantanimation.cpp:293
#10 0x00007f235d4cb683 in QAbstractAnimation::setCurrentTime (this=0x5608963f6130, msecs=39) at animation/qabstractanimation.cpp:1326
#11 0x00007f235d4cb7c4 in QAnimationTimer::updateAnimationsTime (this=0x5608962c72d0, delta=39) at animation/qabstractanimation.cpp:608
#12 0x00007f235d4ca0fb in QUnifiedTimer::updateAnimationTimers (this=0x5608963f78c0, currentTick=<optimized out>) at animation/qabstractanimation.cpp:324
#13 0x00007f235d4cbe0d in QAnimationDriver::advanceAnimation (this=<optimized out>, timeStep=-1) at animation/qabstractanimation.cpp:823
#14 0x00007f235d6f61af in QObject::event (this=0x5608963f78d8, e=0x7ffd293adec0) at kernel/qobject.cpp:1336
#15 0x00007f235e484b0f in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib64/libQt5Widgets.so.5
#16 0x00007f235d6c9b5a in QCoreApplication::notifyInternal2 (receiver=0x5608963f78d8, event=0x7ffd293adec0) at kernel/qcoreapplication.cpp:1064
#17 0x00007f235d72065b in QTimerInfoList::activateTimers (this=0x560895ce12c0) at kernel/qtimerinfo_unix.cpp:643
Comment 4 Christophe Marin 2022-09-20 20:01:40 UTC
*** Bug 439146 has been marked as a duplicate of this bug. ***