Bug 381364 - "Gwenview crashes when going in Full Screen mode with Grayscale JPEG images"
Summary: "Gwenview crashes when going in Full Screen mode with Grayscale JPEG images"
Status: RESOLVED DUPLICATE of bug 357548
Alias: None
Product: gwenview
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Debian stable Linux
: NOR crash
Target Milestone: ---
Assignee: Gwenview Bugs
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2017-06-18 14:25 UTC by Davide Beatrici
Modified: 2017-06-20 01:39 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Davide Beatrici 2017-06-18 14:25:57 UTC
Application: gwenview (16.08.3)

Qt Version: 5.7.1
Frameworks Version: 5.28.0
Operating System: Linux 4.9.0-3-amd64 x86_64
Distribution: Debian GNU/Linux 9.0 (stretch)

-- Information about the crash:
- What I was doing when the application crashed:

I have a set of JPEG images, all coming from the same source.
Gwenview works fine with the TrueColor images, but it crashes as soon as I click on the Full Screen button with a Grayscale one. The program goes in Full Screen mode, but the image is not correctly zoomed, as it's blurred, and then it immediately crashes.

A few times it worked correctly, when I left the image open for some time.
While writing this report I noticed that Gwenview also crashes when moving the zoom slider fast.

The crash can be reproduced every time.

-- Backtrace:
Application: Gwenview (gwenview), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7fd4f83e99c0 (LWP 12681))]

