Bug 483904

Summary: Okular crash when closing a inline or popup note
Product: [Applications] okular Reporter: LTS20050703 <lts20050703>
Component: generalAssignee: Okular developers <okular-devel>
Status: RESOLVED FIXED    
Severity: crash CC: aacid, hohenegger, nate, nortexoid
Priority: NOR Keywords: qt6
Version: 24.02.0   
Target Milestone: ---   
Platform: Neon   
OS: Linux   
Latest Commit: Version Fixed In: 24.02.2
Sentry Crash Report:

Description LTS20050703 2024-03-18 14:39:32 UTC
SUMMARY
When trying to add a inline or popup note, closing the yellow note editor window crash Okular.

STEPS TO REPRODUCE
1. Open okular
2. Open a PDF file
3. In the top left, click "Annotations" to make the annotation bar appear
4. Click the "inline note" or "popup note" button
5. Click anywhere on the PDF file to open the yellow note editor window.
6. Close the yellow note editor window

OBSERVED RESULT
Okular crash

EXPECTED RESULT
Okular doesn't crash

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: 
KDE Neon Version: 6.0
KDE Plasma Version: 6.0.2
KDE Frameworks Version: 6.0.0 
Qt Version: 6.6.2

ADDITIONAL INFORMATION
Graphics Platform: Wayland

Log:
```
Unable to open QuickAnnotatingTools XML definition
ASSERT failure in AnnotWindow: "Called object is not of the correct type (class destructor may have already run)", file /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h, line 129
KCrash: Application 'okular' crashing... crashRecursionCounter = 2
QSocketNotifier: Invalid socket 6 and type 'Read', disabling...
QSocketNotifier: Invalid socket 15 and type 'Read', disabling...
KCrash: Application Name = okular path = /usr/bin pid = 16287
KCrash: Arguments: /usr/bin/okular 
KCrash: Attempting to start /usr/lib/x86_64-linux-gnu/libexec/drkonqi
void ReportInterface::maybePickUpPostbox()
kf5idletime_wayland: This plugin does not support polling idle time
29      ../sysdeps/unix/sysv/linux/poll.c: No such file or directory.
void ReportInterface::maybePickUpPostbox()
fish: Job 1, 'okular' has stopped
```
Comment 1 Albert Astals Cid 2024-03-18 22:00:38 UTC
Please provide a more complete backtrace of the crash

https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports
Comment 2 LTS20050703 2024-03-21 15:41:19 UTC
Here is the backtrace, thank you for letting me know I need to provide it.

Application: Okular (okular), signal: Aborted

