libtorrent-rasterbar testsuite deadlocks on aarch64 and x86
libtorrent-rasterbar deadlocks in the testsuite on aarch64 and x86, so it got disabled in 54e6d9e4
I was able to reproduce it on aarch64:
For help, type "help".
Type "apropos word" to search for commands related to "word".
Attaching to process 37373
[New LWP 39093]
[New LWP 39128]
__syscall_cp_asm () at src/thread/aarch64/syscall_cp.s:28
28 src/thread/aarch64/syscall_cp.s: No such file or directory.
(gdb) bt
#0 __syscall_cp_asm () at src/thread/aarch64/syscall_cp.s:28
#1 0x0000fffb28880e90 in __syscall_cp_c (nr=98, u=<optimized out>, v=<optimized out>, w=<optimized out>, x=<optimized out>, y=<optimized out>, z=<optimized out>)
at src/thread/pthread_cancel.c:33
#2 0x0000fffb28880178 in __futex4_cp (to=0x0, val=2, op=128, addr=0xfffb27eaf128) at src/thread/__timedwait.c:24
#3 __timedwait_cp (addr=addr@entry=0xfffb27eaf128, val=<optimized out>, clk=clk@entry=0, at=at@entry=0x0, priv=128, priv@entry=1) at src/thread/__timedwait.c:52
#4 0x0000fffb288822b0 in __pthread_timedjoin_np (t=0xfffb27eaf100, res=0x0, at=0x0) at src/thread/pthread_join.c:18
#5 0x0000fffb2817aa98 in std::thread::join() () from /usr/lib/libstdc++.so.6
#6 0x0000fffb283f5fc4 in libtorrent::session::~session() ()
from /home/ncopa/aports/community/libtorrent-rasterbar/src/libtorrent-rasterbar-1.2.14/src/.libs/libtorrent-rasterbar.so.10
#7 0x0000aab3705bf7c4 in std::__uniq_ptr_impl<libtorrent::session, std::default_delete<libtorrent::session> >::reset(libtorrent::session*) ()
#8 0x0000aab3705bc75c in unit_test_http_peers() ()
#9 0x0000aab3705afc20 in main ()
(gdb) info threads
Id Target Id Frame
* 1 LWP 37373 "lt-test_tracker" __syscall_cp_asm () at src/thread/aarch64/syscall_cp.s:28
2 LWP 39093 "lt-test_tracker" __cp_end () at src/thread/aarch64/syscall_cp.s:30
3 LWP 39128 "lt-test_tracker" __syscall_cp_asm () at src/thread/aarch64/syscall_cp.s:28
(gdb) thread 2
[Switching to thread 2 (LWP 39093)]
#0 __cp_end () at src/thread/aarch64/syscall_cp.s:30
30 in src/thread/aarch64/syscall_cp.s
(gdb) bt
#0 __cp_end () at src/thread/aarch64/syscall_cp.s:30
#1 0x0000fffb28880e90 in __syscall_cp_c (nr=22, u=<optimized out>, v=<optimized out>, w=<optimized out>, x=<optimized out>, y=<optimized out>, z=<optimized out>)
at src/thread/pthread_cancel.c:33
#2 0x0000fffb28849e44 in epoll_pwait (fd=<optimized out>, ev=<optimized out>, cnt=<optimized out>, to=<optimized out>, sigs=<optimized out>) at src/linux/epoll.c:27
#3 0x0000fffb283398fc in boost::asio::detail::epoll_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) ()
from /home/ncopa/aports/community/libtorrent-rasterbar/src/libtorrent-rasterbar-1.2.14/src/.libs/libtorrent-rasterbar.so.10
#4 0x0000fffb2833a378 in boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) () from /home/ncopa/aports/community/libtorrent-rasterbar/src/libtorrent-rasterbar-1.2.14/src/.libs/libtorrent-rasterbar.so.10
#5 0x0000fffb283f4cb0 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_context*)::{lambda()#1}> > >::_M_run() ()
from /home/ncopa/aports/community/libtorrent-rasterbar/src/libtorrent-rasterbar-1.2.14/src/.libs/libtorrent-rasterbar.so.10
#6 0x0000fffb2817ac14 in ?? () from /usr/lib/libstdc++.so.6
#7 0x0000fffb28881b3c in start (p=0xfffb27eaf0e0) at src/thread/pthread_create.c:203
#8 0x0000fffb2888037c in __clone () at src/thread/aarch64/clone.s:28
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) thread 3
[Switching to thread 3 (LWP 39128)]
#0 __syscall_cp_asm () at src/thread/aarch64/syscall_cp.s:28
28 in src/thread/aarch64/syscall_cp.s
(gdb) bt
#0 __syscall_cp_asm () at src/thread/aarch64/syscall_cp.s:28
#1 0x0000fffb28880e90 in __syscall_cp_c (nr=98, u=<optimized out>, v=<optimized out>, w=<optimized out>, x=<optimized out>, y=<optimized out>, z=<optimized out>)
at src/thread/pthread_cancel.c:33
#2 0x0000fffb28880178 in __futex4_cp (to=0x0, val=2, op=128, addr=0xfffb27e4df34) at src/thread/__timedwait.c:24
#3 __timedwait_cp (addr=addr@entry=0xfffb27e4df34, val=val@entry=2, clk=clk@entry=0, at=at@entry=0x0, priv=128, priv@entry=1) at src/thread/__timedwait.c:52
#4 0x0000fffb28881360 in __pthread_cond_timedwait (c=0xfffb288c3330, m=0xfffb288c32f8, ts=0x0) at src/thread/pthread_cond_timedwait.c:100
#5 0x0000fffb2817562c in std::condition_variable::wait(std::unique_lock<std::mutex>&) () from /usr/lib/libstdc++.so.6
#6 0x0000fffb28353338 in libtorrent::disk_io_thread::wait_for_job(libtorrent::disk_io_thread::job_queue&, libtorrent::disk_io_thread_pool&, std::unique_lock<std::mutex>&)
() from /home/ncopa/aports/community/libtorrent-rasterbar/src/libtorrent-rasterbar-1.2.14/src/.libs/libtorrent-rasterbar.so.10
#7 0x0000fffb283591b0 in libtorrent::disk_io_thread::thread_fun(libtorrent::disk_io_thread::job_queue&, libtorrent::disk_io_thread_pool&) ()
from /home/ncopa/aports/community/libtorrent-rasterbar/src/libtorrent-rasterbar-1.2.14/src/.libs/libtorrent-rasterbar.so.10
#8 0x0000fffb2835ebe0 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (libtorrent::pool_thread_interface::*)(libtorrent::disk_io_thread_pool&, boost::asio::io_context::work), libtorrent::pool_thread_interface*, std::reference_wrapper<libtorrent::disk_io_thread_pool>, boost::asio::io_context::work> > >::_M_run() ()
from /home/ncopa/aports/community/libtorrent-rasterbar/src/libtorrent-rasterbar-1.2.14/src/.libs/libtorrent-rasterbar.so.10
#9 0x0000fffb2817ac14 in ?? () from /usr/lib/libstdc++.so.6
#10 0x0000fffb28881b3c in start (p=0xfffb27e4e0e0) at src/thread/pthread_create.c:203
#11 0x0000fffb2888037c in __clone () at src/thread/aarch64/clone.s:28
Backtrace stopped: previous frame identical to this frame (corrupt stack?)