Bug 484988 - SEGABRT in Kdiff3 with Qt 6.6+ when opening files
Summary: SEGABRT in Kdiff3 with Qt 6.6+ when opening files
Status: RESOLVED FIXED
Alias: None
Product: kdiff3
Classification: Applications
Component: application (show other bugs)
Version: 1.10.7
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: michael
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-04-03 15:45 UTC by Mike Lothian
Modified: 2024-04-22 23:17 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments
workaround (2.67 KB, text/plain)
2024-04-03 15:49 UTC, Mike Lothian
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Mike Lothian 2024-04-03 15:45:28 UTC
This happens with Qt 6.6.3 & Qt 6.7.0 using KF6 from Git

fireburn@axion ~/sddm $ lldb kdiff3 LICENSE LICENSE.CC-BY-3.0 
(lldb) target create "kdiff3"
Current executable set to '/usr/bin/kdiff3' (x86_64).
(lldb) settings set -- target.run-args  "LICENSE" "LICENSE.CC-BY-3.0"
(lldb) run
Process 1006614 launched: '/usr/bin/kdiff3' (x86_64)
Process 1006614 stopped and restarted: thread 1 received signal: SIGCHLD
org.kde.kdiff3: Loading A:  "http://license"
org.kde.kdiff3: Loading B:  "http://license.cc-by-3.0"
qt.core.qobject.connect: QObject::connect: No such signal KIO::FileCopyJob::percent(KJob*,ulong)
kdiff3: /var/tmp/portage/kde-misc/kdiff3-9999/work/kdiff3-9999/src/DefaultFileAccessJobHandler.cpp:368: virtual bool DefaultFileAccessJobHandler::copyFile(const QString &): Assertion `QObject::connect(pJob, "2" "percent(KJob*,ulong)", &pp, "1" "slotPercent(KJob*,ulong)")' failed.
Process 1006614 stopped
* thread #1, name = 'kdiff3', stop reason = signal SIGABRT
    frame #0: 0x00007ffff5ac36ac libc.so.6`___lldb_unnamed_symbol3694 + 268
libc.so.6`___lldb_unnamed_symbol3694:
->  0x7ffff5ac36ac <+268>: movl   %eax, %ebx
    0x7ffff5ac36ae <+270>: negl   %ebx
    0x7ffff5ac36b0 <+272>: cmpl   $0xfffff000, %eax         ; imm = 0xFFFFF000 
    0x7ffff5ac36b5 <+277>: movl   $0x0, %eax
(lldb) bt
* thread #1, name = 'kdiff3', stop reason = signal SIGABRT
  * frame #0: 0x00007ffff5ac36ac libc.so.6`___lldb_unnamed_symbol3694 + 268
    frame #1: 0x00007ffff5a71202 libc.so.6`raise + 18
    frame #2: 0x00007ffff5a594ed libc.so.6`abort + 211
    frame #3: 0x00007ffff5a59415 libc.so.6`___lldb_unnamed_symbol3173 + 15
    frame #4: 0x00007ffff5a697b2 libc.so.6`__assert_fail + 66
    frame #5: 0x0000555555729257 kdiff3`DefaultFileAccessJobHandler::copyFile(this=0x0000555555d67420, inDest=0x00007fffffff9d78) at DefaultFileAccessJobHandler.cpp:368:5
    frame #6: 0x000055555571ff7d kdiff3`FileAccess::copyFile(this=0x0000555555cec3c8, dest=0x00007fffffff9d78) at fileaccess.cpp:876:25
    frame #7: 0x0000555555720521 kdiff3`FileAccess::createLocalCopy(this=0x0000555555cec3c8) at fileaccess.cpp:991:12
    frame #8: 0x00005555557b367b kdiff3`SourceData::readAndPreprocess(this=0x0000555555cec3b0, encoding="UTF-8", bAutoDetect=true) at SourceData.cpp:356:30
    frame #9: 0x000055555564d90c kdiff3`KDiff3App::mainInit(this=0x0000555555cecf80, pTotalDiffStatus=0x0000555555becbb0, inFlags=(i = 13)) at pdiff.cpp:139:20
    frame #10: 0x00005555555e0483 kdiff3`KDiff3App::doFileCompare(this=0x0000555555cecf80) at kdiff3.cpp:440:5
    frame #11: 0x00005555555e098b kdiff3`KDiff3App::completeInit(this=0x0000555555cecf80, fn1=0x00007fffffffbe40, fn2=0x00007fffffffbe28, fn3=0x00007fffffffbe10) at kdiff3.cpp:493:13
    frame #12: 0x00005555555d245a kdiff3`KDiff3Shell::KDiff3Shell(this=0x000055555592d9c0, fn1=0x00007fffffffbe40, fn2=0x00007fffffffbe28, fn3=0x00007fffffffbe10) at kdiff3_shell.cpp:39:15
    frame #13: 0x00005555555ce0aa kdiff3`main::$_0::operator()(this=0x0000555555b9fe40) const at main.cpp:196:21
    frame #14: 0x00005555555cdfe6 kdiff3`QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, main::$_0>::call(f=0x0000555555b9fe40, arg=0x0000555555b9d0a8) at qobjectdefs_impl.h:137:13
    frame #15: 0x00005555555cdf4e kdiff3`void QtPrivate::Functor<main::$_0, 0>::call<QtPrivate::List<>, void>(f=0x0000555555b9fe40, (null)=0x00007fffffffd3b0, arg=0x0000555555b9d0a8) at qobjectdefs_impl.h:339:13
    frame #16: 0x00005555555cde9b kdiff3`QtPrivate::QCallableObject<main::$_0, QtPrivate::List<>, void>::impl(which=1, this_=0x0000555555b9fe30, r=0x00007fffffffd3b0, a=0x0000555555b9d0a8, ret=0x0000000000000000) at qobjectdefs_impl.h:522:21
    frame #17: 0x00007ffff635de35 libQt6Core.so.6`QObject::event(QEvent*) + 629
    frame #18: 0x00007ffff692e107 libQt6Gui.so.6`QGuiApplication::event(QEvent*) + 695
    frame #19: 0x00007ffff72f162a libQt6Widgets.so.6`QApplication::event(QEvent*) + 890
    frame #20: 0x00007ffff72f2ff4 libQt6Widgets.so.6`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 244
    frame #21: 0x00007ffff72f3ecc libQt6Widgets.so.6`QApplication::notify(QObject*, QEvent*) + 476
    frame #22: 0x00007ffff6316ef3 libQt6Core.so.6`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 179
    frame #23: 0x00007ffff6317f8c libQt6Core.so.6`QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) + 508
    frame #24: 0x00007ffff65960e3 libQt6Core.so.6`___lldb_unnamed_symbol15827 + 19
    frame #25: 0x00007ffff50db602 libglib-2.0.so.0`___lldb_unnamed_symbol2489 + 482
    frame #26: 0x00007ffff5148588 libglib-2.0.so.0`___lldb_unnamed_symbol2747 + 600
    frame #27: 0x00007ffff50da8ac libglib-2.0.so.0`g_main_context_iteration + 44
    frame #28: 0x00007ffff6595b30 libQt6Core.so.6`QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 96
    frame #29: 0x00007ffff6320716 libQt6Core.so.6`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 550
    frame #30: 0x00007ffff6317604 libQt6Core.so.6`QCoreApplication::exec() + 132
    frame #31: 0x00005555555ccf28 kdiff3`main(argc=3, argv=0x00007fffffffd5b8) at main.cpp:199:21
    frame #32: 0x00007ffff5a5af02 libc.so.6`___lldb_unnamed_symbol3279 + 130
    frame #33: 0x00007ffff5a5afb5 libc.so.6`__libc_start_main + 133
    frame #34: 0x000055555559bd41 kdiff3`_start + 33
