?

Log in

entries friends calendar profile Мой сайт Previous Previous Next Next
Solaris Express 11 + rtorrent = core dump - Opensolaris
rezdm
ru_opensolaris
rezdm
Solaris Express 11 + rtorrent = core dump
Приветствую!

После того, как обновился до 11 (фактически переставил систему, ибо в процессе простого апгрейда трагически закончилось место), появилась ещё вот какая проблема (первую описал в предыдущем посте): попытка запустить rtorrent приводит к его коре:

          Name: network/rtorrent
       Summary: rtorrent
   Description: rtorrent - a BitTorrent client for ncurses (0.8.2)
      Category: Applications/Internet
         State: Installed
     Publisher: solaris
       Version: 0.8.2
 Build Release: 5.11
        Branch: 0.151.0.1
Packaging Date: November  5, 2010 06:00:55 AM
          Size: 2.02 MB
          FMRI: pkg://solaris/network/rtorrent@0.8.2,5.11-0.151.0.1:20101105T060055Z
rezdm@rezdm-sol:~/space/torrents$ rtorrent
Caught Floating point exception, dumping stack:
Stack dump not enabled.
Caught Abort signal, dumping stack:
Stack dump not enabled.
Abort (core dumped)


Кора откладывается только в момент попытки начала загрузки чего-либо (в моём случае rtorrent) настроен на мониторинг директории, откуда он автоматом подбирает .torrent-файлы.

Попытка посмотреть в кору:

