Bug 484976 - Kdiff3 fails to start when built with Qt 6.7.0
Summary: Kdiff3 fails to start when built with Qt 6.7.0
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 12:31 UTC by Mike Lothian
Modified: 2024-04-22 01:22 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
Work around (1.65 KB, text/plain)
2024-04-03 12:45 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 12:31:14 UTC
This is on Linux, Qt 6.7.0, KF6 from the latest git, Qt 6.6 also had issues but the app started it SEGFAULTED when opening the files (https://invent.kde.org/sdk/kdiff3/-/issues/44)

(lldb) run
Process 16486 launched: '/usr/bin/kdiff3' (x86_64)
qt.core.qobject.connect: QObject::connect(QAction, KDiff3App): unique connections require a pointer to member function of a QObject subclass
kdiff3: /var/tmp/portage/kde-misc/kdiff3-9999/work/kdiff3-9999/src/guiutils.h:40: typename std::enable_if_t<std::is_same_v<T, QAction>, QAction> *GuiUtils::createAction(const QString &, const Receiver, const Func, KActionCollection *, const QString &) [T = QAction, Receiver = KDiff3App *, Func = (lambda at /var/tmp/portage/kde-misc/kdiff3-9999/work/kdiff3-9999/src/kdiff3.cpp:797:177)]: Assertion `QObject::connect(theAction, &QAction::triggered, receiver, slot, Qt::ConnectionType(Qt::AutoConnection | Qt::UniqueConnection))' failed.
Process 16486 stopped
* thread #1, name = 'kdiff3', stop reason = signal SIGABRT
    frame #0: 0x00007ffff62c0b5c libc.so.6`___lldb_unnamed_symbol3696 + 268
libc.so.6`___lldb_unnamed_symbol3696:
->  0x7ffff62c0b5c <+268>: movl   %eax, %ebx
    0x7ffff62c0b5e <+270>: negl   %ebx
    0x7ffff62c0b60 <+272>: cmpl   $0xfffff000, %eax ; imm = 0xFFFFF000 
    0x7ffff62c0b65 <+277>: movl   $0x0, %eax
(lldb) bt
* thread #1, name = 'kdiff3', stop reason = signal SIGABRT
  * frame #0: 0x00007ffff62c0b5c libc.so.6`___lldb_unnamed_symbol3696 + 268
    frame #1: 0x00007ffff626d5e6 libc.so.6`raise + 22
    frame #2: 0x00007ffff62554f5 libc.so.6`abort + 215
    frame #3: 0x00007ffff6255419 libc.so.6`___lldb_unnamed_symbol3173 + 15
    frame #4: 0x00007ffff6265926 libc.so.6`__assert_fail + 70
    frame #5: 0x000055555562e8c6 kdiff3`KDiff3App::initActions(KActionCollection*) [inlined] std::enable_if<std::is_same_v<QAction, QAction>, QAction>::type* GuiUtils::createAction<QAction, KDiff3App*, KDiff3App::initActions(KActionCollection*)::$_0>(text=<unavailable>, receiver=0x000055555599f3a0, slot=(unnamed class) @ r14, ac=0x0000555555b2bb20, actionName=<unavailable>) at guiutils.h:40:5
    frame #6: 0x000055555562e8a7 kdiff3`KDiff3App::initActions(KActionCollection*) [inlined] QAction* GuiUtils::createAction<QAction, KDiff3App*, KDiff3App::initActions(KActionCollection*)::$_0>(text=<unavailable>, shortcut=<unavailable>, receiver=0x000055555599f3a0, slot=(unnamed class) @ r14, ac=0x0000555555b2bb20, actionName=<unavailable>) at guiutils.h:69:20
    frame #7: 0x000055555562e8a7 kdiff3`KDiff3App::initActions(KActionCollection*) [inlined] QAction* GuiUtils::createAction<QAction, KDiff3App*, KDiff3App::initActions(KActionCollection*)::$_0>(text=<unavailable>, icon=<unavailable>, iconText=<unavailable>, shortcut=<unavailable>, receiver=0x000055555599f3a0, slot=(unnamed class) @ r14, ac=0x0000555555b2bb20, actionName=<unavailable>) at guiutils.h:126:20
    frame #8: 0x000055555562e8a7 kdiff3`KDiff3App::initActions(this=0x000055555599f3a0, ac=0x0000555555b2bb20) at kdiff3.cpp:797:18
    frame #9: 0x00005555556258e2 kdiff3`KDiff3App::KDiff3App(this=0x000055555599f3a0, pParent=<unavailable>, name=<unavailable>, pKDiff3Shell=<unavailable>) at kdiff3.cpp:306:5
    frame #10: 0x000055555561d002 kdiff3`KDiff3Shell::KDiff3Shell(this=0x00005555559e74d0, fn1=0x00007fffffffcbe8, fn2=0x00007fffffffcbd0, fn3=0x00007fffffffcbb8) at kdiff3_shell.cpp:29:20
    frame #11: 0x000055555561c379 kdiff3`QtPrivate::QCallableObject<main::$_0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) [inlined] main::$_0::operator()(this=0x00005555559e6b30) const at main.cpp:196:21
    frame #12: 0x000055555561c2d7 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=0x00005555559e6b30, arg=<unavailable>) at qobjectdefs_impl.h:137:13
    frame #13: 0x000055555561c2d7 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=0x00005555559e6b30, (null)=<unavailable>, arg=<unavailable>) at qobjectdefs_impl.h:345:13
    frame #14: 0x000055555561c2d7 kdiff3`QtPrivate::QCallableObject<main::$_0, QtPrivate::List<>, void>::impl(which=<unavailable>, this_=0x00005555559e6b20, r=<unavailable>, a=<unavailable>, ret=<unavailable>) at qobjectdefs_impl.h:555:21
    frame #15: 0x00007ffff6084fcc libQt6Core.so.6`QObject::event(QEvent*) + 636
    frame #16: 0x00007ffff6714977 libQt6Gui.so.6`QGuiApplication::event(QEvent*) + 711
    frame #17: 0x00007ffff768dc78 libQt6Widgets.so.6`QApplication::event(QEvent*) + 520
    frame #18: 0x00007ffff76908ee libQt6Widgets.so.6`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 302
    frame #19: 0x00007ffff769237e libQt6Widgets.so.6`QApplication::notify(QObject*, QEvent*) + 494
    frame #20: 0x00007ffff6133fc7 libQt6Core.so.6`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 183
    frame #21: 0x00007ffff613579e libQt6Core.so.6`QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) + 526
    frame #22: 0x00007ffff5ecb2d7 libQt6Core.so.6`___lldb_unnamed_symbol10036 + 23
    frame #23: 0x00007ffff4f48602 libglib-2.0.so.0`___lldb_unnamed_symbol2489 + 482
    frame #24: 0x00007ffff4fb5588 libglib-2.0.so.0`___lldb_unnamed_symbol2747 + 600
    frame #25: 0x00007ffff4f478ac libglib-2.0.so.0`g_main_context_iteration + 44
    frame #26: 0x00007ffff5eb61c4 libQt6Core.so.6`QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 100
    frame #27: 0x00007ffff6134c16 libQt6Core.so.6`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 550
    frame #28: 0x00007ffff6134858 libQt6Core.so.6`QCoreApplication::exec() + 136
    frame #29: 0x000055555561a7d9 kdiff3`main(argc=1, argv=<unavailable>) at main.cpp:199:21
    frame #30: 0x00007ffff6256f46 libc.so.6`___lldb_unnamed_symbol3280 + 134
    frame #31: 0x00007ffff6256ff9 libc.so.6`__libc_start_main + 137
    frame #32: 0x0000555555608135 kdiff3`_start + 37
Comment 1 Mike Lothian 2024-04-03 12:45:34 UTC
Created attachment 168097 [details]
Work around

This works around the start up issue - i've no idea what this is actually doing though
Comment 2 michael 2024-04-22 01:22:28 UTC
Looks like a master only regression. Fixed in b63bdfe17bacd0bb89255823983a472ab54fcd33.