Bug 292376 - devel/qt6-base: Regression in 6.10.1: qbittorrent crashes after the update
Summary: devel/qt6-base: Regression in 6.10.1: qbittorrent crashes after the update
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-kde (group)
URL:
Keywords:
Depends on:
Blocks: 291988 293020
  Show dependency treegraph
 
Reported: 2026-01-12 07:57 UTC by Yuri Victorovich
Modified: 2026-04-10 21:29 UTC (History)
7 users (show)

See Also:
jhale: maintainer-feedback+


Attachments
Error list (install stage with pkg_replace) of qt6-declarative (646.94 KB, text/plain)
2026-02-08 12:58 UTC, Tomoaki AOKI
no flags Details
reproducer of obs-studio issue. (2.29 KB, application/gzip)
2026-04-08 21:53 UTC, Jesper Schmitz Mouridsen
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Yuri Victorovich freebsd_committer freebsd_triage 2026-01-12 07:57:04 UTC
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.
Comment 1 Paul Mather 2026-01-12 19:43:23 UTC
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.
Comment 2 Jason E. Hale freebsd_committer freebsd_triage 2026-01-13 06:42:06 UTC
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.
Comment 3 Paul Mather 2026-01-13 14:56:05 UTC
(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.
Comment 4 Yuri Victorovich freebsd_committer freebsd_triage 2026-02-01 01:11:02 UTC
(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.
Comment 5 Yuri Victorovich freebsd_committer freebsd_triage 2026-02-01 01:11:54 UTC
(In reply to Yuri Victorovich from comment #4)

* obs-studio aborts w/out debug info
Comment 6 Alex S 2026-02-01 14:11:10 UTC
(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.
Comment 7 Alex S 2026-02-01 14:29:21 UTC
(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
Comment 8 Yuri Victorovich freebsd_committer freebsd_triage 2026-02-01 16:57:13 UTC
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.
Comment 9 Jason E. Hale freebsd_committer freebsd_triage 2026-02-02 06:12:23 UTC
(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.
Comment 10 commit-hook freebsd_committer freebsd_triage 2026-02-08 06:44:46 UTC
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(-)
Comment 11 Tomoaki AOKI 2026-02-08 12:51:16 UTC
(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?
Comment 12 Tomoaki AOKI 2026-02-08 12:58:34 UTC
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).
Comment 13 Jason E. Hale freebsd_committer freebsd_triage 2026-02-08 13:29:40 UTC
(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.
Comment 14 Tomoaki AOKI 2026-02-08 14:34:07 UTC
(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.
Comment 15 Tomoaki AOKI 2026-02-08 16:12:49 UTC
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?
Comment 16 Tomoaki AOKI 2026-02-08 22:27:21 UTC
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.
Comment 17 Tomoaki AOKI 2026-02-08 23:00:48 UTC
(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.
Comment 18 Torsten Zuehlsdorff freebsd_committer freebsd_triage 2026-03-22 19:14:52 UTC
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.
Comment 19 Jesper Schmitz Mouridsen freebsd_committer freebsd_triage 2026-04-05 19:42:52 UTC
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
Comment 20 Jesper Schmitz Mouridsen freebsd_committer freebsd_triage 2026-04-08 21:53:13 UTC
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?
Comment 21 Jesper Schmitz Mouridsen freebsd_committer freebsd_triage 2026-04-10 20:32:25 UTC
(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
Comment 22 Alex S 2026-04-10 21:29:10 UTC
(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.)