Application: spectacle (23.04.2) Qt Version: 5.15.10 Frameworks Version: 5.107.0 Operating System: Linux 5.19.0-45-generic x86_64 Windowing System: Wayland Distribution: KDE neon 5.27 DrKonqi: 5.27.5 [KCrashBackend] -- Information about the crash: Follow the steps below to reproduce: 1. Use the 'Capture Rectangular Region' shortcut 2. Select an area 3. Draw a red arrow (not sure if it's this specific but still) 4. Put some text next to it 5. Select text and change color from black to white 6. Press CTRL+C 7. Press the shortcut of step 1 again 8. Crash The crash can be reproduced every time. -- Backtrace: Application: Spectacle (spectacle), signal: Aborted [KCrash Handler] #4 __pthread_kill_implementation (no_tid=0, signo=6, threadid=140182074594240) at ./nptl/pthread_kill.c:44 #5 __pthread_kill_internal (signo=6, threadid=140182074594240) at ./nptl/pthread_kill.c:78 #6 __GI___pthread_kill (threadid=140182074594240, signo=signo@entry=6) at ./nptl/pthread_kill.c:89 #7 0x00007f7eb9242476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #8 0x00007f7eb92287f3 in __GI_abort () at ./stdlib/abort.c:79 #9 0x00007f7eb96a2bbe in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6 #10 0x00007f7eb96ae24c in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6 #11 0x00007f7eb96ae2b7 in std::terminate() () from /lib/x86_64-linux-gnu/libstdc++.so.6 #12 0x00007f7eb96aefe5 in __cxa_pure_virtual () from /lib/x86_64-linux-gnu/libstdc++.so.6 #13 0x000056093d658a22 in SelectedActionWrapper::setEditAction (this=0x56093dc1f580, action=0x0) at ./src/Gui/Annotations/AnnotationDocument.cpp:561 #14 0x000056093d65f7b4 in AnnotationDocument::deselectAction (this=0x7f7ea8015310) at ./src/Gui/Annotations/AnnotationDocument.cpp:1436 #15 AnnotationDocument::clearAnnotations (this=0x7f7ea8015310) at ./src/Gui/Annotations/AnnotationDocument.cpp:928 #16 0x000056093d64f201 in AnnotationDocument::clear (this=0x7f7ea8015310) at ./src/Gui/Annotations/AnnotationDocument.cpp:842 #17 operator() (screenImages=..., __closure=0x56093dc20740) at ./src/SpectacleCore.cpp:129 #18 QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<const QVector<CanvasImage>&>, void, SpectacleCore::SpectacleCore(QObject*)::<lambda(const QVector<CanvasImage>&)> >::call (arg=<optimized out>, f=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:146 #19 QtPrivate::Functor<SpectacleCore::SpectacleCore(QObject*)::<lambda(const QVector<CanvasImage>&)>, 1>::call<QtPrivate::List<QVector<CanvasImage> const&>, void> (arg=<optimized out>, f=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:256 #20 QtPrivate::QFunctorSlotObject<SpectacleCore::SpectacleCore(QObject*)::<lambda(const QVector<CanvasImage>&)>, 1, QtPrivate::List<const QVector<CanvasImage>&>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x56093dc20730, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:443 #21 0x00007f7eb9cf4854 in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #22 0x000056093d674296 in Platform::newScreensScreenshotTaken (_t1=..., this=<optimized out>) at ./obj-x86_64-linux-gnu/src/spectacle_autogen/UWYFJWVAJO/moc_Platform.cpp:298 #23 operator() (images=..., __closure=0x56093dc1d6a0) at ./src/Platforms/PlatformKWinWayland2.cpp:388 #24 QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<const QVector<QImage>&>, void, PlatformKWinWayland2::trackSource(ScreenShotSourceMeta2*)::<lambda(const QVector<QImage>&)> >::call (arg=<optimized out>, f=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:146 #25 QtPrivate::Functor<PlatformKWinWayland2::trackSource(ScreenShotSourceMeta2*)::<lambda(const QVector<QImage>&)>, 1>::call<QtPrivate::List<QVector<QImage> const&>, void> (arg=<optimized out>, f=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:256 #26 QtPrivate::QFunctorSlotObject<PlatformKWinWayland2::trackSource(ScreenShotSourceMeta2*)::<lambda(const QVector<QImage>&)>, 1, QtPrivate::List<const QVector<QImage>&>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x56093dc1d690, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:443 #27 0x00007f7eb9cf4854 in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #28 0x000056093d668d44 in ScreenShotSourceMeta2::finished (_t1=..., this=0x56093de7f950) at ./obj-x86_64-linux-gnu/src/spectacle_autogen/UWYFJWVAJO/moc_PlatformKWinWayland2.cpp:765 #29 ScreenShotSourceMeta2::handleSourceFinished (this=0x56093de7f950) at ./src/Platforms/PlatformKWinWayland2.cpp:246 #30 ScreenShotSourceMeta2::handleSourceFinished (this=0x56093de7f950) at ./src/Platforms/PlatformKWinWayland2.cpp:230 #31 0x00007f7eb9cf4854 in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #32 0x000056093d670719 in ScreenShotSource2::finished (_t1=..., this=<optimized out>) at ./obj-x86_64-linux-gnu/src/spectacle_autogen/UWYFJWVAJO/moc_PlatformKWinWayland2.cpp:262 #33 operator() (__closure=0x56093dc4d810) at ./src/Platforms/PlatformKWinWayland2.cpp:180 #34 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, ScreenShotSource2::handleMetaDataReceived(const QVariantMap&)::<lambda()> >::call (arg=<optimized out>, f=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:146 #35 QtPrivate::Functor<ScreenShotSource2::handleMetaDataReceived(const QVariantMap&)::<lambda()>, 0>::call<QtPrivate::List<>, void> (arg=<optimized out>, f=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:256 #36 QtPrivate::QFunctorSlotObject<ScreenShotSource2::handleMetaDataReceived(const QVariantMap&)::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x56093dc4d800, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:443 #37 0x00007f7eb9cf4854 in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #38 0x00007f7eb9ad8fe5 in QFutureWatcherBase::event(QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #39 0x00007f7ebb56c763 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #40 0x00007f7eb9cbcdda in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #41 0x00007f7eb9cbfec7 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #42 0x00007f7eb9d16c07 in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #43 0x00007f7eb771bd3b in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #44 0x00007f7eb7771258 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #45 0x00007f7eb77193e3 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #46 0x00007f7eb9d16258 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #47 0x00007f7eb9cbb6fb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #48 0x00007f7eb9cc3c94 in QCoreApplication::exec() () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #49 0x000056093d6218d7 in main (argc=<optimized out>, argv=<optimized out>) at ./src/Main.cpp:127 [Inferior 1 (process 9294) detached] Reported using DrKonqi
A fascinatingly detailed set of steps to reproduce; I appreciate that. Unfortunately when I apply them as faithfully as I can on Plasma 6 Wayland, I can't make Spectacle crash. Any chance you could try again with the recently released 23.08 version? Thanks a lot!
I run KDE Neon, I guess that would involve me to upgrade to the Developer Edition Stable Branch of KDE Neon?
Neon User Edition should be shipping that version fairly soon, if it hasn't already.
I have spectacle version 23.08.1: spectacle -v QSocketNotifier: Can only be used with threads started with QThread spectacle 23.08.1
Forgot to add, the issue is still there. I'm not using Plasma 6 yet by the way, do you think that might be the cause?
Thanks.
I am able to reproduce this with git master spectacle and a Plasma 6 wayland session.
It seems to be some kind of issue with deselecting a text annotation action while clearing all annotations. This occurs when a new screenshot of any kind is taken. Technically, a rectangle capture screenshot first captures all screens, then allows you to crop the screenshot of all screens, which is why spectacle crashes when starting a rectangle capture screenshot rather than when accepting a selected region. Shortcuts are not necessary to reproduce this bug, but are a convenient for reproducing it. The true steps to reproduce this bug are the following: 1. Do a screen capture of any kind using any method, but don't use the -i or --new-instance flags if using the terminal. 2. Add a text annotation without causing the annotation to lose the dotted outline it has while it's still considered selected by the annotation system. 3. Do a screen capture of any kind using any method, but don't use the -i or --new-instance flags if using the terminal.
*** This bug has been marked as a duplicate of bug 469919 ***