Open
Description
Building contour from master has been resulting in segfaulting binaries for a while now:
This is roughly the same stacktrace in the few commits that are compilabile in the git history, segfaults happens somewhere in GStreamer (sic!) where a nullptr is dereferenced:
triton $ idprio 0 ninja -C build
ninja: Entering directory `build'
[0/1] Re-running CMake...
-- [Version] Git branch: master
-- [Version] Git SHA: 46f74e9d
-- [Version] version source: git & /home/nsonack/src/contour/metainfo.xml
-- [Version] version triple: 0.5.2
-- [Version] version string: 0.5.2-master-46f74e9d
-- [ccache] Enabled: /usr/local/bin/ccache
-- [clang-tidy] Disabled.
-- addr2line: /usr/bin/addr2line
-- No sanitizer enabled.
-- Embedding 3rdparty libraries: /home/nsonack/src/contour/_deps/sources
-- ==============================================================================
-- Contour ThirdParties:
-- [clang-tidy] Disabled.
-- Performing Test fdiagnostics-color=always
-- Performing Test fdiagnostics-color=always - Success
-- Adding compiler flag: -fdiagnostics-color=always.
-- Enabling pedantic compiler options: no
-- [code coverage] Disabled.
-- libunicode library build mode: STATIC
-- ------------------------------------------------------------------------------
-- libunicode (version 0.6.0)
-- ------------------------------------------------------------------------------
-- Build type: RelWithDebInfo
-- Build mode: static
-- Build unit tests: OFF
-- Build benchmark: OFF
-- Build tools: OFF
-- Enable tablegen fast build: OFF
-- Using ccache: /usr/local/bin/ccache
-- SIMD support: intrinsics
-- Using UCD directory: /home/nsonack/src/contour/_deps/sources/libunicode-817cb5900acdf6f60e2344a4c8f1f39262878a4b/_ucd/ucd-16.0.0
-- Enable clang-tidy: OFF ()
-- ------------------------------------------------------------------------------
-- ==============================================================================
-- ThirdParties
-- ------------------------------------------------------------------------------
-- ------------------------------------------------------------------------------
-- base dir: /home/nsonack/src/contour/build/_deps/sources/boxed-cpp-1.4.3/3rdparty
-- dnld dir: /home/nsonack/src/contour/build/_deps/sources/boxed-cpp-1.4.3/_downloads
-- [clang-tidy] Disabled.
-- Adding compiler flag: -fdiagnostics-color=always.
-- Enabling pedantic compiler options: no
-- [boxed-cpp] Compile unit tests: OFF
-- base dir: /home/nsonack/src/contour/build/_deps/sources/reflection-cpp-02484cd9ec16d7efc252ab8fd1f85d7264192418/3rdparty
-- dnld dir: /home/nsonack/src/contour/build/_deps/sources/boxed-cpp-1.4.3/_downloads
-- [clang-tidy] Disabled.
-- Adding compiler flag: -fdiagnostics-color=always.
-- Enabling pedantic compiler options: no
-- [reflection-cpp] Compile unit tests: OFF
-- Adding compiler flag: -fdiagnostics-color=always.
-- Enabling pedantic compiler options: no
-- [crispy-core] Skipping compile definition: HAVE_BACKTRACE
-- [crispy-core] Skipping compile definition: HAVE_BACKTRACE_SYMBOLS
-- [crispy-core] Adding compile definition: HAVE_CXXABI_H
-- [crispy-core] Adding compile definition: HAVE_DLADDR
-- [crispy-core] Adding compile definition: HAVE_DLFCN_H
-- [crispy-core] Adding compile definition: HAVE_DLSYM
-- [crispy-core] Adding compile definition: HAVE_EXECINFO_H
-- [crispy-core] Adding compile definition: HAVE_SYS_SELECT_H
-- [crispy-core] Adding compile definition: HAVE_UNWIND_H
-- [crispy] Compile unit tests: OFF
-- [text_shaper] Librarires: unicode::unicode;boxed-cpp::boxed-cpp;range-v3::range-v3;Microsoft.GSL::GSL;Freetype::Freetype;PkgConfig::harfbuzz;Fontconfig::Fontconfig
-- [vtpty] Builtin-SSH support enabled
-- [vtbackend] Compile unit tests: OFF
-- [vtbackend] Enable VT sequence tracing: ON
-- [vtbackend] Enable passive render buffer update: OFF
-- [vtbackend] Build bench-headless: OFF
-- [vtbackend] Build documentation tool: OFF
-- [vtrasterizer] Compile unit tests:
-- Qt components: Core;Gui;Qml;Quick;QuickControls2;Network;Multimedia;Widgets;OpenGL;OpenGLWidgets;Core5Compat
-- Executable tic found (/usr/bin/tic).
-- ==============================================================================
-- Contour ThirdParties
-- ------------------------------------------------------------------------------
-- Catch2
-- GSL system package
-- freetype system package
-- harfbuzz system package
-- range-v3 system package
-- yaml-cpp system package
-- termbench-pro (bench-headless disabled)
-- reflection-cpp embedded
-- libunicode embedded
-- boxed-cpp embedded
-- ------------------------------------------------------------------------------
-- ==============================================================================
-- Contour (0.5.2-master-46f74e9d)
-- ------------------------------------------------------------------------------
-- System: amd64 (FreeBSD)
-- Build type: RelWithDebInfo
-- C++ standard: C++20 (Clang)
-- Using ccache: /usr/local/bin/ccache
-- Build with sanitizer: OFF
-- Build unit tests: OFF
-- Enable with code coverage: OFF
-- Build contour frontend GUI: ON
-- Build contour using Qt: 6 (6.7.3)
-- Build contour using mimalloc: OFF
-- Clang Tidy: OFF
-- |> Enable performance metrics: OFF
-- ------------------------------------------------------------------------------
-- Configuring done (0.5s)
-- Generating done (0.1s)
-- Build files have been written to: /home/nsonack/src/contour/build
[91/91] Linking CXX executable src/contour/contour
triton $
triton $
triton $
triton $ build/src/contour/contour
Segmentation fault (core dumped)
triton $
triton $
triton $ lldb -- build/src/contour/contour
(lldb) target create "build/src/contour/contour"
Current executable set to '/home/nsonack/src/contour/build/src/contour/contour' (x86_64).
(lldb) r
Process 41373 launched: '/home/nsonack/src/contour/build/src/contour/contour' (x86_64)
Process 41373 stopped
* thread #1, name = 'contour', stop reason = signal SIGSEGV: address not mapped to object (fault address: 0x0)
frame #0: 0x0000000895555bc7 libgstreamermediaplugin.so`___lldb_unnamed_symbol1651 + 7
libgstreamermediaplugin.so`___lldb_unnamed_symbol1651:
-> 0x895555bc7 <+7>: movq (%rax), %rax
0x895555bca <+10>: movq (%rax), %rdi
0x895555bcd <+13>: callq 0x895595e10 ; symbol stub for: g_type_name
0x895555bd2 <+18>: movq %rax, %rdx
(lldb) bt
* thread #1, name = 'contour', stop reason = signal SIGSEGV: address not mapped to object (fault address: 0x0)
* frame #0: 0x0000000895555bc7 libgstreamermediaplugin.so`___lldb_unnamed_symbol1651 + 7
frame #1: 0x000000089557eb01 libgstreamermediaplugin.so`___lldb_unnamed_symbol2283 + 401
frame #2: 0x0000000823c7b6e9 libQt6Multimedia.so.6`QAudioOutput::QAudioOutput(QAudioDevice const&, QObject*) + 185
frame #3: 0x0000000823c7b5fe libQt6Multimedia.so.6`QAudioOutput::QAudioOutput(QObject*) + 62
frame #4: 0x000000087aa41120 libQt6MultimediaQuick.so.6`___lldb_unnamed_symbol1143 + 16
frame #5: 0x00000008290e865f libQt6Qml.so.6`QQmlType::create(void**, unsigned long) const + 79
frame #6: 0x00000008290e8753 libQt6Qml.so.6`QQmlType::createWithQQmlData() const + 51
frame #7: 0x0000000829097042 libQt6Qml.so.6`QQmlObjectCreator::createInstance(int, QObject*, bool) + 1474
frame #8: 0x000000082909b44e libQt6Qml.so.6`QQmlObjectCreator::setPropertyBinding(QQmlPropertyData const*, QV4::CompiledData::Binding const*) + 2270
frame #9: 0x000000082909a56e libQt6Qml.so.6`QQmlObjectCreator::setupBindings(QFlags<QQmlObjectCreator::BindingMode>) + 1278
frame #10: 0x000000082909def2 libQt6Qml.so.6`QQmlObjectCreator::populateInstance(int, QObject*, QObject*, QQmlPropertyData const*, QV4::CompiledData::Binding const*) + 4530
frame #11: 0x0000000829097b84 libQt6Qml.so.6`QQmlObjectCreator::createInstance(int, QObject*, bool) + 4356
frame #12: 0x00000008290965f1 libQt6Qml.so.6`QQmlObjectCreator::create(int, QObject*, QQmlInstantiationInterrupt*, int) + 529
frame #13: 0x00000008290971ba libQt6Qml.so.6`QQmlObjectCreator::createInstance(int, QObject*, bool) + 1850
frame #14: 0x000000082909b44e libQt6Qml.so.6`QQmlObjectCreator::setPropertyBinding(QQmlPropertyData const*, QV4::CompiledData::Binding const*) + 2270
frame #15: 0x000000082909a56e libQt6Qml.so.6`QQmlObjectCreator::setupBindings(QFlags<QQmlObjectCreator::BindingMode>) + 1278
frame #16: 0x000000082909def2 libQt6Qml.so.6`QQmlObjectCreator::populateInstance(int, QObject*, QObject*, QQmlPropertyData const*, QV4::CompiledData::Binding const*) + 4530
frame #17: 0x0000000829097b84 libQt6Qml.so.6`QQmlObjectCreator::createInstance(int, QObject*, bool) + 4356
frame #18: 0x00000008290965f1 libQt6Qml.so.6`QQmlObjectCreator::create(int, QObject*, QQmlInstantiationInterrupt*, int) + 529
frame #19: 0x00000008290294db libQt6Qml.so.6`QQmlComponentPrivate::beginCreate(QQmlRefPointer<QQmlContextData>) + 1851
frame #20: 0x0000000829028d5c libQt6Qml.so.6`QQmlComponent::beginCreate(QQmlContext*) + 60
frame #21: 0x000000082902829e libQt6Qml.so.6`QQmlComponentPrivate::createWithProperties(QObject*, QMap<QString, QVariant> const&, QQmlContext*, QQmlComponentPrivate::CreateBehavior) + 94
frame #22: 0x0000000829028224 libQt6Qml.so.6`QQmlComponent::create(QQmlContext*) + 52
frame #23: 0x000000082900c0ae libQt6Qml.so.6`QQmlApplicationEnginePrivate::finishLoad(QQmlComponent*) + 126
frame #24: 0x000000082900bafb libQt6Qml.so.6`QQmlApplicationEnginePrivate::startLoad(QUrl const&, QByteArray const&, bool) + 699
frame #25: 0x000000082900c5e5 libQt6Qml.so.6`QQmlApplicationEngine::load(QUrl const&) + 53
frame #26: 0x00000000005a7674 contour`contour::ContourGuiApp::terminalGuiAction() [inlined] contour::ContourGuiApp::newWindow(this=0x00000008210e7590) at ContourGuiApp.cpp:563:17
frame #27: 0x00000000005a7646 contour`contour::ContourGuiApp::terminalGuiAction(this=0x00000008210e7590) at ContourGuiApp.cpp:464:5
frame #28: 0x00000000005fffb9 contour`crispy::app::run(int, char const**) [inlined] std::__1::__function::__value_func<int ()>::operator()[abi:se180100](this=0x00000779e1891740) const at function.h:428:12
frame #29: 0x00000000005fffaa contour`crispy::app::run(int, char const**) [inlined] std::__1::function<int ()>::operator()(this= Function = contour::ContourGuiApp::terminalGuiAction() ) const at function.h:981:10
frame #30: 0x00000000005fffaa contour`crispy::app::run(this=0x00000008210e7590, argc=<unavailable>, argv=<unavailable>) at App.cpp:228:24
frame #31: 0x000000000051a23f contour`main(argc=1, argv=0x00000008210e7be8) at main.cpp:136:16
frame #32: 0x0000000833aa4c3a libc.so.7`__libc_start1(argc=1, argv=0x00000008210e7be8, env=0x00000008210e7bf8, cleanup=<unavailable>, mainX=(contour`main at main.cpp:123)) at libc_start1.c:157:7
frame #33: 0x0000000000500d70 contour`_start at crt1_s.S:83
(lldb) q
Quitting LLDB will kill one or more processes. Do you really want to proceed: [Y/n]
triton $
triton $
triton $
triton $ git log -n1 --pretty=reference @ | cat
46f74e9d (Merge pull request #1658 from contour-terminal/improvement/search, 2024-12-17)
triton $
Unfortunately I cannot bisect this because most commits are not compilable due to the change of libfmt
=> std::format
.