Comment 1 Mike Lothian 2024-04-03 15:49:31 UTC
Created attachment 168106 [details]
workaround

This works around the issue
Comment 2 Mike Lothian 2024-04-03 15:51:37 UTC
So I notice this happens when running from the command line

kdiff3 filea fileb

It's assumign that filea & fileb are actually http://filea https://fileb and saying they're binary equal

But works fine when giving the full location to the file, or opening the files from the dialog manually
Comment 3 Mike Lothian 2024-04-03 15:52:17 UTC
kdiff3 SQ-game8-sorted SQ-ign-sorted
org.kde.kdiff3: Loading A:  "http://sq-game8-sorted"
kf.kio.core: mimeType() not emitted when sending first data!; job URL = QUrl("http://sq-game8-sorted") data size = 0
org.kde.kdiff3: Loading B:  "http://sq-ign-sorted"
kf.kio.core: mimeType() not emitted when sending first data!; job URL = QUrl("http://sq-ign-sorted") data size = 0
org.kde.kdiff3: Diff: A <-> B
org.kde.kdiff3: Linediff: A <-> B
org.kde.kdiff3: Enter: calcDiff3LineListUsingAB
org.kde.kdiff3: Leave: calcDiff3LineListUsingAB
Comment 4 Mike Lothian 2024-04-03 16:01:16 UTC
I've just checked, without the patch kdiff still doesn't crash if launched with "kdiff3 /path/to/filea /path/to/fileb" only when it's "kdiff3 filea fileb"

It also aborts when using git mergetool:

git revert db7606495bb81894d91617e6348825a47de785c2
Auto-merging po/tr/kdiff3.po
CONFLICT (content): Merge conflict in po/tr/kdiff3.po
error: could not revert db760649... GIT_SILENT Sync po/docbooks with svn
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git revert --continue".
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
fireburn@axion ~/kdiff3 $ git mergetool
Merging:
po/tr/kdiff3.po

Normal merge conflict for 'po/tr/kdiff3.po':
  {local}: modified file
  {remote}: modified file
/usr/libexec/git-core/mergetools/kdiff3: line 11: 28298 Segmentation fault      (core dumped) "$merge_tool_path" --auto --L1 "$MERGED (Base)" --L2 "$MERGED (Local)" --L3 "$MERGED (Remote)" -o "$MERGED" "$BASE" "$LOCAL" "$REMOTE" > /dev/null 2>&1
merge of po/tr/kdiff3.po failed

