Bug 1786775 - segfault in yaml when starting the calamares installer
Summary: segfault in yaml when starting the calamares installer
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: calamares
Version: 31
Hardware: Unspecified
OS: Unspecified
unspecified
medium
Target Milestone: ---
Assignee: Guido Grazioli
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-12-27 22:18 UTC by Joel Stienlet
Modified: 2020-04-21 13:18 UTC (History)
8 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2020-04-21 13:18:18 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Joel Stienlet 2019-12-27 22:18:34 UTC
Description of problem:
The calamares installer crashes right from start on Fedora-Workstation-Live-x86_64-31-1.9.iso

Version-Release number of selected component (if applicable): fedora31 workstation live dvd x64

How reproducible: always

Steps to Reproduce:
1. dnf -y install calamares
2. click on gnome calamares installer icon
3. journalctl shows a segfault


Additional info: gdb output follows.
It looks like the actual problem is in the yaml library,
called L216 of:
https://github.com/calamares/calamares/blob/master/src/libcalamares/Settings.cpp 
by config[ "modules-search" ] apparently (not sure!).
I would expect the yaml library to raise an exception, not to crash.
Note that "/usr/share/calamares/settings.conf" should be the file loaded and passed to YAML::Load().
So it looks to me that the actual problem is in the YAML library, and I reported this bug as such.

results of:
gdb --args calamares -D 8
 
 (gdb) run
Starting program: /usr/bin/calamares -D 8
Missing separate debuginfos, use: dnf debuginfo-install glibc-2.30-5.fc31.x86_64
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7fffe56cd700 (LWP 3491)]
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
21:41:24 [6]: Using log file: "/root/.cache/calamares/session.log" 
21:41:24 [6]: Calamares version: 3.2.11 
21:41:24 [6]:         languages: "ar, ast, bg, ca, cs_CZ, da, de, el, en, en_GB, es, es_MX, es_PR, et, eu, fi_FI, fr, gl, he, hi, hr, hu, id, is, it_IT, ja, ko, lt, mr, nb, nl, pl, pt_BR, pt_PT, ro, ru, sk, sl, sq, sr, sr@latin, sv, th, tr_TR, uk, zh_CN, zh_TW" 
21:41:24 [6]: Using Calamares QML directory "/usr/share/calamares/qml" 
21:41:24 [6]: Using Calamares settings file at "/usr/share/calamares/settings.conf" 

Thread 1 "calamares" received signal SIGSEGV, Segmentation fault.
0x00007ffff7ebd97b in std::__shared_ptr_access<YAML::detail::node_data, (__gnu_cxx::_Lock_policy)2, false, false>::_M_get (this=0x3)
    at /usr/include/c++/9/bits/shared_ptr_base.h:1020
