Opened 7 years ago

Closed 7 years ago

#4783 closed Bug (duplicate)

pause error

Reported by: NOTaMONDAY Owned by:
Priority: High Milestone: None Set
Component: Transmission Version: 2.50
Severity: Major Keywords:
Cc:

Description

since the new update, every time i pause a download, the app freezes. (every time)

Change History (9)

comment:1 Changed 7 years ago by jordan

  • Version changed from 2.50+ to 2.50

comment:2 Changed 7 years ago by x190

NOTaMONDAY: Could you please tell us what form of Transmission you are using and on what OS? Also, does the freeze clear itself eventually? You may have to wait several minutes depending on the size of the paused torrent and whether it was a newly added (or new files selected) torrent.

comment:3 Changed 7 years ago by marc

I can confirm this error. I'm using OSX 10.7.3. The freeze does clear itself eventually but it can take a full 2-4 minutes to do so for a torrent as small as 300MB. Also, this was not an issue in earlier versions.

comment:4 Changed 7 years ago by aonez

Same here. Also Mac OS X 10.7, but if I'm not wrong happens in Snow Leopard too. In my case is not 2-4 minutes, it's a minute or less. I think it depends on the size, actually.

Anyone can point me to the function of the pause so I can debug?

comment:5 Changed 7 years ago by x190

This ticket appears to need #1753 as a fix. aonez, can you cook up a patch for a pool of worker threads to get this zeroing-out of pre-allocated files on pause accomplished in a speedier fashion as it can amount to considerable time for larger torrents (roughly 1 min. per 2 GB). This is an OS X issue as sparsefiles are not supported by its filesystem.

See also:

https://forum.transmissionbt.com/viewtopic.php?f=4&t=11453&p=53327#p53402

Last edited 7 years ago by x190 (previous) (diff)

comment:6 follow-up: Changed 7 years ago by aonez

I'm trying to figure it out. I found that Transmission freezes here:

- (void) stopTransfer
{
    tr_torrentStop(fHandle);
    [self update];
}

Actually is the "tr_torrentStop(fHandle);" part. I'm trying to add this function into a new thread, but I'm having trouble debugging due to SIGPIPE constantly stooping...

comment:7 Changed 7 years ago by aonez

Ok I've mostly isolated the issued. With "tr_torrentStop(fHandle);" in another thread and blocking the update code in Torrent.m and Controller.m (updateUI) Transmission does not freeze.

There is any property to check if the current file is being paused so I can skip the update call in updateUI? Or I must create it?

    for (Torrent * torrent in fTorrents)
    {
        [torrent update];
        
        //pull the upload and download speeds - most consistent by using current stats
        dlRate += [torrent downloadRate];
        ulRate += [torrent uploadRate];
        
        completed |= [torrent isFinishedSeeding];
    }

I'll continue tomorrow :)

comment:8 in reply to: ↑ 6 Changed 7 years ago by x190

Replying to aonez:

I'm having trouble debugging due to SIGPIPE constantly stopping...

$ gdb Transmission
(gdb) handle SIGPIPE nostop noprint
(gdb) r
... run until Transmission freezes, then type ctrl-c to return control to the debugger
(gdb) thread apply all bt full

comment:9 Changed 7 years ago by jordan

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

Ok I've mostly isolated the issued. With "tr_torrentStop(fHandle);" in another thread and blocking the update code in Torrent.m and Controller.m (updateUI) Transmission does not freeze.

This behavior is a duplicate of ticket #1753, so closing this ticket.

Note: See TracTickets for help on using tickets.