Stepan Golosunov wrote:
> 26.06.2012 в 00:59:50 +0200 Benoît Knecht написал:
> > Benoît Knecht wrote:
> > > Stepan Golosunov wrote:
> > > > rtorrent 0.8.6-1 used to be crashing every several weeks for
> > > > me. (Though I do not actually remember whether there were
> > > > std::bad_alloc messages. I thought so but several recent crashes in
> > > > squeeze had basic_string::resize messages.)
> > > >
> > > > After upgrading to wheezy rtorrent started to crash much more
> > > > often. Either immediately after start or about half an hour later,
> > > > often with the messed up *** glibc detected *** rtorrent: corrupted
> > > > double-linked list: 0x094c7a18 *** messages, requiring reset in the
> > > > terminal to get readable output from any subsequent command.
> > > >
> > > > Running rtorrent under valgrind appears to prevent crashes.
> > > >
> > > > After recompiling libtorrent 0.12.9-3 with DEB_BUILD_OPTIONS=nostrip
> > > > I get the following:
> > > >
> > > > [...]
> > >
> > > I've been running rtorrent/libtorrent 0.8.9/0.12.9 for months without
> > > such problems, but I don't use DHT and you apparently do. So just to see
> > > what might be the differences, could you please post your rtorrent.rc?
> > > If you have anything unusual in there, maybe you could try and see if
> > > the crash happens with a minimal rtorrent.rc too.
> >
> > rtorrent 0.9.2 and libtorrent 0.13.2 are now in testing, could you give
> > them a try and report back here on the result? Also consider what I
> > mentioned above about rtorrent.rc.
>
> rtorrent 0.9.2-1 crashed upon start several times when I tried it
> couple of weeks ago. (Today it did not crash yet, but this seems to be
> the usual behavior when I am trying to reproduce crash for the bug
> report.)
>
> By the way, changes like this in libtorrent's configure look
> suspicious:
>
> int main() {
> - struct kevent ev[2], ev_out[2];
> + struct kevent ev2, ev_out2;
> struct timespec ts = { 0, 0 };
> - int pfd[2], pty[2], kfd, n;
> - char buffer[9001];
> + int pfd2, pty2, kfd, n;
> + char buffer9001;
> if (pipe(pfd) == -1) return 1;
> - if (fcntl(pfd[1], F_SETFL, O_NONBLOCK) == -1) return 2;
> - while ((n = write(pfd[1], buffer, sizeof(buffer))) ==
> sizeof(buffer));
> - if ((pty[0]=posix_openpt(O_RDWR | O_NOCTTY)) == -1) return 3;
> - if ((pty[1]=grantpt(pty[0])) == -1) return 4;
> - EV_SET(ev+0, pfd[1], EVFILT_WRITE, EV_ADD | EV_ENABLE, 0, 0,
> NULL);
> - EV_SET(ev+1, pty[1], EVFILT_READ, EV_ADD | EV_ENABLE, 0, 0,
> NULL);
> + if (fcntl(pfd1, F_SETFL, O_NONBLOCK) == -1) return 2;
> + while ((n = write(pfd1, buffer, sizeof(buffer))) ==
> sizeof(buffer));
> + if ((pty0=posix_openpt(O_RDWR | O_NOCTTY)) == -1) return 3;
> + if ((pty1=grantpt(pty0)) == -1) return 4;
> + EV_SET(ev+0, pfd1, EVFILT_WRITE, EV_ADD | EV_ENABLE, 0, 0,
> NULL);
> + EV_SET(ev+1, pty1, EVFILT_READ, EV_ADD | EV_ENABLE, 0, 0,
> NULL);
> if ((kfd = kqueue()) == -1) return 5;
> if ((n = kevent(kfd, ev, 2, NULL, 0, NULL)) == -1) return 6;
> - if (ev_out[0].flags & EV_ERROR) return 7;
> - if (ev_out[1].flags & EV_ERROR) return 8;
> - read(pfd[0], buffer, sizeof(buffer));
> + if (ev_out0.flags & EV_ERROR) return 7;
> + if (ev_out1.flags & EV_ERROR) return 8;
> + read(pfd0, buffer, sizeof(buffer));
> + if ((n = kevent(kfd, NULL, 0, ev_out, 2, &ts)) < 1) return 9;
> + return 0;
> + }
>
> All brackets around array indexes are lost in c snippets.
This has been fixed upstream already, but I don't think it has anything
to do with this bug.
> My .rtorrent.rc contains this:
>
> bind = …
> port_range = …-…
> #port_range = …-…
> check_hash = yes
> directory = "…"
> http_proxy = ""
> encoding_list = "utf-8"
> encryption = allow_incoming,try_outgoing
> peer_exchange = yes
> session = "…"
> dht = auto
> dht_port = …
>
> There are usually several dozens of torrents from jamendo in the session
> directory.
Thanks for the additional information. I'll try to reproduce this bug,
but I'll have to get DHT working first.
One more thing: Have you seen this bug happening if you only have a few
active torrents? How many are "several dozens"? Are they all active?
Cheers,
--
Benoît Knecht
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]