Which gives the following debug info:

Application: KDiff3 (kdiff3), signal: Segmentation fault

[New LWP 31172]
[New LWP 31173]
[New LWP 31177]
[New LWP 31195]
[New LWP 31180]
[New LWP 31176]
[New LWP 31194]
[New LWP 31178]
[New LWP 31197]
[New LWP 31179]
[New LWP 31196]
[New LWP 31181]
[New LWP 31175]
[New LWP 31174]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib64/libthread_db.so.1".
Core was generated by `kdiff3 --auto --L1 po/tr/kdiff3.po (Base) --L2 po/tr/kdiff3.po (Local) --L3 po/'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f21e9cc0b5c in ?? () from /usr/lib64/libc.so.6
[Current thread is 1 (Thread 0x7f21e5fdd9c0 (LWP 31172))]
Cannot QML trace cores :(
Unexpectedly stumbled over an objfile (/usr/bin/kdiff3) without build_id. Not creating payload.
[Current thread is 1 (Thread 0x7f21e5fdd9c0 (LWP 31172))]

Thread 14 (Thread 0x7f21df6006c0 (LWP 31174)):
#0  0x00007f21e9d213bf in poll () at /usr/lib64/libc.so.6
#1  0x00007f21e8a496b8 in ??? () at /usr/lib64/libQt6WaylandClient.so.6
#2  0x00007f21ea5eb09e in ??? () at /usr/lib64/libQt6Core.so.6
#3  0x00007f21e9cbed22 in ??? () at /usr/lib64/libc.so.6
#4  0x00007f21e9d2e63c in ??? () at /usr/lib64/libc.so.6

Thread 13 (Thread 0x7f21dec006c0 (LWP 31175)):
#0  0x00007f21e9d213bf in poll () at /usr/lib64/libc.so.6
#1  0x00007f21e8a496b8 in ??? () at /usr/lib64/libQt6WaylandClient.so.6
#2  0x00007f21ea5eb09e in ??? () at /usr/lib64/libQt6Core.so.6
#3  0x00007f21e9cbed22 in ??? () at /usr/lib64/libc.so.6
#4  0x00007f21e9d2e63c in ??? () at /usr/lib64/libc.so.6

Thread 12 (Thread 0x7f21d4c006c0 (LWP 31181)):
#0  0x00007f21e9cbb565 in ??? () at /usr/lib64/libc.so.6
#1  0x00007f21e9cbdea1 in pthread_cond_wait () at /usr/lib64/libc.so.6
#2  0x00007f21dcef7fbd in ??? () at /usr/lib64/dri/radeonsi_dri.so
#3  0x00007f21dcf8485a in ??? () at /usr/lib64/dri/radeonsi_dri.so
#4  0x00007f21e9cbed22 in ??? () at /usr/lib64/libc.so.6
#5  0x00007f21e9d2e63c in ??? () at /usr/lib64/libc.so.6

Thread 11 (Thread 0x7f21cea006c0 (LWP 31196)):
#0  0x00007f21e9cbb565 in ??? () at /usr/lib64/libc.so.6
#1  0x00007f21e9cbe1f9 in pthread_cond_timedwait () at /usr/lib64/libc.so.6
#2  0x00007f21ea5fb6a3 in ??? () at /usr/lib64/libQt6Core.so.6
#3  0x00007f21ea5ebdf9 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib64/libQt6Core.so.6
#4  0x00007f21ea5efdb6 in ??? () at /usr/lib64/libQt6Core.so.6
#5  0x00007f21ea5eb09e in ??? () at /usr/lib64/libQt6Core.so.6
#6  0x00007f21e9cbed22 in ??? () at /usr/lib64/libc.so.6
#7  0x00007f21e9d2e63c in ??? () at /usr/lib64/libc.so.6

Thread 10 (Thread 0x7f21d60006c0 (LWP 31179)):
#0  0x00007f21e9cbb565 in ??? () at /usr/lib64/libc.so.6
#1  0x00007f21e9cbdea1 in pthread_cond_wait () at /usr/lib64/libc.so.6
#2  0x00007f21dcef7fbd in ??? () at /usr/lib64/dri/radeonsi_dri.so
#3  0x00007f21dcf8485a in ??? () at /usr/lib64/dri/radeonsi_dri.so
#4  0x00007f21e9cbed22 in ??? () at /usr/lib64/libc.so.6
#5  0x00007f21e9d2e63c in ??? () at /usr/lib64/libc.so.6

Thread 9 (Thread 0x7f21ce0006c0 (LWP 31197)):
#0  0x00007f21e9cbb565 in ??? () at /usr/lib64/libc.so.6
#1  0x00007f21e9cbe1f9 in pthread_cond_timedwait () at /usr/lib64/libc.so.6
#2  0x00007f21ea5fb6a3 in ??? () at /usr/lib64/libQt6Core.so.6
#3  0x00007f21ea5ebdf9 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib64/libQt6Core.so.6
#4  0x00007f21ea5efdb6 in ??? () at /usr/lib64/libQt6Core.so.6
#5  0x00007f21ea5eb09e in ??? () at /usr/lib64/libQt6Core.so.6
#6  0x00007f21e9cbed22 in ??? () at /usr/lib64/libc.so.6
#7  0x00007f21e9d2e63c in ??? () at /usr/lib64/libc.so.6

Thread 8 (Thread 0x7f21d6a006c0 (LWP 31178)):
#0  0x00007f21e9cbb565 in ??? () at /usr/lib64/libc.so.6
#1  0x00007f21e9cbdea1 in pthread_cond_wait () at /usr/lib64/libc.so.6
#2  0x00007f21dcef7fbd in ??? () at /usr/lib64/dri/radeonsi_dri.so
#3  0x00007f21dcf8485a in ??? () at /usr/lib64/dri/radeonsi_dri.so
#4  0x00007f21e9cbed22 in ??? () at /usr/lib64/libc.so.6
#5  0x00007f21e9d2e63c in ??? () at /usr/lib64/libc.so.6

Thread 7 (Thread 0x7f21cfe006c0 (LWP 31194)):
#0  0x00007f21e9cbb565 in ??? () at /usr/lib64/libc.so.6
#1  0x00007f21e9cbe1f9 in pthread_cond_timedwait () at /usr/lib64/libc.so.6
#2  0x00007f21ea5fb6a3 in ??? () at /usr/lib64/libQt6Core.so.6
#3  0x00007f21ea5ebdf9 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib64/libQt6Core.so.6
#4  0x00007f21ea5efdb6 in ??? () at /usr/lib64/libQt6Core.so.6
#5  0x00007f21ea5eb09e in ??? () at /usr/lib64/libQt6Core.so.6
#6  0x00007f21e9cbed22 in ??? () at /usr/lib64/libc.so.6
#7  0x00007f21e9d2e63c in ??? () at /usr/lib64/libc.so.6

Thread 6 (Thread 0x7f21d7e006c0 (LWP 31176)):
#0  0x00007f21e9cbb565 in ??? () at /usr/lib64/libc.so.6
#1  0x00007f21e9cbdea1 in pthread_cond_wait () at /usr/lib64/libc.so.6
#2  0x00007f21dcef7fbd in ??? () at /usr/lib64/dri/radeonsi_dri.so
#3  0x00007f21dcf8485a in ??? () at /usr/lib64/dri/radeonsi_dri.so
#4  0x00007f21e9cbed22 in ??? () at /usr/lib64/libc.so.6
#5  0x00007f21e9d2e63c in ??? () at /usr/lib64/libc.so.6

Thread 5 (Thread 0x7f21d56006c0 (LWP 31180)):
#0  0x00007f21e9cbb565 in ??? () at /usr/lib64/libc.so.6
#1  0x00007f21e9cbdea1 in pthread_cond_wait () at /usr/lib64/libc.so.6
#2  0x00007f21dcef7fbd in ??? () at /usr/lib64/dri/radeonsi_dri.so
#3  0x00007f21dcf8485a in ??? () at /usr/lib64/dri/radeonsi_dri.so
#4  0x00007f21e9cbed22 in ??? () at /usr/lib64/libc.so.6
#5  0x00007f21e9d2e63c in ??? () at /usr/lib64/libc.so.6

Thread 4 (Thread 0x7f21cf4006c0 (LWP 31195)):
#0  0x00007f21e9cbb565 in ??? () at /usr/lib64/libc.so.6
#1  0x00007f21e9cbe1f9 in pthread_cond_timedwait () at /usr/lib64/libc.so.6
#2  0x00007f21ea5fb6a3 in ??? () at /usr/lib64/libQt6Core.so.6
#3  0x00007f21ea5ebdf9 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib64/libQt6Core.so.6
#4  0x00007f21ea5efdb6 in ??? () at /usr/lib64/libQt6Core.so.6
#5  0x00007f21ea5eb09e in ??? () at /usr/lib64/libQt6Core.so.6
#6  0x00007f21e9cbed22 in ??? () at /usr/lib64/libc.so.6
#7  0x00007f21e9d2e63c in ??? () at /usr/lib64/libc.so.6

Thread 3 (Thread 0x7f21d74006c0 (LWP 31177)):
#0  0x00007f21e9cbb565 in ??? () at /usr/lib64/libc.so.6
#1  0x00007f21e9cbdea1 in pthread_cond_wait () at /usr/lib64/libc.so.6
#2  0x00007f21dcef7fbd in ??? () at /usr/lib64/dri/radeonsi_dri.so
#3  0x00007f21dcf8485a in ??? () at /usr/lib64/dri/radeonsi_dri.so
#4  0x00007f21e9cbed22 in ??? () at /usr/lib64/libc.so.6
#5  0x00007f21e9d2e63c in ??? () at /usr/lib64/libc.so.6

Thread 2 (Thread 0x7f21e5a006c0 (LWP 31173)):
#0  0x00007f21e9d213bf in poll () at /usr/lib64/libc.so.6
#1  0x00007f21e943c4c7 in ??? () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f21e93ce8ac in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f21ea4b61c4 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt6Core.so.6
#4  0x00007f21ea734c16 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt6Core.so.6
#5  0x00007f21ea647f94 in QThread::exec() () at /usr/lib64/libQt6Core.so.6
#6  0x00007f21ea16ee67 in ??? () at /usr/lib64/libQt6DBus.so.6
#7  0x00007f21ea5eb09e in ??? () at /usr/lib64/libQt6Core.so.6
#8  0x00007f21e9cbed22 in ??? () at /usr/lib64/libc.so.6
#9  0x00007f21e9d2e63c in ??? () at /usr/lib64/libc.so.6

Thread 1 (Thread 0x7f21e5fdd9c0 (LWP 31172)):
[KCrash Handler]
#4  0x00007f21ea709624 in QIODevice::isOpen() const () at /usr/lib64/libQt6Core.so.6
#5  0x000055c175bf1b2c in FileAccess::writeFile (this=0x7ffeb568bc80, pSrcBuffer=0x7f21ea30a950 <QByteArray::_empty>, length=0) at /var/tmp/portage/kde-misc/kdiff3-9999/work/kdiff3-9999/src/fileaccess.cpp:865
#6  0x000055c175be5615 in MergeResultWindow::saveDocument (this=0x55c194ef4e80, fileName=<optimized out>, encoding=<optimized out>, eLineEndStyle=<optimized out>) at /var/tmp/portage/kde-misc/kdiff3-9999/work/kdiff3-9999/src/mergeresultwindow.cpp:2689
#7  0x000055c175b602a9 in KDiff3App::completeInit (this=0x55c194e27450, fn1=<optimized out>, fn2=<optimized out>, fn3=<optimized out>) at /var/tmp/portage/kde-misc/kdiff3-9999/work/kdiff3-9999/src/kdiff3.cpp:688
#8  0x000055c175b4b300 in KDiff3Shell::KDiff3Shell (this=0x55c194e4bc10, fn1=..., fn2=..., fn3=...) at /var/tmp/portage/kde-misc/kdiff3-9999/work/kdiff3-9999/src/kdiff3_shell.cpp:39
#9  0x000055c175b4a549 in main::$_0::operator() (this=0x55c194de90d0) at /var/tmp/portage/kde-misc/kdiff3-9999/work/kdiff3-9999/src/main.cpp:196
#10 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, main::$_0>::call(main::$_0&, void**) (f=..., arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:137
#11 QtPrivate::FunctorCallable<main::$_0>::call<QtPrivate::List<>, void>(main::$_0&, void*, void**) (f=..., arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:345
#12 QtPrivate::QCallableObject<main::$_0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=<optimized out>, this_=0x55c194de90c0, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:555
#13 0x00007f21ea684fcc in QObject::event(QEvent*) () at /usr/lib64/libQt6Core.so.6
#14 0x00007f21ead14977 in QGuiApplication::event(QEvent*) () at /usr/lib64/libQt6Gui.so.6
#15 0x00007f21eba8dc78 in QApplication::event(QEvent*) () at /usr/lib64/libQt6Widgets.so.6
#16 0x00007f21eba908ee in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt6Widgets.so.6
#17 0x00007f21eba9237e in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt6Widgets.so.6
#18 0x00007f21ea733fc7 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt6Core.so.6
#19 0x00007f21ea73579e in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib64/libQt6Core.so.6
#20 0x00007f21ea4cb2d7 in ??? () at /usr/lib64/libQt6Core.so.6
#21 0x00007f21e93cf602 in ??? () at /usr/lib64/libglib-2.0.so.0
#22 0x00007f21e943c588 in ??? () at /usr/lib64/libglib-2.0.so.0
#23 0x00007f21e93ce8ac in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#24 0x00007f21ea4b61c4 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt6Core.so.6
#25 0x00007f21ea734c16 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt6Core.so.6
#26 0x00007f21ea734858 in QCoreApplication::exec() () at /usr/lib64/libQt6Core.so.6
#27 0x000055c175b489a9 in main (argc=13, argv=<optimized out>) at /var/tmp/portage/kde-misc/kdiff3-9999/work/kdiff3-9999/src/main.cpp:199
Comment 5 Mike Lothian 2024-04-10 11:05:00 UTC
I got a backtrace from kdiff3

 git mergetool
Merging:
kcms/mouse/CMakeLists.txt

Normal merge conflict for 'kcms/mouse/CMakeLists.txt':
  {local}: modified file
  {remote}: modified file
(lldb) target create "kdiff3"
Current executable set to '/usr/bin/kdiff3' (x86_64).
(lldb) settings set -- target.run-args  "--auto" "--L1" "kcms/mouse/CMakeLists.txt (Base)" "--L2" "kcms/mouse/CMakeLists.txt (Local)" "--L3" "kcms/mouse/CMakeLists.txt (Remote)" "-o" "kcms/mouse/CMakeLists.txt" "./kcms/mouse/CMakeLists_BASE_1741404.txt" "./kcms/mouse/CMakeLists_LOCAL_1741404.txt" "./kcms/mouse/CMakeLists_REMOTE_1741404.txt"
(lldb) run
org.kde.kdiff3: Diff: A <-> B
org.kde.kdiff3: Linediff: A <-> B
org.kde.kdiff3: Enter: calcDiff3LineListUsingAB
org.kde.kdiff3: Leave: calcDiff3LineListUsingAB
Process 1741515 launched: '/usr/bin/kdiff3' (x86_64)
Process 1741515 stopped and restarted: thread 2 received signal: SIGCHLD
Process 1741515 stopped
* thread #1, name = 'kdiff3', stop reason = signal SIGSEGV: address not mapped to object (fault address: 0x8)
    frame #0: 0x00007ffff61095b4 libQt6Core.so.6`QIODevice::isOpen() const + 4
