rakshasa / rtorrent

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

segfault when using xmlrpc #1060

Closed chlooriding closed 3 years ago

chlooriding commented 3 years ago

After a fresh reinstall on Debian jessie on an i386 compatible machine, rtorrent (0.9.6) crashes:

Caught Segmentation fault, dumping stack: Stack dump not enabled. Aborted

It happens whenever I send an xmlrpc call, otherwise it works. So far I've tried to use different version of xmlrpc-c: 1.49.02 and 1.51.06 and nabling or disabling some transports. With no avail. Rtorrent is configured as follows: ./configure --prefix=/usr/local --with-xmlrpc-c --enable-debug --enable-extra-debug I haven't figured out how to get dump stack but I got it running on gdb and this is the backtrace:

Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0xb4ccab40 (LWP 18366)] memcpy () at ../sysdeps/i386/i586/memcpy.S:112 112 ../sysdeps/i386/i586/memcpy.S: No such file or directory. (gdb) bt

0 memcpy () at ../sysdeps/i386/i586/memcpy.S:112

1 0xb7d8644a in xmlrpc_mem_block_append () from /usr/local/lib/libxmlrpc_util.so.4

2 0xb7dc09be in ?? () from /usr/lib/i386-linux-gnu/libxmlrpc.so.3

3 0xb7dad77d in ?? () from /usr/lib/i386-linux-gnu/libxmlrpc_xmlparse.so.3

4 0xb7dae6c3 in ?? () from /usr/lib/i386-linux-gnu/libxmlrpc_xmlparse.so.3

5 0xb7daf1c6 in ?? () from /usr/lib/i386-linux-gnu/libxmlrpc_xmlparse.so.3

6 0xb7daf86a in ?? () from /usr/lib/i386-linux-gnu/libxmlrpc_xmlparse.so.3

7 0xb7dad06b in xmlrpc_XML_Parse () from /usr/lib/i386-linux-gnu/libxmlrpc_xmlparse.so.3

8 0xb7dc0e98 in xml_parse () from /usr/lib/i386-linux-gnu/libxmlrpc.so.3

9 0xb7dc1321 in xmlrpc_parse_call () from /usr/lib/i386-linux-gnu/libxmlrpc.so.3

10 0xb7dcea8e in xmlrpc_registry_process_call2 () from /usr/lib/i386-linux-gnu/libxmlrpc_server.so.3

11 0xb7dcec57 in xmlrpc_registry_process_call () from /usr/lib/i386-linux-gnu/libxmlrpc_server.so.3

12 0x0813f7da in ?? ()

13 0x0813dfaf in ?? ()

14 0x0813ed73 in ?? ()

15 0xb7e0d719 in torrent::PollEPoll::perform() () from /usr/local/lib/libtorrent.so.19

16 0xb7e0d891 in torrent::PollEPoll::do_poll(long long, int) () from /usr/local/lib/libtorrent.so.19

17 0xb7e46083 in torrent::thread_base::event_loop(torrent::thread_base*) () from /usr/local/lib/libtorrent.so.19

18 0xb7d6fd67 in start_thread (arg=0xb4ccab40) at pthread_create.c:309

19 0xb7b7764e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:129

(gdb) info thread Id Target Id Frame

  • 3 Thread 0xb4ccab40 (LWP 18366) "worker_rtorrent" memcpy () at ../sysdeps/i386/i586/memcpy.S:112 2 Thread 0xb6f80b40 (LWP 18363) "rtorrent disk" 0xb781bf8a in ?? () from /usr/lib/i386-linux-gnu/i586/libcrypto.so.1.0.0 1 Thread 0xb722f700 (LWP 18359) "rtorrent main" __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/i386/i586/../i486/lowlevellock.S:146

I'm new on debugging (let me know how I can provide more detail) but every clue points to xmlrpc (faulty configuration or libs). Before reinstalling debian, it worked (same self-compiled rtorrent version) so maybe I'm missing something trivial but I'm really stuck. Can you please help me?

chlooriding commented 3 years ago

This is the rpc_dump log:

$ >> cat rpc_dump.log
1608463686 scgi
---DUMP---
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>system.listMethods</methodName>
<params>
</params>
</methodCall>

---END---

And this is the response obtained by xmlrpc client:

$ >> xmlrpc localhost system.listMethods
XML-RPC CALL:

<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>system.listMethods</methodName>
<params>
</params>
</methodCall>

XML-RPC RESPONSE:

Failed.  Call failed.  Unable to make sense of XML-RPC response from server.  Not valid XML.  no element found.  Use XMLRPC_TRACE_XML to see for yourself.  (XML-RPC fault code -503)

Thank you for your support

chlooriding commented 3 years ago

Eventually reinstalling debian from scratch solved it.