rakshasa / rtorrent

rTorrent BitTorrent client
https://github.com/rakshasa/rtorrent/wiki
GNU General Public License v2.0
4.05k stars 412 forks source link

rtorrent crashing on musl+llvm system #1221

Open alfredfo opened 1 year ago

alfredfo commented 1 year ago

Hi, rtorrent is crashing on my ThinkPad server running Gentoo with musl libc and clang-15 as system compiler

Starting program: /usr/bin/rtorrent 

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7de29c1 in std::__1::__deque_base<torrent::HashChunk*, rak::cacheline_allocator<torrent::HashChunk*> >::__deque_base (this=0x7ffff7630810) at /usr/include/c++/v1/deque:1188
1188       : __start_(0), __size_(0, __default_init_tag()) {}
(gdb) bt
#0  0x00007ffff7de29c1 in std::__1::__deque_base<torrent::HashChunk*, rak::cacheline_allocator<torrent::HashChunk*> >::__deque_base (
    this=0x7ffff7630810) at /usr/include/c++/v1/deque:1188
#1  std::__1::deque<torrent::HashChunk*, rak::cacheline_allocator<torrent::HashChunk*> >::deque[abi:v15007]() (this=0x7ffff7630810)
    at /usr/include/c++/v1/deque:1313
#2  torrent::HashCheckQueue::HashCheckQueue (this=0x7ffff7630810)
    at hash_check_queue.cc:47
#3  0x00007ffff7d8d070 in torrent::thread_disk::thread_disk (
    this=0x7ffff762ff90) at ./thread_disk.h:45
#4  torrent::Manager::Manager (this=0x7ffff762f690) at manager.cc:67
#5  0x00007ffff7da27af in torrent::initialize () at torrent.cc:103
#6  0x00005555555ec525 in main (argc=1, argv=0x7fffffffe308)
    at main.cc:225
alfredfo commented 1 year ago

build info for rtorrent and libtorrent:

