Summary: | DrKonqi crashed while submitting | ||
---|---|---|---|
Product: | [Applications] drkonqi | Reporter: | Nicolas Fella <nicolas.fella> |
Component: | general | Assignee: | Plasma Bugs List <plasma-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | matt.fagnani |
Priority: | NOR | Keywords: | qt6 |
Version: | master | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/plasma/drkonqi/-/commit/a0bd2fa0cfbde80032cf45e657ad21da4df74a41 | Version Fixed In: | |
Sentry Crash Report: | |||
Attachments: | Trace of all threads of drkonqi crash |
Description
Nicolas Fella
2023-03-06 00:52:08 UTC
I booted the Fedora Rawhide/40 KDE Plasma live image Fedora-KDE-Live-x86_64-Rawhide-20231204.n.0.iso on bare metal. I started Konsole in Plasma 5.90.0 on Wayland. I ran WAYLAND_DEBUG=1 plasmashell --replace. To troubleshoot the plasmashell crashes at https://bugs.kde.org/show_bug.cgi?id=478086 I started Dolphin I quickly moved the cursor over the Konsole icon in the task manager to the icons to its left (Firefox, Dolphin, Discover, System Settings). plasmashell crashed when I did that and the panel disappeared and reappeared automatically a few seconds later. drkonqi appeared. I selected Developer information, and created a trace. I tried to report through bugs.kde.org through drkonqi, but drkonqi crashed at the point that a list of possible duplicate reports was shown and I clicked on one of the reports. The crashing thread 7 had a segmentation fault with a trace like that in this report. Thread 7 (Thread 0x7f95e51d86c0 (LWP 5730)): #0 0x00007f969b11b41d in __GI___poll (fds=fds@entry=0x7f95e51d6568, nfds=nfds@entry=1, timeout=timeout@entry=1000) at ../sysdeps/unix/sysv/linux/poll.c:29 #1 0x00007f969dea1b98 in poll (__timeout=1000, __nfds=1, __fds=0x7f95e51d6568) at /usr/include/bits/poll2.h:39 #2 pollDrKonqiSocket (sockfd=3, pid=<optimized out>) at /usr/src/debug/kf6-kcrash-5.246.0-1.fc40.x86_64/src/kcrash.cpp:844 #3 KCrash::startProcess (argv=argv@entry=0x7f95e51d66a8, waitAndExit=waitAndExit@entry=true, argc=<optimized out>) at /usr/src/debug/kf6-kcrash-5.246.0-1.fc40.x86_64/src/kcrash.cpp:706 #4 0x00007f969dea2659 in KCrash::defaultCrashHandler (sig=11) at /usr/src/debug/kf6-kcrash-5.246.0-1.fc40.x86_64/src/kcrash.cpp:602 #5 <signal handler called> #6 pcre2_match_data_create_from_pattern_16 (code=0x0, gcontext=0x0) at src/pcre2_match_data.c:87 #7 0x00007f969b9836aa in QRegularExpressionPrivate::doMatch (this=0x7f95e80011e0, priv=priv@entry=0x7f9620002a50, offset=<optimized out>, checkSubjectStringOption=checkSubjectStringOption@entry=QRegularExpressionPrivate::CheckSubjectString, previous=previous@entry=0x0) at /usr/src/debug/qt6-qtbase-6.6.1-1.fc40.x86_64/src/corelib/text/qregularexpression.cpp:1146 #8 0x00007f969b983e0e in QRegularExpression::match (this=this@entry=0x55fdaea8e1d0 <BacktraceLineGdb::parse()::regExp>, subject=..., offset=offset@entry=0, matchType=matchType@entry=QRegularExpression::NormalMatch, matchOptions=..., matchOptions@entry=...) at /usr/src/debug/qt6-qtbase-6.6.1-1.fc40.x86_64/src/corelib/text/qregularexpression.cpp:1597 #9 0x000055fdaea29b4b in BacktraceLineGdb::parse (this=this@entry=0x7f95e51d7410) at /usr/src/debug/plasma-drkonqi-5.90.0-1.fc40.x86_64/src/parser/backtraceparsergdb.cpp:119 #10 0x000055fdaea2af00 in BacktraceLineGdb::BacktraceLineGdb (this=<optimized out>, lineStr=..., this=<optimized out>, lineStr=...) at /usr/src/debug/plasma-drkonqi-5.90.0-1.fc40.x86_64/src/parser/backtraceparsergdb.cpp:22 #11 0x000055fdaea2b180 in BacktraceParserGdb::parseLine (lineStr=..., this=<optimized out>) at /usr/src/debug/plasma-drkonqi-5.90.0-1.fc40.x86_64/src/parser/backtraceparsergdb.cpp:200 #12 BacktraceParserGdb::newLine (this=<optimized out>, lineStr=...) at /usr/src/debug/plasma-drkonqi-5.90.0-1.fc40.x86_64/src/parser/backtraceparsergdb.cpp:191 #13 0x00007f969b8027a8 in doActivate<false> (sender=0x7f95e51d7660, signal_index=4, argv=0x7f95e51d76b0) at /usr/src/debug/qt6-qtbase-6.6.1-1.fc40.x86_64/src/corelib/kernel/qobject.cpp:4033 #14 0x00007f969b7f8807 in QMetaObject::activate (sender=sender@entry=0x7f95e51d7660, m=m@entry=0x55fdaea86900 <ParseBugBacktraces::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x7f95e51d76b0) at /usr/src/debug/qt6-qtbase-6.6.1-1.fc40.x86_64/src/corelib/kernel/qobject.cpp:4081 #15 0x000055fdaea19d9e in ParseBugBacktraces::newLine (_t1=..., this=0x7f95e51d7660) at /usr/src/debug/plasma-drkonqi-5.90.0-1.fc40.x86_64/redhat-linux-build/src/DrKonqiInternal_autogen/include/moc_parsebugbacktraces.cpp:188 #16 ParseBugBacktraces::parse (comment=..., this=0x7f95e51d7660) at /usr/src/debug/plasma-drkonqi-5.90.0-1.fc40.x86_64/src/bugzillaintegration/parsebugbacktraces.cpp:126 #17 ParseBugBacktraces::parse (this=0x7f95e51d7660) at /usr/src/debug/plasma-drkonqi-5.90.0-1.fc40.x86_64/src/bugzillaintegration/parsebugbacktraces.cpp:113 #18 operator() (__closure=0x7f95e51d7630) at /usr/src/debug/plasma-drkonqi-5.90.0-1.fc40.x86_64/src/bugzillaintegration/duplicatefinderjob.cpp:108 #19 std::__invoke_impl<ParseBugBacktraces::DuplicateRating, DuplicateFinderJob::slotCommentsFetched(const QList<QPointer<Bugzilla::Comment> >&, QObject*)::<lambda()>&> (__f=...) at /usr/include/c++/13/bits/invoke.h:61 #20 std::__invoke<DuplicateFinderJob::slotCommentsFetched(const QList<QPointer<Bugzilla::Comment> >&, QObject*)::<lambda()>&> (__fn=...) at /usr/include/c++/13/bits/invoke.h:96 #21 std::invoke<DuplicateFinderJob::slotCommentsFetched(const QList<QPointer<Bugzilla::Comment> >&, QObject*)::<lambda()>&> (__fn=...) at /usr/include/c++/13/functional:113 #22 operator() (function=..., __closure=<synthetic pointer>) at /usr/include/qt6/QtConcurrent/qtconcurrentstoredfunctioncall.h:116 #23 std::__invoke_impl<ParseBugBacktraces::DuplicateRating, const QtConcurrent::StoredFunctionCall<DuplicateFinderJob::slotCommentsFetched(const QList<QPointer<Bugzilla::Comment> >&, QObject*)::<lambda()> >::runFunctor()::<lambda(std::decay_t<DuplicateFinderJob::slotCommentsFetched(const QList<QPointer<Bugzilla::Comment> >&, QObject*)::<lambda()> >)>&, DuplicateFinderJob::slotCommentsFetched(const QList<QPointer<Bugzilla::Comment> >&, QObject*)::<lambda()> > (__f=<synthetic pointer>...) at /usr/include/c++/13/bits/invoke.h:61 #24 std::__invoke<const QtConcurrent::StoredFunctionCall<DuplicateFinderJob::slotCommentsFetched(const QList<QPointer<Bugzilla::Comment> >&, QObject*)::<lambda()> >::runFunctor()::<lambda(std::decay_t<DuplicateFinderJob::slotCommentsFetched(const QList<QPointer<Bugzilla::Comment> >&, QObject*)::<lambda()> >)>&, DuplicateFinderJob::slotCommentsFetched(const QList<QPointer<Bugzilla::Comment> >&, QObject*)::<lambda()> > (__fn=<synthetic pointer>...) at /usr/include/c++/13/bits/invoke.h:96 #25 std::__apply_impl<const QtConcurrent::StoredFunctionCall<DuplicateFinderJob::slotCommentsFetched(const QList<QPointer<Bugzilla::Comment> >&, QObject*)::<lambda()> >::runFunctor()::<lambda(std::decay_t<DuplicateFinderJob::slotCommentsFetched(const QList<QPointer<Bugzilla::Comment> >&, QObject*)::<lambda()> >)>&, std::tuple<DuplicateFinderJob::slotCommentsFetched(const QList<QPointer<Bugzilla::Comment> >&, QObject*)::<lambda()> >, 0> (__t=..., __f=<synthetic pointer>...) at /usr/include/c++/13/tuple:2288 #26 std::apply<const QtConcurrent::StoredFunctionCall<DuplicateFinderJob::slotCommentsFetched(const QList<QPointer<Bugzilla::Comment> >&, QObject*)::<lambda()> >::runFunctor()::<lambda(std::decay_t<DuplicateFinderJob::slotCommentsFetched(const QList<QPointer<Bugzilla::Comment> >&, QObject*)::<lambda()> >)>&, std::tuple<DuplicateFinderJob::slotCommentsFetched(const QList<QPointer<Bugzilla::Comment> >&, QObject*)::<lambda()> > > (__t=..., __f=<synthetic pointer>...) at /usr/include/c++/13/tuple:2299 #27 QtConcurrent::StoredFunctionCall<DuplicateFinderJob::slotCommentsFetched(const QList<QPointer<Bugzilla::Comment> >&, QObject*)::<lambda()> >::runFunctor(void) (this=0x55fdb12f2c20) at /usr/include/qt6/QtConcurrent/qtconcurrentstoredfunctioncall.h:122 #28 0x000055fdaea1bcfc in QtConcurrent::RunFunctionTaskBase<ParseBugBacktraces::DuplicateRating>::run (this=0x55fdb12f2c20) at /usr/include/qt6/QtConcurrent/qtconcurrentrunbase.h:83 #29 0x00007f969b955e67 in QThreadPoolThread::run (this=0x55fdb327cc60) at /usr/src/debug/qt6-qtbase-6.6.1-1.fc40.x86_64/src/corelib/thread/qthreadpool.cpp:66 #30 0x00007f969b950ace in operator() (__closure=<optimized out>) at /usr/src/debug/qt6-qtbase-6.6.1-1.fc40.x86_64/src/corelib/thread/qthread_unix.cpp:324 #31 (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> > (t=...) at /usr/src/debug/qt6-qtbase-6.6.1-1.fc40.x86_64/src/corelib/thread/qthread_unix.cpp:260 #32 QThreadPrivate::start (arg=0x55fdb327cc60) at /usr/src/debug/qt6-qtbase-6.6.1-1.fc40.x86_64/src/corelib/thread/qthread_unix.cpp:283 #33 0x00007f969b0a8c91 in start_thread (arg=<optimized out>) at pthread_create.c:447 #34 0x00007f969b128f9c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78 The crashing function pcre2_match_data_create_from_pattern_16 in pcre2 might've been a null pointer dereference since code=0x0 and the crashing line had pcre2_match_data_create(((pcre2_real_code *)code)->top_bracket (gdb) thread 7 [Switching to thread 7 (Thread 0x7f95e51d86c0 (LWP 5730))] #0 0x00007f969b11b41d in __GI___poll (fds=fds@entry=0x7f95e51d6568, nfds=nfds@entry=1, timeout=timeout@entry=1000) at ../sysdeps/unix/sysv/linux/poll.c:29 Downloading source file /usr/src/debug/glibc-2.38.9000-26.fc40.x86_64/io/../sysdeps/unix/sysv/linux/poll.c 29 return SYSCALL_CANCEL (poll, fds, nfds, timeout); (gdb) frame 6 #6 pcre2_match_data_create_from_pattern_16 (code=0x0, gcontext=0x0) at src/pcre2_match_data.c:87 Downloading source file /usr/src/debug/pcre2-10.42-2.fc40.x86_64/src/pcre2_match_data.c 87 return pcre2_match_data_create(((pcre2_real_code *)code)->top_bracket + 1, I saw this type of drkonqi crash 2 times when the list of possible duplicate reports was shown, but the first didn't store a core dump due to space limitations. I'll attach the trace of all threads. Created attachment 163891 [details]
Trace of all threads of drkonqi crash
A possibly relevant merge request was started @ https://invent.kde.org/plasma/drkonqi/-/merge_requests/204 Git commit a0bd2fa0cfbde80032cf45e657ad21da4df74a41 by Harald Sitter. Committed on 07/12/2023 at 18:02. Pushed by sitter into branch 'master'. duplicates detection: drop support with the advance of automatic crash reporting the duplicates detection isn't really necessary anymore. it also hasn't been all that great. the UI was terrible, the UX was terrible, the code was expansive, parsing random comments from bugzilla had potential of crashing drkonqi ... Related: bug 463223, bug 473408, bug 278636, bug 264146 M +0 -1 Testing.md M +0 -6 src/CMakeLists.txt M +4 -101 src/bugzillaintegration/bugzillalib.cpp M +2 -20 src/bugzillaintegration/bugzillalib.h D +0 -163 src/bugzillaintegration/duplicatefinderjob.cpp D +0 -83 src/bugzillaintegration/duplicatefinderjob.h D +0 -158 src/bugzillaintegration/parsebugbacktraces.cpp D +0 -52 src/bugzillaintegration/parsebugbacktraces.h M +35 -99 src/bugzillaintegration/reportinterface.cpp M +0 -17 src/bugzillaintegration/reportinterface.h M +1 -16 src/drkonqi_globals.h M +1 -4 src/drkonqidialog.cpp M +0 -35 src/parser/backtraceparser.cpp M +1 -6 src/parser/backtraceparser.h M +0 -1 src/parser/backtraceparser_p.h M +0 -1 src/qml/BacktracePage.qml D +0 -57 src/qml/DuplicatesLoadingPage.qml D +0 -135 src/qml/DuplicatesPage.qml M +1 -1 src/qml/LoginPage.qml D +0 -73 src/qml/PerfectDuplicatePage.qml M +0 -5 src/qml/ReportPage.qml M +0 -6 src/qml/main.qml M +0 -3 src/qml/qml.qrc D +0 -120 src/qmlextensions/duplicatemodel.cpp D +0 -57 src/qmlextensions/duplicatemodel.h M +1 -0 src/qmlextensions/platformmodel.cpp M +0 -21 src/tests/backtraceparsertest/backtraceparsertest.cpp M +0 -2 src/tests/backtraceparsertest/backtraceparsertest.h M +0 -10 src/tests/backtraceparsertest/backtraceparsertest_data/data.ini M +0 -1 src/tests/backtraceparsertest/backtraceparsertest_manual.cpp https://invent.kde.org/plasma/drkonqi/-/commit/a0bd2fa0cfbde80032cf45e657ad21da4df74a41 |