libQt6Core.so.6`QIODevice::isOpen:
->  0x7ffff61095b4 <+4>:  movq   0x8(%rdi), %rax
    0x7ffff61095b8 <+8>:  cmpl   $0x0, 0x180(%rax)
    0x7ffff61095bf <+15>: setne  %al
    0x7ffff61095c2 <+18>: retq
(lldb) bt
* thread #1, name = 'kdiff3', stop reason = signal SIGSEGV: address not mapped to object (fault address: 0x8)
  * frame #0: 0x00007ffff61095b4 libQt6Core.so.6`QIODevice::isOpen() const + 4
    frame #1: 0x00005555556c2d6c kdiff3`FileAccess::writeFile(this=0x00007fffffffc520, pSrcBuffer=0x00007ffff5d0aa80, length=0) at fileaccess.cpp:865:9
    frame #2: 0x00005555556b66d5 kdiff3`MergeResultWindow::saveDocument(this=0x0000555556130830, fileName=<unavailable>, encoding=<unavailable>, eLineEndStyle=<unavailable>) at mergeresultwindow.cpp:2689:25
    frame #3: 0x0000555555631369 kdiff3`KDiff3App::completeInit(this=0x00005555559aa0d0, fn1=<unavailable>, fn2=<unavailable>, fn3=<unavailable>) at kdiff3.cpp:688:54
    frame #4: 0x000055555561c3c0 kdiff3`KDiff3Shell::KDiff3Shell(this=0x000055555599d540, fn1=0x00007fffffffc948, fn2=0x00007fffffffc930, fn3=0x00007fffffffc918) at kdiff3_shell.cpp:39:15
    frame #5: 0x000055555561b609 kdiff3`QtPrivate::QCallableObject<main::$_0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) [inlined] main::$_0::operator()(this=0x0000555555b2f600) const at main.cpp:196:21
    frame #6: 0x000055555561b567 kdiff3`QtPrivate::QCallableObject<main::$_0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) [inlined] QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, main::$_0>::call(f=0x0000555555b2f600, arg=<unavailable>) at qobjectdefs_impl.h:137:13
    frame #7: 0x000055555561b567 kdiff3`QtPrivate::QCallableObject<main::$_0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) [inlined] void QtPrivate::FunctorCallable<main::$_0>::call<QtPrivate::List<>, void>(f=0x0000555555b2f600, (null)=<unavailable>, arg=<unavailable>) at qobjectdefs_impl.h:345:13
    frame #8: 0x000055555561b567 kdiff3`QtPrivate::QCallableObject<main::$_0, QtPrivate::List<>, void>::impl(which=<unavailable>, this_=0x0000555555b2f5f0, r=<unavailable>, a=<unavailable>, ret=<unavailable>) at qobjectdefs_impl.h:555:21
    frame #9: 0x00007ffff6084f6c libQt6Core.so.6`QObject::event(QEvent*) + 636
    frame #10: 0x00007ffff6714d47 libQt6Gui.so.6`QGuiApplication::event(QEvent*) + 711
    frame #11: 0x00007ffff768d9a8 libQt6Widgets.so.6`QApplication::event(QEvent*) + 520
    frame #12: 0x00007ffff769061e libQt6Widgets.so.6`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 302
    frame #13: 0x00007ffff76920ae libQt6Widgets.so.6`QApplication::notify(QObject*, QEvent*) + 494
    frame #14: 0x00007ffff6133f57 libQt6Core.so.6`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 183
    frame #15: 0x00007ffff613572e libQt6Core.so.6`QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) + 526
    frame #16: 0x00007ffff5ecb2d7 libQt6Core.so.6`___lldb_unnamed_symbol10036 + 23
    frame #17: 0x00007ffff4f49602 libglib-2.0.so.0`___lldb_unnamed_symbol2489 + 482
    frame #18: 0x00007ffff4fb6588 libglib-2.0.so.0`___lldb_unnamed_symbol2747 + 600
    frame #19: 0x00007ffff4f488ac libglib-2.0.so.0`g_main_context_iteration + 44
    frame #20: 0x00007ffff5eb61c4 libQt6Core.so.6`QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 100
    frame #21: 0x00007ffff6134ba6 libQt6Core.so.6`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 550
    frame #22: 0x00007ffff61347e8 libQt6Core.so.6`QCoreApplication::exec() + 136
    frame #23: 0x0000555555619a69 kdiff3`main(argc=13, argv=<unavailable>) at main.cpp:199:21
    frame #24: 0x00007ffff6256f46 libc.so.6`___lldb_unnamed_symbol3280 + 134
    frame #25: 0x00007ffff6256ff9 libc.so.6`__libc_start_main + 137
    frame #26: 0x00005555556073c5 kdiff3`_start + 37
