Qt issue in Kubuntu
-
The apt-supplied privacybrowser executable crashes attempting to create its QApplication instance AFAICT:
test@test-virtualbox:~$ gdb `which privacybrowser` GNU gdb (Ubuntu 15.1-1ubuntu2) 15.1 ... Thread 1 "privacybrowser" received signal SIGSEGV, Segmentation fault. 0x000079c9675247ec in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5 (gdb) bt #0 0x000079c9675247ec in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #1 0x000079c96793bc44 in QGuiApplication::screenAdded(QScreen*) () from /lib/x86_64-linux-gnu/libQt5Gui.so.5 #2 0x000079c96791d0fc in QWindowSystemInterface::handleScreenAdded(QPlatformScreen*, bool) () from /lib/x86_64-linux-gnu/libQt5Gui.so.5 #3 0x000079c9614f8b60 in QXcbConnection::initializeScreens() () from /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 #4 0x000079c9614cd903 in QXcbConnection::QXcbConnection(QXcbNativeInterface*, bool, unsigned int, char const*) () from /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 #5 0x000079c9614d12e2 in QXcbIntegration::QXcbIntegration(QStringList const&, int&, char**) () from /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 #6 0x000079c971478530 in ?? () from /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so #7 0x000079c9679401c8 in QGuiApplicationPrivate::createPlatformIntegration() () from /lib/x86_64-linux-gnu/libQt5Gui.so.5 #8 0x000079c9679419c0 in QGuiApplicationPrivate::createEventDispatcher() () from /lib/x86_64-linux-gnu/libQt5Gui.so.5 #9 0x000079c9674f0595 in QCoreApplicationPrivate::init() () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #10 0x000079c96794496d in QGuiApplicationPrivate::init() () from /lib/x86_64-linux-gnu/libQt5Gui.so.5 #11 0x000079c968171205 in QApplicationPrivate::init() () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #12 0x00005a16e2ede3c2 in ?? () #13 0x000079c966a2a3b8 in __libc_start_call_main (main=main@entry=0x5a16e2ede340, argc=argc@entry=1, argv=argv@entry=0x7ffe41796988) at ../sysdeps/nptl/libc_start_call_main.h:58 #14 0x000079c966a2a47b in __libc_start_main_impl (main=0x5a16e2ede340, argc=1, argv=0x7ffe41796988, init=<optimised out>, fini=<optimised out>, rtld_fini=<optimised out>, stack_end=0x7ffe41796978) at ../csu/libc-start.c:360 #15 0x00005a16e2ee2055 in ?? () (gdb)
Nothing in the source code looks even mildly unusual up to that point. I do not have all the KDE components needed to build the tool from source.
The actual Qt5 library and plugin components must be good or KDE itself would not start.
-
I am curious what happens if you run
privacybrowser --help-all
from the command line. Doing so engages a surprising amount of the underlying Qt infrastructure. It would be interesting this also produced an error. -
Running the program with --help-all returns the following backtrace.
The bt full command returns a longer log I pasted here: https://pastebin.com/uSzEdaSh
#0 QObject::thread (this=0x0) at kernel/qobject.cpp:1520 #1 0x00007be9479cfb93 in (anonymous namespace)::loadOnMainThread () at /usr/include/x86_64-linux-gnu/qt5/QtCore/qcoreapplication.h:116 #2 0x00007be94e6ed624 in qAddPreRoutine (p=0x7be9479cfb70 <(anonymous namespace)::loadOnMainThread()>) at kernel/qcoreapplication.cpp:277 #3 0x00007be94797bd65 in _sub_I_65535_0.0 () from /lib/x86_64-linux-gnu/libKF5Solid.so.5 #4 0x00007be9586937ef in call_init (l=<optimized out>, argc=argc@entry=2, argv=argv@entry=0x7fff78eaf408, env=env@entry=0x7fff78eaf420) at ./elf/dl-init.c:74 #5 0x00007be958693904 in call_init (l=<optimized out>, argc=<optimized out>, argv=<optimized out>, env=<optimized out>) at ./elf/dl-init.c:120 #6 _dl_init (main_map=0x575b553282e0, argc=2, argv=0x7fff78eaf408, env=0x7fff78eaf420) at ./elf/dl-init.c:121 #7 0x00007be9586905b2 in __GI__dl_catch_exception (exception=exception@entry=0x0, operate=operate@entry=0x7be95869b0f0 <call_dl_init>, args=args@entry=0x7fff78eae430) at ./elf/dl-catch.c:215 #8 0x00007be95869b1ac in dl_open_worker (a=0x7fff78eae5e0) at ./elf/dl-open.c:804 #9 dl_open_worker (a=a@entry=0x7fff78eae5e0) at ./elf/dl-open.c:767 #10 0x00007be95869051c in __GI__dl_catch_exception (exception=exception@entry=0x7fff78eae5c0, operate=operate@entry=0x7be95869b110 <dl_open_worker>, args=args@entry=0x7fff78eae5e0) at ./elf/dl-catch.c:241 #11 0x00007be95869b594 in _dl_open (file=0x575b5531b468 "/usr/lib/x86_64-linux-gnu/qt5/plugins/platformthemes/KDEPlasmaPlatformTheme5.so", mode=<optimized out>, caller_dlopen=0x7be94e6e4cd0 <QLibraryPrivate::load_sys()+1408>, nsid=<optimized out>, argc=2, argv=0x7fff78eaf408, env=0x7fff78eaf420) at ./elf/dl-open.c:880 #12 0x00007be94dc9d474 in dlopen_doit (a=a@entry=0x7fff78eae890) at ./dlfcn/dlopen.c:56 #13 0x00007be95869051c in __GI__dl_catch_exception (exception=exception@entry=0x7fff78eae7d0, operate=0x7be94dc9d410 <dlopen_doit>, args=0x7fff78eae890) at ./elf/dl-catch.c:241 #14 0x00007be958690669 in _dl_catch_error (objname=0x7fff78eae838, errstring=0x7fff78eae840, mallocedp=0x7fff78eae837, operate=<optimized out>, args=<optimized out>) at ./elf/dl-catch.c:260 #15 0x00007be94dc9cf63 in _dlerror_run (operate=operate@entry=0x7be94dc9d410 <dlopen_doit>, args=args@entry=0x7fff78eae890) at ./dlfcn/dlerror.c:138 #16 0x00007be94dc9d52f in dlopen_implementation (file=<optimized out>, mode=<optimized out>, dl_caller=<optimized out>) at ./dlfcn/dlopen.c:71 #17 ___dlopen (file=<optimized out>, mode=<optimized out>) at ./dlfcn/dlopen.c:81 #18 0x00007be94e6e4cd0 in QLibraryPrivate::load_sys (this=this@entry=0x575b5531d6f0) at plugin/qlibrary_unix.cpp:238 #19 0x00007be94e6de060 in QLibraryPrivate::load (this=this@entry=0x575b5531d6f0) at plugin/qlibrary.cpp:584 #20 0x00007be94e6de64f in QLibraryPrivate::loadPlugin (this=this@entry=0x575b5531d6f0) at plugin/qlibrary.cpp:641 #21 0x00007be94e6de9d0 in QLibraryPrivate::pluginInstance (this=0x575b5531d6f0) at plugin/qlibrary.cpp:557 #22 0x00007be94e6d1255 in QFactoryLoader::instance (this=this@entry=0x7be94f1133b0 <(anonymous namespace)::Q_QGS_loader::innerFunction()::holder>, index=<optimized out>) at plugin/qfactoryloader.cpp:396 #23 0x00007be94eb3279e in qLoadPlugin<QPlatformTheme, QPlatformThemePlugin, QStringList&> ( loader=0x7be94f1133b0 <(anonymous namespace)::Q_QGS_loader::innerFunction()::holder>, key=...) at ../../include/QtCore/5.15.13/QtCore/private/../../../../../src/corelib/plugin/qfactoryloader_p.h:106 #24 QPlatformThemeFactory::create (key=..., platformPluginPath=...) at kernel/qplatformthemefactory.cpp:73 #25 0x00007be94eb403e8 in init_platform (pluginNamesWithArguments=..., platformPluginPath=..., platformThemeName=..., argc=@0x7fff78eaf12c: 2, argv=<optimized out>) at kernel/qguiapplication.cpp:1282 #26 QGuiApplicationPrivate::createPlatformIntegration (this=0x575b55308a80) at kernel/qguiapplication.cpp:1477 #27 0x00007be94eb419c0 in QGuiApplicationPrivate::createEventDispatcher (this=<optimized out>) at kernel/qguiapplication.cpp:1494 #28 0x00007be94e6f0595 in QCoreApplicationPrivate::init (this=this@entry=0x575b55308a80) at kernel/qcoreapplication.cpp:835 #29 0x00007be94eb4496d in QGuiApplicationPrivate::init (this=0x575b55308a80) at kernel/qguiapplication.cpp:1523 #30 0x00007be94f371205 in QApplicationPrivate::init() () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #31 0x0000575b1757f3c2 in ?? () #32 0x00007be94dc2a3b8 in __libc_start_call_main (main=main@entry=0x575b1757f340, argc=argc@entry=2, argv=argv@entry=0x7fff78eaf408) at ../sysdeps/nptl/libc_start_call_main.h:58 #33 0x00007be94dc2a47b in __libc_start_main_impl (main=0x575b1757f340, argc=2, argv=0x7fff78eaf408, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff78eaf3f8) at ../csu/libc-start.c:360 #34 0x0000575b17583055 in ?? ()
-
@SGaist Good point:
Kubuntu 24.10 Beta ships with Qt6 6.6.12 and KDE Frameworks 6 version 6.5.0.
For applications that are still based on Qt5/KF5, Qt5 5.15.13 and Frameworks 5.116.0 are still in the archive.So possibly the Qt5/KF5-based executable is missing a KDE 5 framework library or resource that is not present out-of-the-box. For example, KDEPlasmaPlatformTheme5.so or libKF5Solid.so.5 in stack trace above.
I will check when I get back to the machine with the VM.
-
Nothing seems to be out of order in terms of mixed Qt5/6 or KDE dependencies missing.
BTW, the apt-supplied
privacybrowser
fails for me:- Kubuntu 24.04 with KDE Frameworks 5.115.0, Qt 5.15.3
- Kubuntu 24.10 with KDE Frameworks 6.5.0, Qt 6.6.2 and what looks to be KDE Frameworks 5.116
This issue with Wireshark looks to be the same thing. Essentially, the impossible happens :(
That leads to QTBUG-86173 and that rabbit hole is more detail than I am willing to wade into and understand.There is a suggestion that, "disabling -reduce-relocations by default is the best option."
-
Given the discussion about
-fPIC
and-fPIE
on the Wireshark bug, do you think that lines 45-52 in CMakeLists.txt could be the issue:45 # Include the Position Independent Executable checker. <https://cmake.org/cmake/help/latest/policy/CMP0083.html> 46 include(CheckPIESupported) 47 48 # Check to see if Position Independent Executable is supported in the current linker and environment. 49 check_pie_supported() 50 51 # Add the Position Independent Executable compiler flag if it is supported in the current linker and environment. <https://cmake.org/cmake/help/latest/variable/CMAKE_POSITION_INDEPENDENT_CODE.html> 52 set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
-
Possibly. This snippet derived from the CMake manual:
include(CheckPIESupported) check_pie_supported(OUTPUT_VARIABLE output LANGUAGES CXX) set_property(TARGET mmmm_pie PROPERTY POSITION_INDEPENDENT_CODE TRUE) if(NOT CMAKE_C_LINK_PIE_SUPPORTED) message(WARNING "PIE is not supported at link time: ${output}.\n" "PIE link options will not be passed to linker.") endif()
Added to the CMakeLists.txt for a basic empty-widget project generates this:
[cmake] Running /usr/bin/cmake -S /tmp/mmmm_pie -B /tmp/mmmm_pie/build/Desktop_Qt_6_7_2-Debug in /tmp/mmmm_pie/build/Desktop_Qt_6_7_2-Debug. [cmake] CMake Warning at CMakeLists.txt:51 (message): [cmake] PIE is not supported at link time: . [cmake] [cmake] PIE link options will not be passed to linker. [cmake]
It nevertheless adds
-fPIE
to theg++
calls for source compile and linking.
Kubuntu 24.04, Qt 5.15.3 or 6.7.2, CMake 3.28.3Could be worth removing the option as an experiment. I expect that support for ASLR is a desirable in a browser though.
-
@qt_usr, could you please install the .deb from the upstream website in your testing environment (assuming it will install) and check to see if you get the same error?
That .deb was built against Debian unstable. Assuming you do get the same error, I can produce another version for testing with the PIE linking code removed.
-
@Soren-Stoutner Hello,
using the .deb from the website (0.6.1) it starts! -
That is very interesting (and not what I was expecting). I think I will move this conversation back to the Launchpad bug as it appears to be some issue with how it was built for Ubuntu.
-
@Soren-Stoutner Fine. I noticed the Ubuntu repository's version is 0.6 while the website's version is 0.6.1. Let's go "back" to the launchpad bug for this.
-
For exactness of comparison, you can load 0.6 from the upstream website. Although I don't expect any difference from 0.6.1.
-
@Soren-Stoutner Yes, I confirm. Also the v0.6 starts correctly if installed using the .deb pacakge from the website.