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]

Reply via email to