Opened 13 years ago
Closed 13 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 13 years ago by rickynils
comment:2 Changed 13 years ago by charles
please attach a gdb backtrace to this ticket.
comment:3 Changed 13 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 13 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 13 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 13 years ago by charles
in gcc, using the flags -g -O0 can be useful for making the debugger happy.
comment:7 Changed 13 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 13 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).
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.