Opened 10 years ago

Closed 9 years ago

#1523 closed Bug (worksforme)

Crash in tr_fdFileCheckout on every startup of transmission-daemon

Reported by: rickynils Owned by:
Priority: Normal Milestone: None Set
Component: Transmission Version: 1.40
Severity: Critical Keywords:
Cc:

Description

I get the following crash when I start up transmission-daemon:

$ transmission-daemon -f -w /srv/media/download Transmission 1.40 (7096) started Loaded 3 torrents ... : Got 15 peers from tracker ... : Got 80 peers from tracker ... : Got 80 peers from tracker Port Forwarding: Opened port 51413 to listen for incoming peer connections transmission-daemon: fdlimit.c:233: tr_fdFileCheckout: Assertion `folder && *folder' failed.

This happened after I added two torrents to the daemon. It had happily downloaded the first one for a while before, and I had started and stopped the daemon a number of times. Now the daemon won't start any more, crashing on the assertion error above.

Change History (8)

comment:1 Changed 10 years ago by rickynils

When I removed the second torrent, it started to work again. I could also re-add the same torrent, and I haven't seen the problem yet.

comment:2 Changed 10 years ago by charles

please attach a gdb backtrace to this ticket.

comment:3 Changed 10 years ago by rickynils

How do I build transmission with debugging symbols? I got this backtrace, I don't now if it will help:

transmission-daemon: fdlimit.c:233: tr_fdFileCheckout: Assertion `folder && *folder' failed.

Program received signal SIGABRT, Aborted.
[Switching to Thread 0x7ff701639950 (LWP 3986)]
0x00007ff70166c0a5 in raise () from /lib/libc.so.6
(gdb) bt
#0  0x00007ff70166c0a5 in raise () from /lib/libc.so.6
#1  0x00007ff70166d5c3 in abort () from /lib/libc.so.6
#2  0x00007ff7016650c9 in __assert_fail () from /lib/libc.so.6
#3  0x0000000000424b39 in ?? ()
#4  0x0000000000425c5b in ?? ()
#5  0x0000000000426428 in ?? ()
#6  0x0000000000437ef9 in ?? ()
#7  0x0000000000429c1e in ?? ()
#8  0x000000000044d1e8 in ?? ()
#9  0x000000000041a3a4 in ?? ()
#10 0x00007ff701994fc7 in start_thread () from /lib/libpthread.so.0
#11 0x00007ff70170959d in clone () from /lib/libc.so.6
#12 0x0000000000000000 in ?? ()

comment:4 Changed 10 years ago by charles

rickynils: http://trac.transmissionbt.com/wiki has a page on where to find binaries, and another page on how to compile transmission yourself.

comment:5 Changed 10 years ago by rickynils

I have built transmission, I just don't know how to enable debugging symbols when building. I can't find any information about that on the wiki.

comment:6 Changed 10 years ago by charles

in gcc, using the flags -g -O0 can be useful for making the debugger happy.

comment:7 Changed 10 years ago by charles

Well the previous backtrace isn't very helpful, but I did find some clues from the "folder && *folder" assertion in tr_fdFileCheckout():

"folder" is the first argument in tr_fdFileCheckout()..

tr_fdFileCheckout() is only called from one place, inout.c's readOrWriteBytes(), and it passes tr_torrent.downloadDir as the `folder' argument. So the torrent's downloadDir must have been empty or null.

tr_torrent.downloadDir can be set from a few places: (1) the resume files, (2) the torrent constructor, and (3) tr_torrentSetDownloadDir(). Only the first two are used in the daemon. In r7249 I've added extra assertions to help safeguard against loading resume files that have an empty downloadDir, and added extra assertions to help smoke out the problem earlier.

Please update to r7249 or higher and see if it helps. If it doesn't, please attach a new backtrace... :)

comment:8 Changed 9 years ago by livings124

  • Resolution set to worksforme
  • Status changed from new to closed

No other users are reporting this. Please reopen this if the crash still occurs (with a backtrace).

Note: See TracTickets for help on using tickets.