This commit: commit 8618262c5813546a591cf8273039a56e3bf2c415 Author: Jason E. Hale <jhale@FreeBSD.org> Date: Thu Dec 18 22:05:52 2025 Qt6: Update to 6.10.1 I'm not giving the usual fanfare. This has been an absolute slog. Ports changes: qt6-base: Added WAYLAND option. This is congruent with the X11 option. We really don't recommend disabling this option, but it is available for advanced users who don't want wayland for whatever reason. appears to cause qbittorrent to crash, see bug#291988. The crash stack: #0 0x0000000805c4ca1a in thr_kill () at /lib/libsys.so.7 #1 0x0000000804a4f834 in raise () at /lib/libc.so.7 #2 0x0000000804b01579 in abort () at /lib/libc.so.7 #3 0x000000080423855d in qAbort () at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/global/qassert.cpp:46 #4 0x000000080427feda in qt_maybe_message_fatal<QString&> (msgType=QtFatalMsg, context=..., message=...) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/global/qlogging.cpp:2166 #5 0x00000008042790e5 in qt_message (msgType=QtFatalMsg, context=..., msg=0x803f04cb6 "ASSERT failure in %s: \"%s\", file %s, line %d", ap=0x7fffffffcb40) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/global/qlogging.cpp:412 #6 0x000000080427b46d in QMessageLogger::fatal (this=0x7fffffffcce0, msg=0x803f04cb6 "ASSERT failure in %s: \"%s\", file %s, line %d") at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/global/qlogging.cpp:901 #7 0x0000000804238613 in qt_assert_x (where=0x803efe9f2 "Q_UNREACHABLE()", what=0x803f05d5b "Q_UNREACHABLE was reached", file=0x803f00409 "/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/thread/qmutex.cpp", line=849) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/global/qassert.cpp:122 #8 0x0000000804719bd0 in QBasicMutex::unlockInternal (this=0x808cacb08, copy=0x3) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/thread/qmutex.cpp:849 #9 0x00000000007e4749 in ??? () #10 0x00000000007d5b41 in ??? () #11 0x00000000007e1e50 in ??? () #12 0x0000000804238262 in QtPrivate::QSlotObjectBase::call (this=0x809edf4a0, r=0x808cab800, a=0x80a52dbc8) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qobjectdefs_impl.h:461 #13 0x000000080442c79c in QMetaCallEvent::placeMetaCall (this=0x80a52db80, object=0x808cab800) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qobject.cpp:623 #14 0x000000080442e302 in QObject::event (this=0x808cab800, e=0x80a52db80) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qobject.cpp:1413 #15 0x000000080229ff80 in QApplicationPrivate::notify_helper (this=0x806442000, receiver=0x808cab800, e=0x80a52db80) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/widgets/kernel/qapplication.cpp:3305 #16 0x00000008022a3e64 in QApplication::notify (this=0x80645a000, receiver=0x808cab800, e=0x80a52db80) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/widgets/kernel/qapplication.cpp:3255 #17 0x000000080437960a in QCoreApplication::notifyInternal2 (receiver=0x808cab800, event=0x80a52db80) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qcoreapplication.cpp:1109 #18 0x000000080437a289 in QCoreApplication::sendEvent (receiver=0x808cab800, event=0x80a52db80) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qcoreapplication.cpp:1549 #19 0x000000080437b1bb in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x8064461e0) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qcoreapplication.cpp:1904 #20 0x000000080437a0cc in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qcoreapplication.cpp:1757 #21 0x0000000804929441 in postEventSourceDispatch (s=0x8064382a0) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qeventdispatcher_glib.cpp:246 #22 0x0000000805041081 in ??? () at /usr/local/lib/libglib-2.0.so.0 #23 0x0000000805041516 in ??? () at /usr/local/lib/libglib-2.0.so.0 #24 0x00000008050415b6 in g_main_context_iteration () at /usr/local/lib/libglib-2.0.so.0 #25 0x000000080492864c in QEventDispatcherGlib::processEvents (this=0x806504e80, flags=...) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qeventdispatcher_glib.cpp:399 #26 0x0000000806142e69 in QXcbGlibEventDispatcher::processEvents (this=0x806504e80, flags=...) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/plugins/platforms/xcb/qxcbeventdispatcher.cpp:98 #27 0x0000000804393c81 in QEventLoop::processEvents (this=0x7fffffffe000, flags=...) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qeventloop.cpp:104 #28 0x0000000804393ed4 in QEventLoop::exec (this=0x7fffffffe000, flags=...) at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qeventloop.cpp:186 #29 0x0000000804379f7f in QCoreApplication::exec () at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qcoreapplication.cpp:1452 #30 0x000000080325683a in QGuiApplication::exec () at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/gui/kernel/qguiapplication.cpp:1973 #31 0x00000008022a109d in QApplication::exec () at /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/widgets/kernel/qapplication.cpp:2575 #32 0x000000000074fa5b in ??? () The Q_UNREACHABLE macro is executed in this function: 840│ Q_NEVER_INLINE 841│ void QBasicMutex::unlockInternal(void *copy) noexcept 842│ { 843│ Q_ASSERT(copy); //we must be locked 844│ Q_ASSERT(copy != dummyLocked()); // testAndSetRelease(dummyLocked(), 0) failed 845│ 846│ # if defined(Q_OS_FREEBSD) || defined(Q_OS_LINUX) || defined(Q_OS_WIN) 847│ // these platforms always have futex and have never called this function 848│ // from inline code 849├───> Q_UNREACHABLE(); 850│ # endif Building qbittorrent with WITH_DEBUG=yes is a workaround for unclear reasons.
Sometime in December 2025 I noticed qbittorrent-nox 5.1.4 would no longer stay running for me. Sometime it would run for a short time, but often it would just quit straight away after a "service qbittorrent restart". I don't know whether this coincided with my upgrading to FreeBSD/amd64 15-STABLE from 14-STABLE, or due to other package updates. (I build all my packages locally via Poudriere and rebuilt and reinstalled them all as part of the FreeBSD upgrade.) I would notice something like this sometimes in my daily security run output when having the problem with qbittorrent-nox: pid 3111 (qbittorrent-nox), jid 0, uid 922: exited on signal 5 (no core dump - other error) I updated to qbittorrent-nox 5.1.4_1 today and now it appears to run successfully again, so whatever was causing it to quit before no longer is doing that now for me.
I just installed the qbittorrent 5.1.4 package on 15.0-STABLE amd64 (which was not built with WITH_DEBUG) and couldn't get the crash and there is nothing outputted to the console upon startup.
(In reply to Jason E. Hale from comment #2) Are you saying qbittorrent 5.1.4 runs properly for you on 15-STABLE? For me, I could not get it to run for more than a couple of minutes before it would mysteriously quit (with the signal 5 error in the system log). My problem is that 5.1.4 would not stay running, whereas it had before. Qbittorrent-nox 5.1.4_1 restores the behaviour for me where it will stay running.
(In reply to Paul Mather from comment #3) qbittorrent runs for a very long time when it is built with WITH_DEBUG=yes. This is currently a workaround in this port. Same in multimedia/obs-studio: it crashes when built with debug info and works fine when built with debug info. In multimedia/obs-studio I narrowed it down to having this if statement fail: 945│ if (Q_UNLIKELY(!qobject_cast<QApplication *>(QCoreApplication::instance()))) 946├───────> qFatal("QWidget: Cannot create a QWidget without QApplication"); 947│ in /usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.10.1/src/widgets/kernel/qwidget.cpp despite the fact that QApplication was created and is present.
(In reply to Yuri Victorovich from comment #4) * obs-studio aborts w/out debug info
(In reply to Yuri Victorovich from comment #4) > Same in multimedia/obs-studio: it crashes when built with debug info and works fine when built with debug info. Something about Qt's inheritance checks was broken in https://github.com/qt/qtbase/commit/a3d2e45cb7cc61f8f9bb7ff968d5ca8247a15bd4 (due to -Bsymbolic-functions). This can worked around with CMAKE_OFF+= QT_FEATURE_reduce_relocations, but really should be investigated further.
(In reply to Alex S from comment #6) I can't confirm this being relevant to qBittorrent, though. Doesn't crash for me. The repro looks like this: ~/qt-casting $ cat CMakeLists.txt cmake_minimum_required(VERSION 3.16) project(qt-casting) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) find_package(Qt6 REQUIRED COMPONENTS Core Widgets) add_executable(qt-casting main.cpp) target_link_libraries(qt-casting PRIVATE Qt::Core Qt::Widgets) ~/qt-casting $ cat main.cpp #include <cstdio> #include <QApplication> class Whatever : public QObject { Q_OBJECT }; #include "main.moc" int main(int argc, char *argv[]) { QApplication a(argc, argv); printf("qobject_cast: %s\n", qobject_cast<QApplication *>(QCoreApplication::instance()) != nullptr ? "ok" : "fail"); printf("inheritance check: %s\n", QCoreApplication::staticMetaObject.inherits(&QObject::staticMetaObject) ? "ok" : "fail"); Whatever whatever; printf("%p\n", &whatever); return 0; } ~/qt-casting $ mkdir build ~/qt-casting $ cd build/ ~/qt-casting/build $ cmake .. -DCMAKE_BUILD_TYPE:STRING="Release" ... ~/qt-casting/build $ make ... ~/qt-casting/build $ ./qt-casting qobject_cast: ok inheritance check: fail 0x8211dc538
Should CMAKE_OFF+= QT_FEATURE_reduce_relocations be added to all */qt6-* ports or only to qt6-base? IMO this should be reported as a bug to the Qt upstream.
(In reply to Yuri Victorovich from comment #8) > Should CMAKE_OFF+= QT_FEATURE_reduce_relocations be added to all */qt6-* ports or only to qt6-base? If this is indeed the fix, it would only be needed in qt6-base. The other qt modules would inherit this feature, but would all likely need to be rebuilt. I'm preparing Qt 6.10.2 now, so if I can verify that this works, I'll include it in the update so folks don't have to rebuild all of Qt twice in a short period of time.
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=b4a5f8275569ab3abf2962939fd19c8bc91e5760 commit b4a5f8275569ab3abf2962939fd19c8bc91e5760 Author: Jason E. Hale <jhale@FreeBSD.org> AuthorDate: 2026-02-05 21:11:37 +0000 Commit: Jason E. Hale <jhale@FreeBSD.org> CommitDate: 2026-02-08 06:21:14 +0000 Qt6: Update to 6.10.2 January 29, 2026 by Jani Heikkinen Qt 6.10.2 is now available for download. As a patch release, Qt 6.10.2 doesn’t introduce new features, but it delivers around 300 bug fix, security improvements, and quality enhancements on top of Qt 6.10.1. For a full overview of the most notable changes, take a look at the Qt 6.10.2 release notes. Announcement: https://www.qt.io/blog/qt-6.10.2-released Release notes: https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.10.2/release-note.md FreeBSD ports changes: devel/qt6-base: - Disable the reduced_relocations feature. Prior to Qt 6.10.0, this was only enabled if the compiler was GCC, but we are seeing crashes in certain ports such as misc/bibletime, multimedia/obs-studio, and net-p2p/qbittorrent. [1] - Rebase patches graphics/qt6-wayland: - Add a pre-configure check to test if devel/qt6-base was built with the WAYLAND option. This module cannot be built if the WAYLAND option is disabled in devel/qt6-base. [2] www/qt6-webengine: - Patched with security patches up to Chromium version: 144.0.7559.109 - Define NODEJS_EXECUTEABLE in the configure environment after [3]. This is forward porting for the post-release security rollup and not part of the official release. Future releases [3][4] will likely require this. - Remove upstreamed patches [3] https://code.qt.io/cgit/qt/qtwebengine-chromium.git/commit/?h=134-based&id=cf510ebd4e870eb24fb5bc1d1ddcc5442247672d [4] https://code.qt.io/cgit/qt/qtwebengine-chromium.git/commit/?h=140-based&id=aab0f6f0928e7e4f73832abba9a00b7946b7e459 x11-toolkits/qt6-declarative - Remove upsteamed patches The Qt python bindings have also been updated along with their respective tools. PySide6: Update to 6.10.2 PyQt6: Update to 6.10.2 PR: 292376 [1], 292273 [2] Reported by: yuri [1], jbo [2] MFH: 2026Q1 Security: 73ff246b-04b2-11f1-84fc-4ccc6adda413 Mk/Uses/pyqt.mk | 6 +- Mk/Uses/qt.mk | 4 +- accessibility/qt6-speech/distinfo | 6 +- comms/qt6-connectivity/distinfo | 6 +- comms/qt6-sensors/distinfo | 6 +- comms/qt6-serialbus/distinfo | 6 +- comms/qt6-serialport/distinfo | 6 +- databases/qt6-base_sqldriver/distinfo | 6 +- devel/py-qt5-sip/distinfo | 6 +- devel/py-qt6-pyqt/distinfo | 6 +- devel/py-qt6-sip/distinfo | 6 +- devel/pyside6-tools/distinfo | 6 +- devel/pyside6/distinfo | 6 +- devel/qt6-5compat/distinfo | 6 +- devel/qt6-base/Makefile | 4 +- devel/qt6-base/distinfo | 6 +- .../files/patch-cmake_QtPkgConfigHelpers.cmake | 4 +- .../files/patch-src_corelib_CMakeLists.txt | 4 +- .../patch-src_corelib_global_qcompilerdetection.h | 4 +- .../files/patch-src_corelib_io_qlockfile__unix.cpp | 4 +- .../patch-src_corelib_thread_qthread__unix.cpp | 31 +- ...rc_network_socket_qnativesocketengine__unix.cpp | 4 +- ...hellintegration_xdg-shell_qwaylandxdgshell__p.h | 4 +- devel/qt6-base/pkg-plist | 13 +- devel/qt6-grpc/distinfo | 6 +- devel/qt6-languageserver/distinfo | 6 +- devel/qt6-location/distinfo | 6 +- devel/qt6-positioning/distinfo | 6 +- devel/qt6-remoteobjects/distinfo | 6 +- devel/qt6-scxml/distinfo | 6 +- devel/qt6-tools/distinfo | 6 +- devel/qt6-translations/distinfo | 6 +- devel/qt6-translations/pkg-plist | 5 + devel/shiboken6/distinfo | 6 +- graphics/qt6-3d/distinfo | 6 +- graphics/qt6-imageformats/distinfo | 6 +- graphics/qt6-lottie/distinfo | 6 +- graphics/qt6-quickeffectmaker/distinfo | 6 +- graphics/qt6-svg/distinfo | 6 +- graphics/qt6-wayland/Makefile | 8 +- graphics/qt6-wayland/distinfo | 6 +- misc/qt6-doc/distinfo | 6 +- misc/qt6-doc/pkg-plist | 11 +- misc/qt6-examples/distinfo | 6 +- misc/qt6-examples/pkg-plist | 159 ++- multimedia/qt6-multimedia/Makefile | 1 - multimedia/qt6-multimedia/distinfo | 6 +- net/qt6-coap/distinfo | 6 +- net/qt6-mqtt/distinfo | 6 +- net/qt6-networkauth/distinfo | 6 +- science/qt6-quick3dphysics/distinfo | 6 +- www/qt6-httpserver/distinfo | 6 +- www/qt6-webchannel/distinfo | 6 +- www/qt6-webengine/Makefile | 7 +- www/qt6-webengine/distinfo | 6 +- www/qt6-webengine/files/patch-QTBUG-139335 (gone) | 610 ---------- .../files/patch-security-rollup (new) | 1261 ++++++++++++++++++++ www/qt6-websockets/distinfo | 6 +- www/qt6-webview/distinfo | 6 +- x11-toolkits/qt6-charts/distinfo | 6 +- x11-toolkits/qt6-datavis3d/distinfo | 6 +- x11-toolkits/qt6-declarative/Makefile | 1 - x11-toolkits/qt6-declarative/distinfo | 6 +- .../files/patch-QTBUG-142331 (gone) | 229 ---- .../files/patch-QTBUG-142514 (gone) | 122 -- ...ch-src_3rdparty_masm_assembler_ARM64Assembler.h | 4 +- ...ch-src_3rdparty_masm_assembler_ARMv7Assembler.h | 12 +- .../files/patch-src_qml_configure.cmake | 10 +- x11-toolkits/qt6-declarative/pkg-plist | 1 + x11-toolkits/qt6-graphs/distinfo | 6 +- x11-toolkits/qt6-quick3d/distinfo | 6 +- x11-toolkits/qt6-quicktimeline/distinfo | 6 +- x11-toolkits/qt6-shadertools/distinfo | 6 +- x11-toolkits/qt6-virtualkeyboard/distinfo | 6 +- 74 files changed, 1603 insertions(+), 1208 deletions(-)
(In reply to commit-hook from comment #10) Reporting here as the commit doesn't have PR dedicated for this upgrade of this. At least x11/qt6-declarative fails to package with a plenty of unaccessible staged files. If it's OK for you, isn't pkg-plist properly pushed?
Created attachment 267905 [details] Error list (install stage with pkg_replace) of qt6-declarative Error list of x11-toolkits/qt6-declarative. Actually, this is the install part of pkg_replace, but the result of `make package` after `make` on /usr/ports/x11-toolkits/qt6-declarative looks the same. Note that current pkg-plist is 344058 bytes in size, while the output of `make makeplist`is 83355 bytes in size (including message at the 1st line).
(In reply to Tomoaki AOKI from comment #12) I've just re-tested x11-toolkits/qt6-declarative 6.10.2 in poudriere and the pkg-plist is correct as far as I can tell. Only one line was inserted into the pkg-plist 6.10.1 -> 6.10.2, so I don't know what your doing to come up with 83355 bytes, but 344058 bytes is correct size of the pkg-plist. The size for the 6.10.1 version of qt6-declarative's pkg-plist was 344003 bytes, so the 55 added characters maths out to 344058.
(In reply to Jason E. Hale from comment #13) Possibly it is specific for bare-metal builds. The environment I've bitten is bare-metal environment using ports-mgmt/pkg_replace. main at commit base a25b12c6ce63be1fefb31d14daca332682fd31fc, amd64. Try deleting everything under /usr/local/lib/compat/pkg didn't help (expected, as there were nothing related with qt6). Why I don't use poudriere on main is because it's too much sensitive with OSVERSION. Forcing full rebuilds even on bumps in least 2 digits is too much a pain on main, and my daily driver is stable/15 running on exactly the same computer (on another SSD), which means I cannot give too much time for upgrading main (test and emergency environment). Sorry, time I can give for main this weekend is over and need to switch back to stable/15 shortly. I'll retry (hopefully) next weekend.
Switched back to stable/15 at commit base 58a369a6f6ce6786ef7aa4715c96548f36ae396 on exactly the same computer that has issues on main. poudriere build (not yet finished the whole upgrades) passed x11-toolkit/qt6-declarative and currently no fallouts. So the issue would be specific for bare-metal upgrade builds. Possible reason I can think of for now is *.pc files of previous version is affecting. (As noted on Comment 14, the issue persists even after emptying /usr/local/lib/compat/pkg/.) Or insufficient build order restrictions?
Poudriere builds finished without fallouts, but intentionally ran bare-metal upgrades using pkg_replace without using built pkgs, come to reproduce failure on stable/15, too. Not base branch dependent, bare-metal upgrades specific failure.
(In reply to Tomoaki AOKI from comment #16) Proceeded upgrade using pre-built pkgs with local poudriere on stable/15, then, retried `make` and `make package` at /usr/ports/x11-toolkits/qt6-declarative and it went fine. So I think I could confirm this issue is bare-metal upgrade specific. But it shold be better fixed.
I am closing this as the qbittorrent crash caused by `-Bsymbolic-functions` breaking Qt's inheritance checks was fixed in the Qt6 6.10.2 update (commit b4a5f827), which disables the `reduced_relocations` feature. The fix was identified by iwtcex@gmail.com and committed by the KDE team. The current port version is 6.10.2.
FWIW diff --git a/multimedia/obs-studio/Makefile b/multimedia/obs-studio/Makefile index 02d459f69..1b6138847 100644 --- a/multimedia/obs-studio/Makefile +++ b/multimedia/obs-studio/Makefile @@ -69,9 +69,9 @@ CMAKE_OFF= CMAKE_COMPILE_WARNING_AS_ERROR # no -Werror CFLAGS+= -Wno-error=attribute-warning CFLAGS_powerpc64= -Wno-error=deprecated-altivec-src-compat -Wno-error=pass-failed CFLAGS_powerpc64le= -Wno-error=deprecated-altivec-src-compat -CFLAGS+= -fPIC # otherwise we get: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC -CXXFLAGS+= -fPIC # otherwise we get: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC -LDFLAGS+= -fPIC # pending https://github.com/obsproject/obs-studio/issues/3436 +CFLAGS+= -fPIC -fvisibility=hidden -fvisibility-inlines-hidden # otherwise we get: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC +CXXFLAGS+= -fPIC -fvisibility=hidden -fvisibility-inlines-hidden # otherwise we get: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC +LDFLAGS+= -fPIC -fvisibility=hidden -fvisibility-inlines-hidden # pending https://github.com/obsproject/obs-studio/issues/3436 Makes obs work start on qt6-base-10.2 with QT_FEATURE_reduce_relocations ON
Created attachment 269518 [details] reproducer of obs-studio issue. cmake -DCMAKE_VERBOSE_MAKEFILE=On -DCMAKE_BUILD_TYPE=Release .. with lto it exposes the issue of obs-studio remove "set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)" and it works, without having the QT_FEATURE_reduce_relocations set to OFF as in the original workaround. smt is broken in lto?
(In reply to Alex S from comment #6) Your reproducer seems to be fine with cmake -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_CXX_COMPILER=g++14 -DCMAKE_BUILD_TYPE=Release .. So the lto of llvm is not healthy for qt with -Bsymolic-functions? Or is this expected somehow? /srepro/gccbuild]# ./qt-casting: qobject_cast: ok inheritance check: ok srepro/clangbuild qobject_cast: ok inheritance check: fail
(In reply to Jesper Schmitz Mouridsen from comment #21) > So the lto of llvm is not healthy for qt with -Bsymolic-functions? I don't know. Try comparing symbol tables, I suppose. I'm not particularly familiar with Qt and was only doing basic reduction/bisection steps because the issue was blocking my patch for the OBS build configuration. > Or is this expected somehow? Nothing should fail. (Actually, the qobject_cast check never fails with this repro, the trigger seems to be no longer there after a few rounds of simplification, so it's just the inheritance check.)