1020	/usr/include/c++/9/bits/shared_ptr_base.h: No such file or directory.
Missing separate debuginfos, use: dnf debuginfo-install boost-python3-1.69.0-9.fc31.x86_64 bzip2-libs-1.0.8-1.fc31.x86_64 dbus-libs-1.12.16-3.fc31.x86_64 expat-2.2.8-1.fc31.x86_64 fontconfig-2.13.92-3.fc31.x86_64 freetype-2.10.0-3.fc31.x86_64 glib2-2.62.1-1.fc31.x86_64 graphite2-1.3.13-1.fc31.x86_64 harfbuzz-2.6.1-2.fc31.x86_64 kf5-kcoreaddons-5.64.0-1.fc31.x86_64 kf5-kcrash-5.64.0-1.fc31.x86_64 kf5-kwindowsystem-5.64.0-1.fc31.x86_64 libICE-1.0.10-2.fc31.x86_64 libSM-1.2.3-4.fc31.x86_64 libX11-1.6.8-3.fc31.x86_64 libX11-xcb-1.6.8-3.fc31.x86_64 libXau-1.0.9-2.fc31.x86_64 libXcursor-1.1.15-6.fc31.x86_64 libXext-1.3.4-2.fc31.x86_64 libXfixes-5.0.3-10.fc31.x86_64 libXrender-0.9.10-10.fc31.x86_64 libgcc-9.2.1-1.fc31.x86_64 libgcrypt-1.8.5-1.fc31.x86_64 libglvnd-1.1.1-5.fc31.x86_64 libglvnd-glx-1.1.1-5.fc31.x86_64 libgpg-error-1.36-2.fc31.x86_64 libicu-63.2-3.fc31.x86_64 libpng-1.6.37-2.fc31.x86_64 libstdc++-9.2.1-1.fc31.x86_64 libuuid-2.34-3.fc31.x86_64 libxcb-1.13.1-3.fc31.x86_64 libxkbcommon-0.8.4-2.fc31.x86_64 libxkbcommon-x11-0.8.4-2.fc31.x86_64 lz4-libs-1.9.1-1.fc31.x86_64 openssl-libs-1.1.1d-2.fc31.x86_64 pcre-8.43-2.fc31.1.x86_64 pcre2-utf16-10.33-14.fc31.x86_64 python3-libs-3.7.4-5.fc31.x86_64 qt5-qtbase-5.12.5-1.fc31.x86_64 qt5-qtbase-gui-5.12.5-1.fc31.x86_64 qt5-qtdeclarative-5.12.5-1.fc31.x86_64 qt5-qtsvg-5.12.5-1.fc31.x86_64 qt5-qtx11extras-5.12.5-1.fc31.x86_64 sssd-client-2.2.2-1.fc31.x86_64 systemd-libs-243-4.gitef67743.fc31.x86_64 xcb-util-image-0.4.0-13.fc31.x86_64 xcb-util-keysyms-0.4.0-11.fc31.x86_64 xz-libs-5.2.4-6.fc31.x86_64 zlib-1.2.11-19.fc31.x86_64
(gdb) bt
#0  0x00007ffff7ebd97b in std::__shared_ptr_access<YAML::detail::node_data, (__gnu_cxx::_Lock_policy)2, false, false>::_M_get (this=0x3)
    at /usr/include/c++/9/bits/shared_ptr_base.h:1020
#1  std::__shared_ptr_access<YAML::detail::node_data, (__gnu_cxx::_Lock_policy)2, false, false>::operator-> (this=0x3)
    at /usr/include/c++/9/bits/shared_ptr_base.h:1015
#2  YAML::detail::node_ref::get<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > (pMemory=..., key="modules-search", this=0x3)
    at /usr/include/yaml-cpp/node/detail/node_ref.h:68
#3  YAML::detail::node::get<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > (pMemory=..., key="modules-search", 
    this=0x7fffffffd600) at /usr/include/yaml-cpp/node/detail/node.h:129
#4  YAML::Node::operator[]<char [15]> (key=<synthetic pointer>..., this=0x7fffffffd660) at /usr/include/yaml-cpp/node/impl.h:390
#5  Calamares::Settings::Settings (this=0x5555557841a0, settingsFilePath=..., debugMode=<optimized out>, parent=<optimized out>)
    at /usr/src/debug/calamares-3.2.11-2.fc31.x86_64/src/libcalamares/Settings.cpp:201
#6  0x000055555556a99e in CalamaresApplication::initSettings (this=0x7fffffffd950)
    at /usr/src/debug/calamares-3.2.11-2.fc31.x86_64/src/calamares/CalamaresApplication.cpp:281
#7  0x000055555556c139 in CalamaresApplication::init (this=0x7fffffffd950)
    at /usr/src/debug/calamares-3.2.11-2.fc31.x86_64/src/calamares/CalamaresApplication.cpp:77
#8  0x0000555555566726 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/calamares-3.2.11-2.fc31.x86_64/src/calamares/main.cpp:120
(gdb)

Comment 1 Joel Stienlet 2019-12-28 16:30:57 UTC
Hello,
I recompiled calamares from source with the source RPM. That worked: calamares started without segfault.
It doesn't explain what's wrong with the packaged version though (perhaps wrong yaml headers??).
Anyway I think the bug should be assigned to "calamares" instead of "yaml-cpp" now.

Comment 2 Kevin Kofler 2019-12-28 17:25:26 UTC
Looks like some silent binary incompatibility (ABI breakage) in yaml-cpp. More precisely, it looks like the binary layout of some object class in yaml-cpp has changed, while the soname remained the same. So this is only caught at runtime.

Comment 3 Richard Shaw 2020-04-21 13:18:18 UTC
Calamares has been rebuilt in 2020 so I'm going to assume this is fixed. Please reopen if that's not the case.


Note You need to log in before you can comment on or make changes to this bug.