Portage 3.0.44 (python 3.10.10-final-0, default/linux/amd64/17.0/musl/clang, [unavailable], musl-1.2.3-r7, 6.2.10-gentoo-dist x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-6.2.10-gentoo-dist-x86_64-Intel-R-_Core-TM-_i5-7200U_CPU_@_2.50GHz-with-libc
KiB Mem:    16126112 total,  15303404 free
KiB Swap:          0 total,         0 free
Timestamp of repository gentoo: Wed, 12 Apr 2023 00:45:01 +0000
Head commit of repository gentoo: 07d9a750e43738e7e978ee02f780ff7f62530ca1
sh bash 5.1_p16-r2
ld LLD 15.0.7 (compatible with GNU linkers)
app-misc/pax-utils:       1.3.5::gentoo
app-shells/bash:          5.1_p16-r2::gentoo
dev-lang/perl:            5.36.0-r2::gentoo
dev-lang/python:          3.10.10_p3::gentoo, 3.11.2_p2::gentoo
dev-util/cmake:           3.25.3::gentoo
dev-util/meson:           1.0.1::gentoo
sys-apps/baselayout:      2.13-r1::gentoo
sys-apps/openrc:          0.46::gentoo
sys-apps/sandbox:         2.29::gentoo
sys-devel/autoconf:       2.71-r5::gentoo
sys-devel/automake:       1.16.5::gentoo
sys-devel/clang:          15.0.7-r1::gentoo
sys-devel/libtool:        2.4.7-r1::gentoo
sys-devel/lld:            15.0.7::gentoo
sys-devel/llvm:           15.0.7::gentoo
sys-devel/make:           4.3::gentoo
sys-kernel/linux-headers: 6.1::gentoo (virtual/os-headers)
sys-libs/musl:            1.2.3-r7::gentoo
Repositories:

gentoo
    location: /var/db/repos/gentoo
    sync-type: rsync
    sync-uri: rsync://rsync.gentoo.org/gentoo-portage
    priority: -1000
    volatile: True
    sync-rsync-verify-jobs: 1
    sync-rsync-verify-metamanifest: yes
    sync-rsync-verify-max-age: 24
    sync-rsync-extra-opts: 

ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="*"
ADDR2LINE="llvm-addr2line"
AR="llvm-ar"
AS="clang -c"
CBUILD="x86_64-gentoo-linux-musl"
CC="clang"
CFLAGS="-march=native -O2 -pipe"
CHOST="x86_64-gentoo-linux-musl"
CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CPP="clang-cpp"
CXX="clang++"
CXXFLAGS="-march=native -O2 -pipe"
DISTDIR="/var/cache/distfiles"
EMERGE_DEFAULT_OPTS=" --jobs 4"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GDK_PIXBUF_MODULE_FILE 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 XDG_STATE_HOME"
FCFLAGS="-march=native -O2 -pipe"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance buildpkg-live candy 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="-march=native -O2 -pipe"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
INSTALL_MASK="charset.alias /usr/share/locale/locale.alias"
LANG="C.UTF8"
LD="ld.lld"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -fuse-ld=lld -rtlib=compiler-rt -unwindlib=libunwind -Wl,--as-needed "
LEX="flex"
MAKEOPTS="-j6"
NM="llvm-nm"
OBJCOPY="llvm-objcopy"
OBJDUMP="llvm-objdump"
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"
RANLIB="llvm-ranlib"
READELF="llvm-readelf"
SHELL="/bin/bash"
STRINGS="llvm-strings"
STRIP="llvm-strip"
USE="acl amd64 bzip2 clang cli crypt dri fortran iconv ipv6 libglvnd libtirpc llvm-libunwind ncurses nftables nls nptl openmp pam pcre readline seccomp split-usr ssl test-rust unicode xattr zlib" ABI_X86="64" ADA_TARGET="gnat_2021" 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" INPUT_DEVICES="libinput" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" 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_10" PYTHON_TARGETS="python3_10" RUBY_TARGETS="ruby30" USERLAND="GNU" VIDEO_CARDS="amdgpu fbdev intel nouveau radeon radeonsi vesa dummy v4l" 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:  ARFLAGS, ASFLAGS, CCLD, CONFIG_SHELL, CPPFLAGS, CTARGET, CXXFILT, ELFEDIT, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, LC_ALL, LFLAGS, LIBTOOL, LINGUAS, MAKE, MAKEFLAGS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, RUSTFLAGS, SIZE, YACC, YFLAGS

=================================================================
                        Package Settings
=================================================================

net-p2p/rtorrent-0.9.8-r1::gentoo was built with the following:
USE="xmlrpc -debug (-selinux) -test"
CFLAGS="-march=native -O2 -pipe -ggdb3"
CXXFLAGS="-march=native -O2 -pipe -ggdb3"
FEATURES="compressdebug binpkg-logs sfperms xattr config-protect-if-modified fixlafiles userfetch assume-digests merge-sync unmerge-orphans network-sandbox strict qa-unresolved-soname-deps usersync sandbox pid-sandbox usersandbox distlocks userpriv unknown-features-warn parallel-fetch ebuild-locks splitdebug binpkg-docompress binpkg-multi-instance binpkg-dostrip candy news ipc-sandbox buildpkg-live preserve-libs protect-owned installsources unmerge-logs"
Portage 3.0.44 (python 3.10.10-final-0, default/linux/amd64/17.0/musl/clang, [unavailable], musl-1.2.3-r7, 6.2.10-gentoo-dist x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-6.2.10-gentoo-dist-x86_64-Intel-R-_Core-TM-_i5-7200U_CPU_@_2.50GHz-with-libc
KiB Mem:    16126112 total,  15307764 free
KiB Swap:          0 total,         0 free
Timestamp of repository gentoo: Wed, 12 Apr 2023 00:45:01 +0000
Head commit of repository gentoo: 07d9a750e43738e7e978ee02f780ff7f62530ca1
sh bash 5.1_p16-r2
app-misc/pax-utils:       1.3.5::gentoo
app-shells/bash:          5.1_p16-r2::gentoo
dev-lang/perl:            5.36.0-r2::gentoo
dev-lang/python:          3.10.10_p3::gentoo, 3.11.2_p2::gentoo
dev-util/cmake:           3.25.3::gentoo
dev-util/meson:           1.0.1::gentoo
sys-apps/baselayout:      2.13-r1::gentoo
sys-apps/openrc:          0.46::gentoo
sys-apps/sandbox:         2.29::gentoo
sys-devel/autoconf:       2.71-r5::gentoo
sys-devel/automake:       1.16.5::gentoo
sys-devel/clang:          15.0.7-r1::gentoo
sys-devel/libtool:        2.4.7-r1::gentoo
sys-devel/lld:            15.0.7::gentoo
sys-devel/llvm:           15.0.7::gentoo
sys-devel/make:           4.3::gentoo
sys-kernel/linux-headers: 6.1::gentoo (virtual/os-headers)
sys-libs/musl:            1.2.3-r7::gentoo
Repositories:

gentoo
    location: /var/db/repos/gentoo
    sync-type: rsync
    sync-uri: rsync://rsync.gentoo.org/gentoo-portage
    priority: -1000
    volatile: True
    sync-rsync-extra-opts: 
    sync-rsync-verify-max-age: 24
    sync-rsync-verify-metamanifest: yes
    sync-rsync-verify-jobs: 1

ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="*"
ADDR2LINE="llvm-addr2line"
AR="llvm-ar"
AS="clang -c"
CBUILD="x86_64-gentoo-linux-musl"
CC="clang"
CFLAGS="-march=native -O2 -pipe"
CHOST="x86_64-gentoo-linux-musl"
CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CPP="clang-cpp"
CXX="clang++"
CXXFLAGS="-march=native -O2 -pipe"
DISTDIR="/var/cache/distfiles"
EMERGE_DEFAULT_OPTS=" --jobs 4"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GDK_PIXBUF_MODULE_FILE 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 XDG_STATE_HOME"
FCFLAGS="-march=native -O2 -pipe"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance buildpkg-live candy 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="-march=native -O2 -pipe"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
INSTALL_MASK="charset.alias /usr/share/locale/locale.alias"
LANG="C.UTF8"
LD="ld.lld"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -fuse-ld=lld -rtlib=compiler-rt -unwindlib=libunwind -Wl,--as-needed "
LEX="flex"
MAKEOPTS="-j6"
NM="llvm-nm"
OBJCOPY="llvm-objcopy"
OBJDUMP="llvm-objdump"
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"
RANLIB="llvm-ranlib"
READELF="llvm-readelf"
SHELL="/bin/bash"
STRINGS="llvm-strings"
STRIP="llvm-strip"
USE="acl amd64 bzip2 clang cli crypt dri fortran iconv ipv6 libglvnd libtirpc llvm-libunwind ncurses nftables nls nptl openmp pam pcre readline seccomp split-usr ssl test-rust unicode xattr zlib" ABI_X86="64" ADA_TARGET="gnat_2021" 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" INPUT_DEVICES="libinput" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" 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_10" PYTHON_TARGETS="python3_10" RUBY_TARGETS="ruby30" USERLAND="GNU" VIDEO_CARDS="amdgpu fbdev intel nouveau radeon radeonsi vesa dummy v4l" 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:  ARFLAGS, ASFLAGS, CCLD, CONFIG_SHELL, CPPFLAGS, CTARGET, CXXFILT, ELFEDIT, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, LC_ALL, LFLAGS, LIBTOOL, LINGUAS, MAKE, MAKEFLAGS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, RUSTFLAGS, SIZE, YACC, YFLAGS

=================================================================
                        Package Settings
=================================================================

net-libs/libtorrent-0.13.8-r3::gentoo was built with the following:
USE="ssl -debug"
CFLAGS="-march=native -O2 -pipe -ggdb3"
CXXFLAGS="-march=native -O2 -pipe -ggdb3"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance buildpkg-live candy compressdebug config-protect-if-modified distlocks ebuild-locks fixlafiles installsources ipc-sandbox merge-sync network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms splitdebug strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
stickz commented 1 year ago

A possible work around would be to compile libtorrent and rtorrent with GCC. It looks like this crash is related to the clang implementation of the c++ standard library. You can configure a GCC Fallback Environment on Gentoo Linux. https://wiki.gentoo.org/wiki/Clang#GCC_fallback_environment