[KCrash Handler]
#4  __pthread_kill_implementation (no_tid=0, signo=6, threadid=132423880485568) at ./nptl/pthread_kill.c:44
#5  __pthread_kill_internal (signo=6, threadid=132423880485568) at ./nptl/pthread_kill.c:78
#6  __GI___pthread_kill (threadid=132423880485568, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#7  0x0000787059e42476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#8  0x0000787059e287f3 in __GI_abort () at ./stdlib/abort.c:79
#9  0x000078705aadb597 in qAbort () at ./src/corelib/global/qglobal.cpp:161
#10 0x000078705aad67f5 in qt_message_fatal<QString&> (message=..., context=...) at ./src/corelib/global/qlogging.cpp:2003
#11 qt_message(QtMsgType, const QMessageLogContext &, const char *, typedef __va_list_tag __va_list_tag *) (msgType=msgType@entry=QtFatalMsg, context=..., msg=<optimized out>, ap=ap@entry=0x7ffd7668db60) at ./src/corelib/global/qlogging.cpp:378
#12 0x000078705aadbfc3 in QMessageLogger::fatal (this=<optimized out>, msg=<optimized out>) at ./src/corelib/global/qlogging.cpp:901
#13 0x000078705aaa0387 in qt_assert_x (where=<optimized out>, what=what@entry=0x7870445dae98 "Called object is not of the correct type (class destructor may have already run)", file=file@entry=0x7870445dae58 "/usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h", line=line@entry=129) at ./src/corelib/global/qassert.cpp:77
#14 0x000078704450698d in QtPrivate::assertObjectType<AnnotWindow> (o=<optimized out>) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:129
#15 0x0000787044506c46 in QtPrivate::assertObjectType<AnnotWindow> (o=0x5e149821f160) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:526
#16 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (AnnotWindow::*)()>::call(void (AnnotWindow::*)(), AnnotWindow*, void**) (arg=<optimized out>, o=0x5e149821f160, f=(void (AnnotWindow::*)(AnnotWindow * const)) 0x787044508c10 <AnnotWindow::slotsaveWindowText()>) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:144
#17 QtPrivate::FunctionPointer<void (AnnotWindow::*)()>::call<QtPrivate::List<>, void>(void (AnnotWindow::*)(), AnnotWindow*, void**) (arg=<optimized out>, o=0x5e149821f160, f=(void (AnnotWindow::*)(AnnotWindow * const)) 0x787044508c10 <AnnotWindow::slotsaveWindowText()>) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:182
#18 QtPrivate::QCallableObject<void (AnnotWindow::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=<optimized out>, this_=<optimized out>, r=0x5e149821f160, a=<optimized out>, ret=<optimized out>) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:520
#19 0x000078705aa3c3ce in QtPrivate::QSlotObjectBase::call (a=<optimized out>, r=<optimized out>, this=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ./src/corelib/kernel/qobjectdefs_impl.h:433
#20 doActivate<false> (sender=0x5e1497de9d90, signal_index=7, argv=0x7ffd7668dd28) at ./src/corelib/kernel/qobject.cpp:4039
#21 0x000078705aa3c6ab in doActivate<false> (sender=0x5e1498508e00, signal_index=3, argv=0x7ffd7668ddf8) at ./src/corelib/kernel/qobject.cpp:4051
#22 0x000078705ba13c28 in QWidgetTextControl::qt_metacall (this=0x5e1498508e00, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7ffd7668def8) at ./obj-x86_64-linux-gnu/src/widgets/Widgets_autogen/include/moc_qwidgettextcontrol_p.cpp:741
#23 0x000078705aa3c4b8 in doActivate<false> (sender=0x5e1498508e50, signal_index=4, argv=0x7ffd7668def8) at ./src/corelib/kernel/qobject.cpp:4065
#24 0x000078705b14ab3c in QTextDocumentPrivate::finishEdit (this=0x5e1498261020) at ./src/gui/text/qtextdocument_p.cpp:1218
#25 0x000078705b129961 in QSyntaxHighlighter::setDocument (this=this@entry=0x5e14984d6f10, doc=doc@entry=0x0) at ./src/gui/text/qsyntaxhighlighter.cpp:302
#26 0x000078705b129dbd in QSyntaxHighlighter::~QSyntaxHighlighter (this=<optimized out>, this=<optimized out>) at ./src/gui/text/qsyntaxhighlighter.cpp:284
#27 0x000078704c02dd5d in Sonnet::Highlighter::~Highlighter (this=<optimized out>, this=<optimized out>) at ./src/ui/highlighter.cpp:168
#28 0x000078705a9cb2ca in QObjectPrivate::deleteChildren (this=this@entry=0x5e14984d4040) at ./src/corelib/kernel/qobject.cpp:2207
#29 0x000078705a9d2198 in QObject::~QObject (this=<optimized out>, this=<optimized out>) at ./src/corelib/kernel/qobject.cpp:1159
#30 0x000078704c02e253 in Sonnet::SpellCheckDecorator::~SpellCheckDecorator (this=<optimized out>, this=<optimized out>) at ./src/ui/spellcheckdecorator.cpp:234
#31 0x000078704c410627 in KTextDecorator::~KTextDecorator (this=<optimized out>, this=<optimized out>) at ./src/widgets/ktextedit.cpp:32
#32 KTextDecorator::~KTextDecorator (this=<optimized out>, this=<optimized out>) at ./src/widgets/ktextedit.cpp:32
#33 0x000078704c4077f6 in KTextEditPrivate::~KTextEditPrivate (this=<optimized out>, this=<optimized out>) at ./src/widgets/ktextedit_p.h:47
#34 0x000078704c40792d in KTextEditPrivate::~KTextEditPrivate (this=<optimized out>, this=<optimized out>) at ./src/widgets/ktextedit_p.h:56
#35 0x000078704c40f5ff in std::default_delete<KTextEditPrivate>::operator() (__ptr=<optimized out>, this=<optimized out>) at /usr/include/c++/11/bits/unique_ptr.h:85
#36 std::unique_ptr<KTextEditPrivate, std::default_delete<KTextEditPrivate> >::~unique_ptr (this=<optimized out>, this=<optimized out>) at /usr/include/c++/11/bits/unique_ptr.h:361
#37 KTextEdit::~KTextEdit (this=<optimized out>, this=<optimized out>) at ./src/widgets/ktextedit.cpp:258
#38 0x000078704c40f61d in KTextEdit::~KTextEdit (this=<optimized out>, this=<optimized out>) at ./src/widgets/ktextedit.cpp:258
#39 0x000078705a9cb2ca in QObjectPrivate::deleteChildren (this=this@entry=0x5e1497dbaac0) at ./src/corelib/kernel/qobject.cpp:2207
#40 0x000078705bc18458 in QWidget::~QWidget (this=<optimized out>, this=<optimized out>) at ./src/widgets/kernel/qwidget.cpp:1532
#41 0x0000787044508bdd in AnnotWindow::~AnnotWindow (this=<optimized out>, this=<optimized out>) at ./part/annotwindow.cpp:272
#42 0x000078705a9cc793 in QObject::event (this=0x5e149821f160, e=0x5e149811d0d0) at ./src/corelib/kernel/qobject.cpp:1424
#43 0x000078705bb6d626 in QFrame::event (this=0x5e149821f160, e=0x5e149811d0d0) at ./src/widgets/widgets/qframe.cpp:515
#44 0x000078705bbf181b in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5e149821f160, e=0x5e149811d0d0) at ./src/widgets/kernel/qapplication.cpp:3296
#45 0x000078705aa75e08 in QCoreApplication::notifyInternal2 (receiver=0x5e149821f160, event=event@entry=0x5e149811d0d0) at ./src/corelib/kernel/qcoreapplication.cpp:1121
#46 0x000078705aa75e4d in QCoreApplication::sendEvent (receiver=<optimized out>, event=event@entry=0x5e149811d0d0) at ./src/corelib/kernel/qcoreapplication.cpp:1539
#47 0x000078705aa76000 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x5e1497359db0) at ./src/corelib/kernel/qcoreapplication.cpp:1901
#48 0x000078705a8584f7 in postEventSourceDispatch (s=0x5e1497431eb0) at ./src/corelib/kernel/qeventdispatcher_glib.cpp:243
#49 0x0000787059990d3b in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#50 0x00007870599e6258 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#51 0x000078705998e3e3 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#52 0x000078705a855c30 in QEventDispatcherGlib::processEvents (this=0x5e1497373a60, flags=...) at ./src/corelib/kernel/qeventdispatcher_glib.cpp:393
#53 0x000078705aa7fceb in QEventLoop::exec (this=0x7ffd7668e6d0, flags=...) at ./src/corelib/global/qflags.h:34
#54 0x000078705aa7a36c in QCoreApplication::exec () at ./src/corelib/global/qflags.h:74
#55 0x000078705aee9a20 in QGuiApplication::exec () at ./src/gui/kernel/qguiapplication.cpp:1925
#56 0x000078705bbee469 in QApplication::exec () at ./src/widgets/kernel/qapplication.cpp:2574
#57 0x00005e14954643bf in main (argc=<optimized out>, argv=<optimized out>) at ./shell/main.cpp:103
[Inferior 1 (process 13575) detached]
Comment 3 Albert Astals Cid 2024-03-21 23:07:36 UTC
ah, you need to enable spell checking to get it to crash
Comment 4 Bug Janitor Service 2024-03-21 23:10:39 UTC
A possibly relevant merge request was started @ https://invent.kde.org/graphics/okular/-/merge_requests/958
Comment 5 Albert Astals Cid 2024-03-22 23:17:26 UTC
Git commit 2c83ccf4fa6258492d6e09948649bf1cd88f9d81 by Albert Astals Cid.
Committed on 22/03/2024 at 23:02.
Pushed by aacid into branch 'master'.

Fix crash on closing Annot Window if spell checking is enabled

M  +1    -0    part/annotwindow.cpp

https://invent.kde.org/graphics/okular/-/commit/2c83ccf4fa6258492d6e09948649bf1cd88f9d81
Comment 6 Albert Astals Cid 2024-03-22 23:34:28 UTC
Git commit b91bd57f6b79a92a8981fc7b17426a1391ab1e52 by Albert Astals Cid.
Committed on 22/03/2024 at 23:34.
Pushed by aacid into branch 'release/24.02'.

Fix crash on closing Annot Window if spell checking is enabled
(cherry picked from commit 2c83ccf4fa6258492d6e09948649bf1cd88f9d81)

M  +1    -0    part/annotwindow.cpp

https://invent.kde.org/graphics/okular/-/commit/b91bd57f6b79a92a8981fc7b17426a1391ab1e52
Comment 7 Albert Astals Cid 2024-03-26 23:12:43 UTC
*** Bug 484524 has been marked as a duplicate of this bug. ***
Comment 8 Albert Astals Cid 2024-04-02 23:30:43 UTC
*** Bug 484929 has been marked as a duplicate of this bug. ***