Comment 6 michael 2024-04-21 18:39:01 UTC
The crash on save is fixed in:
700eb940c615d8a90632f87f9833ca1a8e3a2fc2
ff6196eba71179c528360ab5eef355989d5ae979

This is present in master and 1.11.0.

Will be submitting a fix for the file open crash shortly.
Comment 7 michael 2024-04-22 01:17:08 UTC
Both the crash and the file processing error have now been corrected in master and 1.11.
Comment 8 Mike Lothian 2024-04-22 23:03:38 UTC
I'm still seeing a failure on master:

(lldb) run
Process 1098029 launched: '/usr/bin/kdiff3' (x86_64)
org.kde.kdiff3: Loading A:  "/home/fireburn/dmesg.axion"
org.kde.kdiff3: Loading B:  "/home/fireburn/dmesg.txt"
org.kde.kdiff3: Diff: A <-> B
org.kde.kdiff3: Linediff: A <-> B
org.kde.kdiff3: Enter: calcDiff3LineListUsingAB
org.kde.kdiff3: Leave: calcDiff3LineListUsingAB
terminate called after throwing an instance of 'std::system_error'
  what():  converted signed value too small: negative overflow error
Process 1098029 stopped
* thread #1, name = 'kdiff3', stop reason = signal SIGABRT
    frame #0: 0x00007ffff62bf86c libc.so.6`___lldb_unnamed_symbol3697 + 268
