rsvg-convert segfaults on musl when installed by root after getting built by unprivileged user
Hi!
EDIT: The segfault always occurs when a user build the project and root installs it (cargo build -> doas cargo install).
I am trying to use rsvg-convert on Gentoo musl. The tool works when running cargo build or cargo build --release and executing it in the target folder. However, when installing with cargo install --root=/usr --path=. (as root), or --root=/usr/local makes rsvg-convert segfault instantly. Same thing happens with make/make install.
Crashes on 411 let stream = unsafe { UnixInputStream::with_fd(0) };
https://gitlab.gnome.org/GNOME/librsvg/-/blob/main/src/bin/rsvg-convert.rs#L411
(gdb) r
Starting program: /usr/bin/rsvg-convert
Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) bt
#0 0x0000000000000000 in ?? ()
#1 0x00007ffff7aebda8 in rsvg_convert::Converter::convert ()
#2 0x00007ffff7af6130 in rsvg_convert::main ()
#3 0x00007ffff7b07e23 in std::sys_common::backtrace::__rust_begin_short_backtrace ()
#4 0x00007ffff7af7469 in _ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h5e23cdd6be770dcaE.llvm.2627700066612002561 ()
#5 0x00007ffff7d760f6 in core::ops::function::impls::{impl#2}::call_once<(), (dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)> ()
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/ops/function.rs:259
#6 std::panicking::try::do_call<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32> () at library/std/src/panicking.rs:492
#7 std::panicking::try<i32, &(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)> () at library/std/src/panicking.rs:456
#8 std::panic::catch_unwind<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32> () at library/std/src/panic.rs:137
#9 std::rt::lang_start_internal::{closure#2} () at library/std/src/rt.rs:128
#10 std::panicking::try::do_call<std::rt::lang_start_internal::{closure_env#2}, isize> ()
at library/std/src/panicking.rs:492
#11 std::panicking::try<isize, std::rt::lang_start_internal::{closure_env#2}> () at library/std/src/panicking.rs:456
#12 std::panic::catch_unwind<std::rt::lang_start_internal::{closure_env#2}, isize> () at library/std/src/panic.rs:137
#13 std::rt::lang_start_internal () at library/std/src/rt.rs:128
#14 0x00007ffff7af61f2 in main ()
(gdb)
emerge --info (system information).
user@localhost ~/repos/librsvg $ emerge --info
Portage 3.0.30 (python 3.9.13-final-0, default/linux/amd64/17.0/musl, gcc-12.1.0, musl-1.2.3, 5.17.7-gentoo x86_64)
=================================================================
System uname: Linux-5.17.7-gentoo-x86_64-Intel-R-_Core-TM-_i9-9900K_CPU_@_3.60GHz-with-libc
KiB Mem: 32778324 total, 15187084 free
KiB Swap: 0 total, 0 free
Head commit of repository catcream: e769b389176a371825fee106b9d0846df8e2d90a
Timestamp of repository musl: Tue, 14 Jun 2022 15:33:14 +0000
Head commit of repository musl: 8c90989fc2c35088c18a66885843bbe77b78a57f
sh bash 5.1_p16
ld GNU ld (Gentoo 2.37_p1 p2) 2.37
app-misc/pax-utils: 1.3.4::gentoo
app-shells/bash: 5.1_p16::gentoo
dev-lang/perl: 5.36.0::gentoo
dev-lang/python: 3.9.13::gentoo, 3.10.5::gentoo, 3.11.0_beta3::gentoo
dev-lang/rust-bin: 1.61.0::gentoo
dev-util/cmake: 3.23.2::gentoo
dev-util/meson: 0.62.2::gentoo
sys-apps/baselayout: 2.8::gentoo
sys-apps/openrc: 0.45::gentoo
sys-apps/sandbox: 2.29::gentoo
sys-devel/autoconf: 2.71-r1::gentoo
sys-devel/automake: 1.16.5::gentoo
sys-devel/binutils: 2.37_p1-r2::gentoo, 2.38-r2::gentoo
sys-devel/binutils-config: 5.4.1::gentoo
sys-devel/gcc: 11.3.0::gentoo, 12.1.0::gentoo
sys-devel/gcc-config: 2.5-r1::gentoo
sys-devel/libtool: 2.4.7::gentoo
sys-devel/llvm: 13.0.1::gentoo, 14.0.4::gentoo
sys-devel/make: 4.3::gentoo
sys-kernel/linux-headers: 5.18-r1::gentoo (virtual/os-headers)
sys-libs/musl: 1.2.3::gentoo
Repositories:
gentoo
location: /var/db/repos/gentoo
sync-type: rsync
sync-uri: rsync://rsync.gentoo.org/gentoo-portage
priority: -1000
sync-rsync-extra-opts:
sync-rsync-verify-jobs: 1
sync-rsync-verify-max-age: 24
sync-rsync-verify-metamanifest: yes
catcream
location: /var/db/repos/catcream
sync-type: git
sync-uri: https://github.com/alfredfo/catcream_repo.git
masters: gentoo
musl
location: /var/db/repos/musl
sync-type: git
sync-uri: https://github.com/gentoo-mirror/musl.git
masters: gentoo
ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-gentoo-linux-musl"
CFLAGS="-O2 -pipe"
CHOST="x86_64-gentoo-linux-musl"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-O2 -pipe"
DISTDIR="/var/cache/distfiles"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg-live config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
INSTALL_MASK="charset.alias /usr/share/locale/locale.alias"
LANG="C.UTF8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
LINGUAS="en sv"
MAKEOPTS="-j24"
PKGDIR="/var/cache/binpkgs"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
RUSTFLAGS="-C target-cpu=native"
SHELL="/bin/bash"
USE="X acl amd64 bzip2 cli crypt dbus dri duktape elogind ffmpeg fortran iconv ipv6 kde libglvnd libtirpc ncurses nls nptl openmp pam pcre pipewire pulseaudio qt readline seccomp split-usr ssl unicode vaapi wayland xattr zlib" ABI_X86="64" ADA_TARGET="gnat_2020" ALSA_CARDS="ca0132" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2" ELIBC="musl" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" GRUB_PLATFORMS="efi-64" INPUT_DEVICES="libinput" KERNEL="linux" L10N="en-US sv" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LLVM_TARGETS="AMDGPU WebAssembly" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-4 php8-0" POSTGRES_TARGETS="postgres12 postgres13" PYTHON_SINGLE_TARGET="python3_9" PYTHON_TARGETS="python3_9" RUBY_TARGETS="ruby27" USERLAND="GNU" VIDEO_CARDS="amdgpu radeon radeonsi virgl qxl" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq proto steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset: ADDR2LINE, AR, ARFLAGS, AS, ASFLAGS, CC, CCLD, CONFIG_SHELL, CPP, CPPFLAGS, CTARGET, CXX, CXXFILT, ELFEDIT, EMERGE_DEFAULT_OPTS, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, LC_ALL, LD, LEX, LFLAGS, LIBTOOL, MAKE, MAKEFLAGS, NM, OBJCOPY, OBJDUMP, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, RANLIB, READELF, SIZE, STRINGS, STRIP, YACC, YFLAGS
Edited by alfredfo