Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

crash on download finished #44

Closed
artifexor opened this issue Mar 23, 2012 · 4 comments
Closed

crash on download finished #44

artifexor opened this issue Mar 23, 2012 · 4 comments

Comments

@artifexor
Copy link

When using the following event to moving out finished torrent

system.method.set_key = \
 event.download.finished, \
 move_complete, \
 "d.set_directory=/usr/home/user/f/;execute=mv,-n,$d.get_base_path=,/usr/home/user/f/"

got segmentation fault with the following gdb backtrace

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 28b01140 (LWP 100092)]
torrent::Tracker::failed_counter (this=0x0) at tracker.h:114
114       uint32_t            failed_counter() const                {return m_failed_counter; }
(gdb) info threads
 4 Thread 28ce5340 (LWP 100162)  0x28a87b7b in kevent () from /lib/libc.so.7
 3 Thread 28ce7140 (LWP 100161)  0x28a87b7b in kevent () from /lib/libc.so.7
* 2 Thread 28b01140 (LWP 100092)  torrent::Tracker::failed_counter (this=0x0) at tracker.h:114
(gdb) thread 2
[Switching to thread 2 (Thread 28b01140 (LWP 100092))]
#0 torrent::Tracker::failed_counter (this=0x0) at tracker.h:114
114       uint32_t            failed_counter() const                {return m_failed_counter; }
(gdb) bt
#0  torrent::Tracker::failed_counter (this=0x0) at tracker.h:114
#1  0x081fcdef in torrent::TrackerController::do_timeout (this=0x2a7fee80) at tracker_controller.cc:444
#2  0x081ffbc3 in std::tr1::_Mem_fn<void (torrent::TrackerController::*)()>::operator() (this=0x2a6ff3b0, __object=0x2a7fee80) at functional_iterate.h:214
#3  0x081ffb55 in std::tr1::_Bind<std::tr1::_Mem_fn<void (torrent::TrackerController::*)()> ()(torrent::TrackerController*)>::operator() (this=0x2a6ff3b0) at bind_iterate.h:45
#4  0x081ff83f in std::tr1::_Function_handler<void ()(), std::tr1::_Bind<std::tr1::_Mem_fn<void (torrent::TrackerController::*)()> ()(torrent::TrackerController*)>>::_M_invoke (__functor=@0x29bfff78) at functional_iterate.h:502
#5  0x0805bc76 in std::tr1::function<void ()()>::operator() (this=0x29bfff78) at functional_iterate.h:865
#6  0x082d5120 in torrent::thread_main::call_events (this=0x28bc7380) at thread_main.cc:79
#7  0x0825453b in torrent::thread_base::event_loop (thread=0x28bc7380) at thread_base.cc:114
#8  0x080543af in main (argc=0x1, argv=0xbfbfe790) at main.cc:872
(gdb) thread 3
[Switching to thread 3 (Thread 28ce7140 (LWP 100161))]#0  0x28a87b7b in kevent () from /lib/libc.so.7
(gdb) bt
#0  0x28a87b7b in kevent () from /lib/libc.so.7
#1  0x081f02b9 in torrent::PollKQueue::poll (this=0x28b273d0, msec=0x2711) at poll_kqueue.cc:166
#2  0x081f0791 in torrent::PollKQueue::do_poll (this=0x28b273d0, timeout_usec=0x989680, flags=0x1) at  poll_kqueue.cc:258
#3  0x082546eb in torrent::thread_base::event_loop (thread=0x28bc7700) at thread_base.cc:144
#4  0x284ce77f in pthread_getprio () from /lib/libthr.so.3
#5  0x00000000 in ?? ()
(gdb) thread 4
[Switching to thread 4 (Thread 28ce5340 (LWP 100162))]#0  0x28a87b7b in kevent () from /lib/libc.so.7
(gdb) bt
#0  0x28a87b7b in kevent () from /lib/libc.so.7
#1  0x081f02b9 in torrent::PollKQueue::poll (this=0x28b27100, msec=0x927c1) at poll_kqueue.cc:166
#2  0x081f0791 in torrent::PollKQueue::do_poll (this=0x28b27100, timeout_usec=0x23c34600, flags=0x1) at poll_kqueue.cc:258
#3  0x082546eb in torrent::thread_base::event_loop (thread=0x28b85200) at thread_base.cc:144
#4  0x284ce77f in pthread_getprio () from /lib/libthr.so.3
#5  0x00000000 in ?? ()
(gdb) c
Continuing.
Caught Segmentation fault, dumping stack:
Stack dump not enabled.