libc.so.6`___lldb_unnamed_symbol3697:
->  0x7ffff62bf86c <+268>: movl   %eax, %ebx
    0x7ffff62bf86e <+270>: negl   %ebx
    0x7ffff62bf870 <+272>: cmpl   $0xfffff000, %eax ; imm = 0xFFFFF000 
    0x7ffff62bf875 <+277>: movl   $0x0, %eax
(lldb) bt
* thread #1, name = 'kdiff3', stop reason = signal SIGABRT
  * frame #0: 0x00007ffff62bf86c libc.so.6`___lldb_unnamed_symbol3697 + 268
    frame #1: 0x00007ffff626be66 libc.so.6`raise + 22
    frame #2: 0x00007ffff62538b7 libc.so.6`abort + 215
    frame #3: 0x00007ffff58a4c7b libstdc++.so.6`___lldb_unnamed_symbol7333 + 98
    frame #4: 0x00007ffff58b8eec libstdc++.so.6`___lldb_unnamed_symbol7788 + 12
    frame #5: 0x00007ffff58b8f57 libstdc++.so.6`std::terminate() + 23
    frame #6: 0x000055555560fabf kdiff3`__clang_call_terminate + 15
    frame #7: 0x000055555567559f kdiff3`getBestFirstLine(LineRef, int, LineRef, int) [inlined] LineRef::operator=(this=<unavailable>, lineIn=<unavailable>) at LineRef.h:51:21
    frame #8: 0x0000555555675581 kdiff3`getBestFirstLine(line=LineRef @ scalar, nofLines=1559, firstLine=LineRef @ scalar, visibleLines=14) at difftextwindow.cpp:0
    frame #9: 0x00005555556756ab kdiff3`DiffTextWindow::setFastSelectorRange(this=0x000055555615a6c0, line1=<unavailable>, nofLines=<unavailable>) at difftextwindow.cpp:595:32
    frame #10: 0x00007ffff60dda8f libQt6Core.so.6`___lldb_unnamed_symbol13786 + 1279
    frame #11: 0x000055555560ccd1 kdiff3`MergeResultWindow::setFastSelectorRange(this=<unavailable>, _t1=LineRef @ 0x00007fffffffc46c, _t2=1559) at moc_mergeresultwindow.cpp:574:5
    frame #12: 0x00005555556ad3f3 kdiff3`MergeResultWindow::setFastSelector(this=0x0000555555c804c0, i=std::__cxx11::list<MergeBlock, std::allocator<MergeBlock> >::iterator @ scalar) at mergeresultwindow.cpp:788:12
    frame #13: 0x00005555556a63a2 kdiff3`MergeResultWindow::merge(bool, e_SrcSelector, bool, bool) [inlined] MergeResultWindow::go(this=0x0000555555c804c0, eDir=eUp, eEndPoint=eEnd) at mergeresultwindow.cpp:548:5
    frame #14: 0x00005555556a6364 kdiff3`MergeResultWindow::merge(bool, e_SrcSelector, bool, bool) [inlined] MergeResultWindow::slotGoTop(this=0x0000555555c804c0) at mergeresultwindow.cpp:658:5
    frame #15: 0x00005555556a6364 kdiff3`MergeResultWindow::merge(this=0x0000555555c804c0, bAutoSolve=<unavailable>, defaultSelector=<unavailable>, bConflictsOnly=false, bWhiteSpaceOnly=<unavailable>) at mergeresultwindow.cpp:397:5
    frame #16: 0x00005555556a5d8c kdiff3`MergeResultWindow::init(this=0x0000555555c804c0, pLineDataA=<unavailable>, sizeA=LineRef @ 0x00007fffffffc5c8, pLineDataB=<unavailable>, sizeB=LineRef @ 0x00007fffffffc5cc, pLineDataC=<unavailable>, sizeC=LineRef @ 0x00007fffffffc620, pDiff3LineList=0x000055555597a388, pTotalDiffStatus=0x0000555555a9ac50, bAutoSolve=true) at mergeresultwindow.cpp:132:5
    frame #17: 0x000055555565f1b0 kdiff3`KDiff3App::mainInit(this=0x0000555555979fe0, pTotalDiffStatus=<unavailable>, inFlags=<unavailable>) at pdiff.cpp:377:27
    frame #18: 0x000055555563193c kdiff3`KDiff3App::completeInit(QString const&, QString const&, QString const&) [inlined] KDiff3App::doFileCompare(this=0x0000555555979fe0) at kdiff3.cpp:595:5
    frame #19: 0x0000555555631908 kdiff3`KDiff3App::completeInit(this=0x0000555555979fe0, fn1=<unavailable>, fn2=<unavailable>, fn3=<unavailable>) at kdiff3.cpp:646:13
    frame #20: 0x000055555561d3e0 kdiff3`KDiff3Shell::KDiff3Shell(this=0x0000555555a07850, fn1=0x00007fffffffcb68, fn2=0x00007fffffffcb50, fn3=0x00007fffffffcb38) at kdiff3_shell.cpp:39:15
    frame #21: 0x000055555561c629 kdiff3`QtPrivate::QCallableObject<main::$_0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) [inlined] main::$_0::operator()(this=0x0000555555982d30) const at main.cpp:192:21
    frame #22: 0x000055555561c587 kdiff3`QtPrivate::QCallableObject<main::$_0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) [inlined] QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, main::$_0>::call(f=0x0000555555982d30, arg=<unavailable>) at qobjectdefs_impl.h:137:13
    frame #23: 0x000055555561c587 kdiff3`QtPrivate::QCallableObject<main::$_0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) [inlined] void QtPrivate::FunctorCallable<main::$_0>::call<QtPrivate::List<>, void>(f=0x0000555555982d30, (null)=<unavailable>, arg=<unavailable>) at qobjectdefs_impl.h:345:13
    frame #24: 0x000055555561c587 kdiff3`QtPrivate::QCallableObject<main::$_0, QtPrivate::List<>, void>::impl(which=<unavailable>, this_=0x0000555555982d20, r=<unavailable>, a=<unavailable>, ret=<unavailable>) at qobjectdefs_impl.h:555:21
    frame #25: 0x00007ffff6084f6c libQt6Core.so.6`QObject::event(QEvent*) + 636
    frame #26: 0x00007ffff6714d47 libQt6Gui.so.6`QGuiApplication::event(QEvent*) + 711
    frame #27: 0x00007ffff768d9a8 libQt6Widgets.so.6`QApplication::event(QEvent*) + 520
    frame #28: 0x00007ffff769061e libQt6Widgets.so.6`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 302
    frame #29: 0x00007ffff76920ae libQt6Widgets.so.6`QApplication::notify(QObject*, QEvent*) + 494
    frame #30: 0x00007ffff6133f57 libQt6Core.so.6`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 183
    frame #31: 0x00007ffff613572e libQt6Core.so.6`QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) + 526
    frame #32: 0x00007ffff5ecb2d7 libQt6Core.so.6`___lldb_unnamed_symbol10036 + 23
    frame #33: 0x00007ffff4fa7602 libglib-2.0.so.0`___lldb_unnamed_symbol2489 + 482
    frame #34: 0x00007ffff5014588 libglib-2.0.so.0`___lldb_unnamed_symbol2747 + 600
    frame #35: 0x00007ffff4fa68ac libglib-2.0.so.0`g_main_context_iteration + 44
    frame #36: 0x00007ffff5eb61c4 libQt6Core.so.6`QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 100
    frame #37: 0x00007ffff6134ba6 libQt6Core.so.6`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 550
    frame #38: 0x00007ffff61347e8 libQt6Core.so.6`QCoreApplication::exec() + 136
    frame #39: 0x000055555561aa89 kdiff3`main(argc=3, argv=<unavailable>) at main.cpp:195:21
    frame #40: 0x00007ffff6255306 libc.so.6`___lldb_unnamed_symbol3281 + 134
    frame #41: 0x00007ffff62553b9 libc.so.6`__libc_start_main + 137
    frame #42: 0x00005555556083e5 kdiff3`_start + 37
(lldb)
Comment 9 michael 2024-04-22 23:17:58 UTC
Go ahead and file sperrate bug for the new crash so its easier to track.