Closed graywolf closed 1 year ago
related: https://github.com/arvidn/libtorrent/issues/6468 https://github.com/arvidn/libtorrent/issues/6567 nm I see that you are OP of the other one.
@graywolf where can I find details on exactly what make bad
does?
make bad
basically runs following script inside a podman container (using libtorrent-rasterbar-1.2.14.tar.gz source code release). The container is used to get reliable reproduction. Makefile.docker
is provided for people who prefer docker instead of podman. $1
being 14
(passed as argument by the make bad
).:
TL;DR is: It builds 1.2.14 from source code using c++14 in alpine linux (so musl-c) container, builds simple test program ( https://git.sr.ht/~graywolf/libtorrent-rasterbar-repro-6567/tree/master/item/repro.cpp ) and tries to run it.
#!/bin/sh
set -eu
set -x
src=/$(cat /tar)
src=${src%.tar.gz}
mkdir ~/build
cd ~/build
$src/configure \
--build=x86_64-alpine-linux-musl \
--prefix=/tmp/libtorrent-rasterbar \
--with-cxx-standard=$1
make
make install
mkdir ~/repro
cd ~/repro
g++ \
-std=c++$1 \
-o repro \
-I/tmp/libtorrent-rasterbar/include \
-L/tmp/libtorrent-rasterbar/lib \
-Wl,-rpath=/tmp/libtorrent-rasterbar/lib \
/x/repro.cpp -ltorrent-rasterbar
./repro
ls -al
(It's this file: https://git.sr.ht/~graywolf/libtorrent-rasterbar-repro-6567/tree/master/item/run )
make good
(which passes 17
as $1
) works fine.
i tried a bunch of stuff, using the above repro.cpp:
all of this was on alpine edge, openssl 1.1.1q, gcc 11.2
flags -Og -g3
for all
cmake was invoked with
cmake -B build -G Ninja -DCMAKE_CXX_STANDARD=14/17
repro was built with
g++ repro.cpp -std=c++14/17 -o repro # .. (stuff to link the built libtorrent)
v2.0.7, cmake:
v1.2.16, cmake:
so, everything is fine. then i tried using the old configure (only present in 1.2.x):
./configure --with-cxx-standard=14/17
very interesting :) the backtraces are identical from #6567
Please provide the following information
libtorrent version (or branch): 1.2.14
platform/architecture: linux/amd64 + musl-c (1.2.2) (alpine linux 3.15)
compiler and compiler version: gcc 10.3.1
please describe what symptom you see, what you would expect to see instead and how to reproduce it.
When libtorrent-rasterbar is built with cxx14, it segfaults on adding new torrents (well, for me it was on deluge startup, but repro is easier with adding). This started to happen once I've updated to alpine 3.15, so new musl-c version could have some role in this (speculation on my part). In cxx17 it works fine. I've managed to put together reasonably short reproduction [0].
0: https://git.sr.ht/~graywolf/libtorrent-rasterbar-repro-6567