Program received signal SIGABRT, Aborted.
0x289fc6db in thr_kill () from /lib/libc.so.7
(gdb) bt
#0  0x289fc6db in thr_kill () from /lib/libc.so.7
#1  0x284d4956 in pthread_kill () from /lib/libthr.so.3
#2  0x284d23d3 in raise () from /lib/libthr.so.3
#3  0x28a9f7aa in abort () from /lib/libc.so.7
#4  0x080545e9 in do_panic (signum=0xb) at main.cc:999
#5  0x08057231 in sigc::pointer_functor1<int, void>::operator() (this=0x28b272a0, _A_a1=@0x28b272a4) at ptr_fun.h:111
#6  0x080571f9 in sigc::adaptor_functor<sigc::pointer_functor1<int, void> >::operator()<int&> (this=0x28b2729c,   _A_arg1=@0x28b272a4) at adaptor_trait.h:84
#7  0x080571c6 in sigc::bind_functor<-1, sigc::pointer_functor1<int, void>, int, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::operator() (this=0x28b27298) at bind.h:1110
#8  0x08057182 in sigc::internal::slot_call0<sigc::bind_functor<-1, sigc::pointer_functor1<int, void>, int, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>, void>::call_it (rep=0x28b27280) at slot.h:103
#9  0x080c7fe6 in sigc::slot0<void>::operator() (this=0x845bec4) at slot.h:440
#10 0x080c9fea in SignalHandler::caught (signum=0xb) at signal_handler.cc:99
#11 <signal handler called>
#12 torrent::Tracker::failed_counter (this=0x0) at tracker.h:114
#13 0x081fcdef in torrent::TrackerController::do_timeout (this=0x2a7fee80) at tracker_controller.cc:444
#14 0x081ffbc3 in std::tr1::_Mem_fn<void (torrent::TrackerController::*)()>::operator() (this=0x2a6ff3b0, __object=0x2a7fee80) at functional_iterate.h:214
#15 0x081ffb55 in std::tr1::_Bind<std::tr1::_Mem_fn<void (torrent::TrackerController::*)()> ()(torrent::TrackerController*)>::operator() (this=0x2a6ff3b0) at bind_iterate.h:45
#16 0x081ff83f in std::tr1::_Function_handler<void ()(), std::tr1::_Bind<std::tr1::_Mem_fn<void (torrent::TrackerController::*)()> ()(torrent::TrackerController*)>>::_M_invoke (__functor=@0x29bfff78) at functional_iterate.h:502
#17 0x0805bc76 in std::tr1::function<void ()()>::operator() (this=0x29bfff78) at functional_iterate.h:865
#18 0x082d5120 in torrent::thread_main::call_events (this=0x28bc7380) at thread_main.cc:79
#19 0x0825453b in torrent::thread_base::event_loop (thread=0x28bc7380) at thread_base.cc:114
#20 0x080543af in main (argc=0x1, argv=0xbfbfe790) at main.cc:872

If I remove mv event everything is fine. Is my event logic bad?

The system is a FreeBSD 8.2 32bit and executable compiled with clang 3.0.

@rakshasa
Copy link
Owner

I assume this is the latest github version?

@artifexor
Copy link
Author

Yes, the latest. I sent more backtrace on mailing list but got error.

GIT RT: bb75f06 / LT: 0f38ea8

@rakshasa
Copy link
Owner

Committed a potential fix, let me know if it solves the issue.

@artifexor
Copy link
Author

Thanks. Files moved and no crash with GIT RT: b28f2ea / LT: 639e3d6

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants