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.


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.



--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to