Thread 4 (Thread 0x7fd4ed19c700 (LWP 12684)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:225
#1  0x00007fd507da2ba6 in QWaitConditionPrivate::wait_relative (time=30000, this=0x561284a365a0) at thread/qwaitcondition_unix.cpp:133
#2  QWaitConditionPrivate::wait (time=30000, this=0x561284a365a0) at thread/qwaitcondition_unix.cpp:141
#3  QWaitCondition::wait (this=this@entry=0x561284a35250, mutex=mutex@entry=0x561284a36340, time=30000) at thread/qwaitcondition_unix.cpp:215
#4  0x00007fd507d9e3c2 in QThreadPoolThread::run (this=0x561284a35240) at thread/qthreadpool.cpp:133
#5  0x00007fd507da1da8 in QThreadPrivate::start (arg=0x561284a35240) at thread/qthread_unix.cpp:368
#6  0x00007fd5028bf494 in start_thread (arg=0x7fd4ed19c700) at pthread_create.c:333
#7  0x00007fd5076baaff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

Thread 3 (Thread 0x7fd4f4a58700 (LWP 12683)):
#0  __libc_enable_asynccancel () at ../sysdeps/unix/sysv/linux/x86_64/cancellation.S:67
#1  0x00007fd5076b16a2 in poll () at ../sysdeps/unix/syscall-template.S:84
#2  0x00007fd500e249f6 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7fd4e8011530, timeout=<optimized out>, context=0x7fd4e8000990) at ././glib/gmain.c:4228
#3  g_main_context_iterate (context=context@entry=0x7fd4e8000990, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ././glib/gmain.c:3924
#4  0x00007fd500e24b0c in g_main_context_iteration (context=0x7fd4e8000990, may_block=may_block@entry=1) at ././glib/gmain.c:3990
#5  0x00007fd507fc606b in QEventDispatcherGlib::processEvents (this=0x7fd4e80008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:425
#6  0x00007fd507f6f9ca in QEventLoop::exec (this=this@entry=0x7fd4f4a57bd0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212
#7  0x00007fd507d9d0f3 in QThread::exec (this=this@entry=0x7fd50c751d60 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread.cpp:507
#8  0x00007fd50c6dc6d5 in QDBusConnectionManager::run (this=0x7fd50c751d60 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:178
#9  0x00007fd507da1da8 in QThreadPrivate::start (arg=0x7fd50c751d60 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:368
#10 0x00007fd5028bf494 in start_thread (arg=0x7fd4f4a58700) at pthread_create.c:333
#11 0x00007fd5076baaff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

Thread 2 (Thread 0x7fd4f63ed700 (LWP 12682)):
#0  0x00007fd5076b16ad in poll () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007fd50027a150 in poll (__timeout=-1, __nfds=1, __fds=0x7fd4f63ecb00) at /usr/include/x86_64-linux-gnu/bits/poll2.h:46
#2  _xcb_conn_wait (c=c@entry=0x561284504850, cond=cond@entry=0x561284504890, vector=vector@entry=0x0, count=count@entry=0x0) at ../../src/xcb_conn.c:479
#3  0x00007fd50027bee9 in xcb_wait_for_event (c=0x561284504850) at ../../src/xcb_in.c:693
#4  0x00007fd4f8111b69 in QXcbEventReader::run (this=0x56128450ef00) at qxcbconnection.cpp:1343
#5  0x00007fd507da1da8 in QThreadPrivate::start (arg=0x56128450ef00) at thread/qthread_unix.cpp:368
#6  0x00007fd5028bf494 in start_thread (arg=0x7fd4f63ed700) at pthread_create.c:333
#7  0x00007fd5076baaff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

Thread 1 (Thread 0x7fd4f83e99c0 (LWP 12681)):
[KCrash Handler]
#6  Unroll3BytesSkip1SwapSwapFirst (info=0x561284b05870, wIn=0x7ffee736fb90, accum=0x561285536000 <error: Cannot access memory at address 0x561285536000>, Stride=2304000) at cmspack.c:296
#7  0x00007fd506a501a4 in PrecalculatedXFORM (p=0x561284b05870, in=0x56128503c110, out=0x56128503c110, PixelsPerLine=2304000, LineCount=1, Stride=0x7ffee736fc20) at cmsxform.c:404
#8  0x00007fd506a5114d in cmsDoTransform (Transform=<optimized out>, InputBuffer=InputBuffer@entry=0x56128503c110, OutputBuffer=OutputBuffer@entry=0x56128503c110, Size=<optimized out>) at cmsxform.c:189
#9  0x00007fd50be37f22 in Gwenview::RasterImageView::updateFromScaler (this=0x561284f233b0, zoomedImageLeft=-596, zoomedImageTop=-51, image=...) at ./lib/documentview/rasterimageview.cpp:322
#10 0x00007fd507f9d95e in QtPrivate::QSlotObjectBase::call (a=0x7ffee736fe20, r=0x561284f233b0, this=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobject_impl.h:101
#11 QMetaObject::activate (sender=sender@entry=0x561284682610, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffee736fe20) at kernel/qobject.cpp:3723
#12 0x00007fd507f9df07 in QMetaObject::activate (sender=sender@entry=0x561284682610, m=m@entry=0x7fd50c0e3500 <Gwenview::ImageScaler::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffee736fe20) at kernel/qobject.cpp:3602
#13 0x00007fd50be9f0f1 in Gwenview::ImageScaler::scaledRect (this=this@entry=0x561284682610, _t1=<optimized out>, _t2=<optimized out>, _t3=...) at ./obj-x86_64-linux-gnu/lib/gwenviewlib_automoc.dir/moc_imagescaler_MWR3CCYMZPWSLJ.cpp:136
#14 0x00007fd50be5b4e7 in Gwenview::ImageScaler::scaleRect (this=this@entry=0x561284682610, rect=...) at ./lib/imagescaler.cpp:132
#15 0x00007fd50be5bb47 in Gwenview::ImageScaler::doScale (this=0x561284682610) at ./lib/imagescaler.cpp:122
#16 0x00007fd50be5bd35 in Gwenview::ImageScaler::setDestinationRegion (this=<optimized out>, region=...) at ./lib/imagescaler.cpp:102
#17 0x00007fd50be36a84 in Gwenview::RasterImageViewPrivate::setScalerRegionToVisibleRect (this=0x561284d87fa0) at ./lib/documentview/rasterimageview.cpp:151
#18 Gwenview::RasterImageView::updateBuffer (this=this@entry=0x561284f233b0, region=...) at ./lib/documentview/rasterimageview.cpp:443
#19 0x00007fd50bea0f2b in Gwenview::RasterImageView::qt_static_metacall (_o=0x561284f233b0, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at ./obj-x86_64-linux-gnu/lib/gwenviewlib_automoc.dir/moc_rasterimagevie_PO3WSJO6QBQP22.cpp:109
#20 0x00007fd507f9d5e9 in QMetaObject::activate (sender=sender@entry=0x561284f2f5f0, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x0) at kernel/qobject.cpp:3740
#21 0x00007fd507f9df07 in QMetaObject::activate (sender=sender@entry=0x561284f2f5f0, m=m@entry=0x7fd5081bb760 <QTimer::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x0) at kernel/qobject.cpp:3602
#22 0x00007fd508017780 in QTimer::timeout (this=this@entry=0x561284f2f5f0) at .moc/moc_qtimer.cpp:198
#23 0x00007fd507fa9f78 in QTimer::timerEvent (this=0x561284f2f5f0, e=<optimized out>) at kernel/qtimer.cpp:254
#24 0x00007fd507f9e453 in QObject::event (this=0x561284f2f5f0, e=<optimized out>) at kernel/qobject.cpp:1285
#25 0x00007fd509240b8c in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x561284f2f5f0, e=0x7ffee73704a0) at kernel/qapplication.cpp:3799
#26 0x00007fd509248341 in QApplication::notify (this=0x7ffee73707d0, receiver=0x561284f2f5f0, e=0x7ffee73704a0) at kernel/qapplication.cpp:3556
#27 0x00007fd507f719e0 in QCoreApplication::notifyInternal2 (receiver=0x561284f2f5f0, event=event@entry=0x7ffee73704a0) at kernel/qcoreapplication.cpp:988
#28 0x00007fd507fc4fee in QCoreApplication::sendEvent (event=0x7ffee73704a0, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#29 QTimerInfoList::activateTimers (this=0x561284525af0) at kernel/qtimerinfo_unix.cpp:644
#30 0x00007fd507fc5511 in timerSourceDispatch (source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:182
#31 0x00007fd500e247f7 in g_main_dispatch (context=0x7fd4f00016f0) at ././glib/gmain.c:3203
#32 g_main_context_dispatch (context=context@entry=0x7fd4f00016f0) at ././glib/gmain.c:3856
#33 0x00007fd500e24a60 in g_main_context_iterate (context=context@entry=0x7fd4f00016f0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ././glib/gmain.c:3929
#34 0x00007fd500e24b0c in g_main_context_iteration (context=0x7fd4f00016f0, may_block=may_block@entry=1) at ././glib/gmain.c:3990
#35 0x00007fd507fc604f in QEventDispatcherGlib::processEvents (this=0x56128453ab30, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#36 0x00007fd507f6f9ca in QEventLoop::exec (this=this@entry=0x7ffee73706f0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212
#37 0x00007fd507f7813c in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1261
#38 0x0000561283660ca1 in main (argc=<optimized out>, argv=<optimized out>) at ./app/main.cpp:167

Possible duplicates by query: bug 373295, bug 369688.

Reported using DrKonqi
Comment 1 Davide Beatrici 2017-06-19 16:30:54 UTC
The program doesn't crash with the testcase from bug 357548.
Comment 2 Christoph Feck 2017-06-20 01:06:42 UTC
Maybe. But I am still marking as a duplicate, unless you can reproduce with Gwenview 16.12.

*** This bug has been marked as a duplicate of bug 357548 ***
Comment 3 Davide Beatrici 2017-06-20 01:39:12 UTC
Gvenview 17.07.70, built from source, works fine.