rezdm@rezdm-sol:~/space/torrents$ dbx core.rtorrent.17093.1290500380
dbx: File `core.rtorrent.17093.1290500380' is not executable
For information about new features see `help changes'
To remove this message, put `dbxenv suppress_startup_message 7.8' in your .dbxrc
(dbx) where
dbx: program is not active
(dbx)
rezdm@rezdm-sol:~/space/torrents$ pstack core.rtorrent.17093.1290500380 | c++filt
core 'core.rtorrent.17093.1290500380' of 17093: rtorrent
feef2945 _lwp_kill (1, 6, 8046e58, fee99f3e) + 15
fee99f4a raise (6, 0, 8046ea8, fee719da) + 22
fee719fa abort (8047040) + f2
081a2e3d void do_panic(int) (6, 828c778, 8046ec0, 81cbde2) + ad
081a5c91 void sigc::pointer_functor1<int,void&rt;::operator()(const int&)const (825b588, 825b58c, 0, feee56a6) + 15
081a590d __type_0 sigc::adaptor_functor<sigc::pointer_functor1<int,void&rt; &rt;::operator()<int&&rt;(__type_1)const (825b588, 825b58c, 0, feee40b6) + 11
081a587a void sigc::bind_functor<-1,sigc::pointer_functor1<int,void&rt;,int,sigc::nil,sigc::nil,sigc::nil,sigc::nil,sigc::nil,sigc::nil&rt;::operator()() (825b588, fef70000, 8046f68, feedaeaa) + 1e
081a4955 void sigc::internal::slot_call0<sigc::bind_functor<-1,sigc::pointer_functor1<int,void&rt;,int,sigc::nil,sigc::nil,sigc::nil,sigc::nil,sigc::nil,sigc::nil&rt;,void&rt;::call_it(sigc::internal::slot_rep*) (825b570, 0, fef74940, fe9a2a40) + 15
081aa091 void sigc::slot0<void&rt;::operator()()const (82586d8, fef70000, 8046fa8, feedc19b) + 35
081aae23 void SignalHandler::caught(int) (6, 0, 804707c, feec7694, fe9a2a40, fef70000) + 43
feeeda05 __sighndlr (6, 0, 804707c, 81aade0) + 15
feee08ce call_user_handler (6) + 2a2
feee0b12 sigacthandler (6, 0, 804707c) + f2
--- called from signal handler with signal 6 (SIGABRT) ---
feef2945 _lwp_kill (1, 6, 80472b8, fee99f3e) + 15
fee99f4a raise (6, 6, 80472f0, fee71914) + 22
fee7197c abort (80) + 74
081a2e3d void do_panic(int) (8, 0, 18, feee6564) + ad
081a5c91 void sigc::pointer_functor1<int,void&rt;::operator()(const int&)const (825b560, 825b564, 8047388, fea889a4) + 15
081a590d __type_0 sigc::adaptor_functor<sigc::pointer_functor1<int,void&rt; &rt;::operator()<int&&rt;(__type_1)const (825b560, 825b564, fef80cf8, fee454b8) + 11
081a587a void sigc::bind_functor<-1,sigc::pointer_functor1<int,void&rt;,int,sigc::nil,sigc::nil,sigc::nil,sigc::nil,sigc::nil,sigc::nil&rt;::operator()() (825b560, feedaeaa, fe9a2a40, 1) + 1e
081a4955 void sigc::internal::slot_call0<sigc::bind_functor<-1,sigc::pointer_functor1<int,void&rt;,int,sigc::nil,sigc::nil,sigc::nil,sigc::nil,sigc::nil,sigc::nil&rt;,void&rt;::call_it(sigc::internal::slot_rep*) (825b548, fe9a2a40, 8047628, febe64f8) + 15
081aa091 void sigc::slot0<void&rt;::operator()()const (82586e8, feedc19b, fef74a40, 0) + 35
081aae23 void SignalHandler::caught(int) (8, 0, 80474d4, fef70000, 8047490, feee08ce) + 43
feeeda05 __sighndlr (8, 0, 80474d4, 81aade0) + 15
feee08ce call_user_handler (8) + 2a2
feee0b12 sigacthandler (8, 0, 80474d4) + f2
--- called from signal handler with signal 8 (SIGFPE) ---
fee62cc2 UDivRem (8047830, 804779c, 0, 0, 40000, 1) + 92
fecf30f7 torrent::MemoryChunk torrent::FileList::create_chunk_part(torrent::File**,unsigned long long,unsigned,int) (8047830, 8310f94, 8311608, 0, 0, 40000) + c7
fecf32b6 torrent::Chunk*torrent::FileList::create_chunk(unsigned long long,unsigned,int) (8310f94, 0, 0, 40000, 1, 0) + 162
fecf356e torrent::Chunk*torrent::FileList::create_chunk_index(unsigned,int) (8310f94, 0, 1, 8328040, 8047938, febb0018) + 46
fed0f8e9 torrent::Chunk*rak::mem_fun2<torrent::FileList,torrent::Chunk*,unsigned,int&rt;::operator()(unsigned,int) (8328040, 0, 1, fed0e55e) + 1d
fed0e65f torrent::ChunkHandle torrent::ChunkList::get(unsigned,bool) (8047990, 8328010, 0) + 11b
fed15cc9 void torrent::HashTorrent::queue(bool) (8314dc0) + d9
fed15959 bool torrent::HashTorrent::start(bool) (8314dc0, 1, 217, feccc6da) + 59
feccc828 bool torrent::Download::hash_check(bool) (8307140, 1, 8179214, 0) + 158
081df194 void core::Manager::receive_hashing_changed() (827b350, 825bb70, 8047ad8, 81d9669) + 24c
081e4b5b void sigc::bound_mem_functor0<void,core::Manager&rt;::operator()()const (82ba898, 0, 8047ad8, 81d95db) + 23
081e4b32 void sigc::adaptor_functor<sigc::bound_mem_functor0<void,core::Manager&rt; &rt;::operator()()const (82ba898, 8047ae4, 8047ae8, 8327c70) + e
081e2611 void sigc::internal::slot_call0<sigc::bound_mem_functor0<void,core::Manager&rt;,void&rt;::call_it(sigc::internal::slot_rep*) (82ba880, 8327c70, 827b310, 81a0806) + 15
081db0b5 void sigc::internal::signal_emit0<void,sigc::nil&rt;::emit(sigc::internal::signal_impl*) (82ba850, f, 10, 827b310) + 129
081dade5 void sigc::signal0<void,sigc::nil&rt;::emit()const (8290458, 82d2ba0, 8047b78, 819f6b6) + 11
081e8e6e void sigc::signal0<void,sigc::nil&rt;::operator()()const (8290458, 0, 8047ba8, 81a48e6) + e
081e9680 void rak::const_mem_fn0_t<sigc::signal0<void,sigc::nil&rt;,void&rt;::operator()() (828eef0, 828fb34, 8047bc8, 819e7ee) + 18
081a4939 void rak::function0<void&rt;::operator()() (8290468, 828fb34, 0, 0) + 19
081a47aa void rak::priority_item::call() (8290460, 8047bf4, 0, 8047d88) + 12
081a39b8 void rak::priority_queue_perform(rak::priority_queue<rak::priority_item*,rak::priority_compare,std::equal_to<rak::priority_item*&rt; &rt;*,rak::timer) (82585b0, 8bc14ed, 495b4, 81a2984) + 6c
081a2a89 main (1, 8047d34, 8047d3c, 8170138) + 4d5
0817030d _start (1, 8047df0, 0, 8047df9, 8047e2c, 8047e37) + 7d


truss даёт вот такой результат: rtorrent_truss.txt

Сам бинарник:

        libncurses.so.5 =>       /usr/gnu/lib/libncurses.so.5
        libsigc-2.0.so.0 =>      /usr/lib/libsigc-2.0.so.0
        libc.so.1 =>     /lib/libc.so.1
        libcurl.so.3 =>  /usr/lib/libcurl.so.3
        libsocket.so.1 =>        /lib/libsocket.so.1
        libnsl.so.1 =>   /lib/libnsl.so.1
        libtorrent.so.9 =>       /usr/lib/libtorrent.so.9
        libCstd.so.1 =>  /usr/lib/libCstd.so.1
        libCrun.so.1 =>  /usr/lib/libCrun.so.1
        libm.so.2 =>     /lib/libm.so.2
        libidn.so.11 =>  /usr/lib/libidn.so.11
        libldap.so.5 =>  /usr/lib/libldap.so.5
        libgss.so.1 =>   /usr/lib/libgss.so.1
        libssl.so.0.9.8 =>       /lib/libssl.so.0.9.8
        libcrypto.so.0.9.8 =>    /lib/libcrypto.so.0.9.8
        libz.so.1 =>     /lib/libz.so.1
        libmp.so.2 =>    /lib/libmp.so.2
        libmd.so.1 =>    /lib/libmd.so.1
        libsasl.so.1 =>  /usr/lib/libsasl.so.1
        libnspr4.so =>   /usr/lib/mps/libnspr4.so
        libplc4.so =>    /usr/lib/mps/libplc4.so
        libnss3.so =>    /usr/lib/mps/libnss3.so
        libssl3.so =>    /usr/lib/mps/libssl3.so
        libpthread.so.1 =>       /lib/libpthread.so.1
        librt.so.1 =>    /lib/librt.so.1
        libdl.so.1 =>    /lib/libdl.so.1
        libnssutil3.so =>        /usr/lib/mps/libnssutil3.so
        libplds4.so =>   /usr/lib/mps/libplds4.so
        libthread.so.1 =>        /lib/libthread.so.1
rezdm@rezdm-sol:~/space/torrents$ file !$
file `which rtorrent`
/usr/bin/rtorrent: ELF 32-bit LSB executable 80386 Version 1 [FPU], dynamically linked, stripped


Уоркэраунды есть, конечно (например поставить 10ку в зону), но хотелось бы как-то по-правильному.


Может кто подсказать (и вдруг по предыдущей проблеме кто тоже сталкивался)?

Спасибо.
7 комментариев or Оставить комментарий
Comments
greshnik From: greshnik Date: Ноябрь, 23, 2010 13:58 (UTC) (Ссылка)
Ну во-первых, dbx ты используешь неправильно.
Правильно будет так:
dbx core.rtorrent.17093.1290500380

Или
pstack core.rtorrent.17093.1290500380

Боюсь только, что тебе это не очень поможет. Floating point exception, FPE_INTDIV - с вероятностью 99% деление на 0. А вот откуда там этот ноль взялся... Покажи пстак, может, станет понятно.
rezdm From: rezdm Date: Ноябрь, 23, 2010 14:00 (UTC) (Ссылка)
Так эт, вроде dbx-то правильно, за напоминание про pstack спсб!
rezdm From: rezdm Date: Ноябрь, 23, 2010 14:07 (UTC) (Ссылка)
Спасибо за напоминание про pstack -- вылетело из головы. Теперь хоть можно багрепорт отправить полноценный. pstack -- см в посте.
greshnik From: greshnik Date: Ноябрь, 23, 2010 14:13 (UTC) (Ссылка)
Похоже на application bug. Можешь в исходники create_chunk_part глянуть, если не лень - что там на что делится.
А dbx неправильно, у меня просто знаки больше-меньше сожрались. Идея была такая:
dbx path_to_torrent_executable core.rtorrent.17093.1290500380
rezdm From: rezdm Date: Ноябрь, 23, 2010 14:19 (UTC) (Ссылка)
хм, вроде ж раньше было просто кору указать. Ну да ладно, я под соляркой года три, эх, как не отлаживаюсь. Пстек в посте, вот отладчи:
greshnik From: greshnik Date: Ноябрь, 23, 2010 14:25 (UTC) (Ссылка)
Ну да, тоже самое, что в пистаке. Вероятно, аппликейшн баг.
7 комментариев or Оставить комментарий