Bug 372420

Summary: digikam crashed under wayland
Product: [Applications] digikam Reporter: RJ <ogldelphi>
Component: Portability-RuntimeAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: caulier.gilles, metzpinguin, ogldelphi
Priority: NOR Keywords: drkonqi
Version: 5.3.0   
Target Milestone: ---   
Platform: Fedora RPMs   
OS: Linux   
See Also: https://bugzilla.redhat.com/show_bug.cgi?id=1384618
Latest Commit: Version Fixed In: 5.4.0
Sentry Crash Report:

Description RJ 2016-11-13 08:41:02 UTC
Application: digikam (5.3.0)

Qt Version: 5.7.0
Frameworks Version: 5.27.0
Operating System: Linux 4.8.6-300.fc25.x86_64 x86_64
Distribution (Platform): Fedora RPMs

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

1. Just start KDE wayland
2. Try to open digikam 5.3
3. Get crash

-- Backtrace:
Application: digiKam (digikam), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
84	T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
[Current thread is 1 (Thread 0x7fc36c7fc400 (LWP 1879))]

Thread 4 (Thread 0x7fc353f61700 (LWP 1885)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007fc39bef609a in QWaitConditionPrivate::wait (time=18446744073709551615, this=0x558c072e7ac0) at thread/qwaitcondition_unix.cpp:143
#2  QWaitCondition::wait (this=this@entry=0x558c072e79e0, mutex=mutex@entry=0x558c072e79d8, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:215
#3  0x00007fc3a9c7307a in Digikam::ScanController::run (this=0x7fc3aa56a100 <_ZZN7Digikam12_GLOBAL__N_113Q_QGS_creator13innerFunctionEvE6holder>) at /usr/src/debug/digikam-5.3.0/core/libs/database/utils/scancontroller.cpp:677
#4  0x00007fc39bef5a1a in QThreadPrivate::start (arg=0x7fc3aa56a100 <_ZZN7Digikam12_GLOBAL__N_113Q_QGS_creator13innerFunctionEvE6holder>) at thread/qthread_unix.cpp:344
#5  0x00007fc3a7de36ca in start_thread (arg=0x7fc353f61700) at pthread_create.c:333
#6  0x00007fc399bd6f6f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105

Thread 3 (Thread 0x7fc358846700 (LWP 1884)):
#0  0x00007fc39beedab9 in std::__atomic_base<QMutexData*>::compare_exchange_strong (__m2=<optimized out>, __m1=std::memory_order_acquire, __p2=<optimized out>, __p1=@0x7fc358844f18: 0x0, this=0x558c07161400) at /usr/include/c++/6.1.1/bits/atomic_base.h:752
#1  std::atomic<QMutexData*>::compare_exchange_strong (__m=std::memory_order_acquire, __p2=<optimized out>, __p1=@0x7fc358844f18: 0x0, this=0x558c07161400) at /usr/include/c++/6.1.1/atomic:475
#2  QAtomicOps<QMutexData*>::testAndSetAcquire<QMutexData*> (currentValue=<synthetic pointer>, newValue=<optimized out>, expectedValue=0x0, _q_value=...) at ../../src/corelib/arch/qatomic_cxx11.h:165
#3  QBasicAtomicPointer<QMutexData>::testAndSetAcquire (currentValue=<synthetic pointer>: <optimized out>, newValue=<optimized out>, expectedValue=0x0, this=0x558c07161400) at ../../src/corelib/thread/qbasicatomic.h:259
#4  QBasicMutex::fastTryLock (current=<synthetic pointer>: <optimized out>, this=0x558c07161400) at thread/qmutex.h:89
#5  QMutex::lock (this=this@entry=0x558c07161400) at thread/qmutex.cpp:225
#6  0x00007fc39c0e2c4f in QMutexLocker::QMutexLocker (m=0x558c07161400, this=<synthetic pointer>) at ../../src/corelib/thread/qmutex.h:137
#7  QThreadData::canWaitLocked (this=0x558c071613d0) at ../../src/corelib/thread/qthread_p.h:253
#8  postEventSourcePrepare (s=0x7fc3540012d0, timeout=timeout@entry=0x7fc358844fb4) at kernel/qeventdispatcher_glib.cpp:259
#9  0x00007fc3995f6699 in g_main_context_prepare (context=context@entry=0x7fc354000990, priority=priority@entry=0x7fc358845040) at gmain.c:3501
#10 0x00007fc3995f707b in g_main_context_iterate (context=context@entry=0x7fc354000990, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3909
#11 0x00007fc3995f726c in g_main_context_iteration (context=0x7fc354000990, may_block=may_block@entry=1) at gmain.c:3990
#12 0x00007fc39c0e2d8b in QEventDispatcherGlib::processEvents (this=0x7fc3540008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:425
#13 0x00007fc39c0940ba in QEventLoop::exec (this=this@entry=0x7fc358845180, flags=..., flags@entry=...) at kernel/qeventloop.cpp:210
#14 0x00007fc39bef1643 in QThread::exec (this=this@entry=0x7fc39ec89060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread.cpp:507
#15 0x00007fc39ec137a9 in QDBusConnectionManager::run (this=0x7fc39ec89060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:196
#16 0x00007fc39bef5a1a in QThreadPrivate::start (arg=0x7fc39ec89060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:344
#17 0x00007fc3a7de36ca in start_thread (arg=0x7fc358846700) at pthread_create.c:333
#18 0x00007fc399bd6f6f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105

Thread 2 (Thread 0x7fc3647f5700 (LWP 1883)):
#0  0x00007fc3a7ded310 in __libc_recvmsg (fd=3, msg=0x7fc3647f20d0, flags=0) at ../sysdeps/unix/sysv/linux/recvmsg.c:28
#1  0x00007fc38cb3d958 in udev_monitor_receive_device (udev_monitor=<optimized out>) at src/libudev/libudev-monitor.c:612
#2  0x00007fc39a74c8db in linux_udev_event_thread_main (arg=<optimized out>) at os/linux_udev.c:186
#3  0x00007fc3a7de36ca in start_thread (arg=0x7fc3647f5700) at pthread_create.c:333
#4  0x00007fc399bd6f6f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105

Thread 1 (Thread 0x7fc36c7fc400 (LWP 1879)):
[KCrash Handler]
#6  0x00007fc3a71fd95a in XInternAtom (dpy=0x558c06f874f0, name=name@entry=0x558c075aff38 "_ICC_PROFILE", onlyIfExists=onlyIfExists@entry=1) at IntAtom.c:174
#7  0x00007fc3a8e625b3 in Digikam::IccSettings::Private::profileFromWindowSystem (this=0x558c0741d9d0, widget=widget@entry=0x558c073b9bf0) at /usr/src/debug/digikam-5.3.0/core/libs/dimg/filters/icc/iccsettings.cpp:234
#8  0x00007fc3a8e62901 in Digikam::IccSettings::monitorProfile (this=0x7fc3a9a85420 <_ZZN7Digikam12_GLOBAL__N_113Q_QGS_creator13innerFunctionEvE6holder>, widget=widget@entry=0x558c073b9bf0) at /usr/src/debug/digikam-5.3.0/core/libs/dimg/filters/icc/iccsettings.cpp:134
#9  0x00007fc3a8e55e32 in Digikam::IccManager::displayProfile (displayingWidget=displayingWidget@entry=0x558c073b9bf0) at /usr/src/debug/digikam-5.3.0/core/libs/dimg/filters/icc/iccmanager.cpp:382
#10 0x00007fc3a8fe8b31 in Digikam::ThumbnailLoadThread::setDisplayingWidget (widget=widget@entry=0x558c073b9bf0) at /usr/src/debug/digikam-5.3.0/core/libs/threadimageio/thumbnailloadthread.cpp:264
#11 0x00007fc3a9cbf01f in Digikam::DigikamApp::DigikamApp (this=0x558c073b9bf0, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at /usr/src/debug/digikam-5.3.0/core/app/main/digikamapp.cpp:199
#12 0x0000558c05e160e1 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/digikam-5.3.0/core/app/main/main.cpp:198

Reported using DrKonqi
Comment 1 Maik Qualmann 2016-11-13 09:13:50 UTC

*** This bug has been marked as a duplicate of bug 370392 ***
Comment 2 caulier.gilles 2016-12-27 13:49:04 UTC
Git commit 31e5507db917d7d914f1e3f3c24f5d6777d61f88 by Maik Qualmann.
Committed on 14/11/2016 at 19:42.
Pushed by mqualmann into branch 'master'.

try to fix crash under wayland, native support later

M  +6    -0    libs/dimg/filters/icc/iccsettings.cpp

http://commits.kde.org/digikam/31e5507db917d7d914f1e3f3c24f5d6777d61f88
Comment 3 caulier.gilles 2016-12-27 13:49:25 UTC
I just tested digiKam 5.4.0 with Gnome+Wayland under Mageia6 (Cauldron).

It do not crash. Color Management have been enabled of course.

digiKam still compiled with XCB support through KF5 framework. It do not use Wayland directly. It slow, as a gateway work in background to support XCB based application.

Using Wayland directly is another story, more complicated to handle, as Qt5+KF5 Wayland support need to be enabled. This will be for later, when this environnement will be more dispatched everywhere.

So for me the current situation work.

Gilles Caulier
Comment 4 caulier.gilles 2016-12-27 13:49:57 UTC
RJ,

Just to be sure. 

Can you run a KDE application on your system (a based one, installed with a package), and go to Help/About dialog. Copy the contents of Version tab in this thread. 

Thanks in advance

Gilles Caulier