FileCentipede icon indicating copy to clipboard operation
FileCentipede copied to clipboard

下载停止并提示“未处理的错误”

Open bawyvh opened this issue 2 years ago • 13 comments

最大任务数量越多,越容易出现下载停止并提示“未处理的错误” 我每个任务下载速度都不高,所以想提高最大任务数量,使更多任务同时下载,以便于充分跑满带宽,我把最大任务数量设置为20,全部任务停止后,再重新下载后,就立马出现部分任务信息并报错“未处理的错误”,即便手动重新开始,过一段时间也会重新报错, image

bawyvh avatar May 23 '23 09:05 bawyvh

是否能提供个测试地址,你下载文件的大小已经超过TB级别,硬盘空间是否足够。

filecxx avatar May 23 '23 09:05 filecxx

BT下载出现 “未处理的错误” 通常是和本地文件读写失败有关。

filecxx avatar May 23 '23 09:05 filecxx

是否能提供个测试地址,你下载文件的大小已经超过TB级别,硬盘空间是否足够。

我的下载链接是zlibrary图书馆31T那个磁力,我是分批下载的,机械硬盘16T,可用10T,正在下载磁力有6T,所以空间是足够的

总磁力种子文件太大,超过25M无法上传,我上传部分磁力种子,已够足测试使用

测试磁力种子.zip

bawyvh avatar May 23 '23 09:05 bawyvh

我晚一些才能测试,这可能是libtorrent的BUG,可以试试用 deluge 或者 qBittorrent 等下载到相同目录下看看是否会出现类似 "I/O 错误等信息"

filecxx avatar May 23 '23 09:05 filecxx

其他任务都停止了,只执行一个任务,还是报错“未处理的错误”,现在这个任务就卡在97%了,点击重新开始下载又会立马报错,现在不知道该如何把它下载下来[捂脸],图中最下面两个任务也是如此情况 20230528124049

bawyvh avatar May 28 '23 04:05 bawyvh

我晚一些才能测试,这可能是libtorrent的BUG,可以试试用 deluge 或者 qBittorrent 等下载到相同目录下看看是否会出现类似 "I/O 错误等信息"

我使用qBittorrent全部任务同时下载到相同目录,没有报错,可以正常使用 20230529111229

bawyvh avatar May 29 '23 03:05 bawyvh

多下载一会试试,这个错误抛出确实是libtorrent发出的,程序内只判断了一些常用的错误,其他的都归类为未处理的错误


int32_t to_libtorrent_catalog_error_code(int value)
{
    using errc = lt::errors::error_code_enum;

    switch(value)
    {
    case errc::failed_hash_check:
        return errors::Failed_Hash_Check;
    case errc::torrent_is_no_dict:
    case errc::torrent_missing_info:
    case errc::torrent_missing_name:
    case errc::torrent_file_parse_failed:
        return errors::Invalid_Torrent;
    case errc::torrent_invalid_name:
        return errors::Invalid_Name;
    case errc::torrent_invalid_length:
        return errors::Invalid_Length;
    case errc::torrent_missing_pieces:
        return errors::Missing_Pieces;
    case errc::torrent_invalid_hashes:
        return errors::Invalid_Hash;
    case errc::too_many_pieces_in_torrent:
        return errors::Too_Many_Pieces;
    case errc::invalid_swarm_metadata:
        return errors::Meta_Error;
    case errc::invalid_bencoding:
        return errors::Data_Error;
    case errc::no_files_in_torrent:
        return errors::Data_Is_Empty;
    case errc::invalid_escaped_string:
        return errors::Invalid_Escaped_String;
    case errc::duplicate_torrent:
        return errors::Duplicate_Torrent;
    case errc::missing_info_hash_in_uri:
        return errors::Address_Error;
    case errc::file_too_short:
        return errors::File_Too_Short;
    default:
        **return errors::Unhandled_Error;**
    }
}

也有可能是qbittorrent 4.5.2 使用的libtorrent版本已经修复了这个问题,3.0版本中会把全部的错误文本添加上,移除 “未处理的错误” 这个条目,这确实让调试定位变得困难。

filecxx avatar May 29 '23 05:05 filecxx

多下载一会试试,这个错误抛出确实是libtorrent发出的,程序内只判断了一些常用的错误,其他的都归类为未处理的错误


int32_t to_libtorrent_catalog_error_code(int value)
{
    using errc = lt::errors::error_code_enum;

    switch(value)
    {
    case errc::failed_hash_check:
        return errors::Failed_Hash_Check;
    case errc::torrent_is_no_dict:
    case errc::torrent_missing_info:
    case errc::torrent_missing_name:
    case errc::torrent_file_parse_failed:
        return errors::Invalid_Torrent;
    case errc::torrent_invalid_name:
        return errors::Invalid_Name;
    case errc::torrent_invalid_length:
        return errors::Invalid_Length;
    case errc::torrent_missing_pieces:
        return errors::Missing_Pieces;
    case errc::torrent_invalid_hashes:
        return errors::Invalid_Hash;
    case errc::too_many_pieces_in_torrent:
        return errors::Too_Many_Pieces;
    case errc::invalid_swarm_metadata:
        return errors::Meta_Error;
    case errc::invalid_bencoding:
        return errors::Data_Error;
    case errc::no_files_in_torrent:
        return errors::Data_Is_Empty;
    case errc::invalid_escaped_string:
        return errors::Invalid_Escaped_String;
    case errc::duplicate_torrent:
        return errors::Duplicate_Torrent;
    case errc::missing_info_hash_in_uri:
        return errors::Address_Error;
    case errc::file_too_short:
        return errors::File_Too_Short;
    default:
        **return errors::Unhandled_Error;**
    }
}

也有可能是qbittorrent 4.5.2 使用的libtorrent版本已经修复了这个问题,3.0版本中会把全部的错误文本添加上,移除 “未处理的错误” 这个条目,这确实让调试定位变得困难。

qbittorrent 4.5.2 下载了10个小时,其间多次全部停止再重新开始,一切正常,没有报错。 20230529221633

bawyvh avatar May 29 '23 14:05 bawyvh

我找了20个Windows镜像BT来同时下载,发现也会提示“未处理的错误” 20230529233036

bawyvh avatar May 29 '23 15:05 bawyvh

image 这个图标和其他的不同,提供下磁力链接,或者改名试试,我晚点提供一个带日志输出的调试版本filec.exe,看看输出内容是什么。

filecxx avatar May 29 '23 16:05 filecxx

这是调试版本,解压缩到lib目录下,在cmd下执行 filec_debug.exe -y ,出错时候会有错误输出信息。

http://www.filecxx.com/release/filec_debug.zip

filecxx avatar May 30 '23 00:05 filecxx

image 这个图标和其他的不同,提供下磁力链接,或者改名试试,我晚点提供一个带日志输出的调试版本filec.exe,看看输出内容是什么。

这个问题找到了,与开头的“未处理的错误”问题不一样。从网站复制的这个磁力后面多了换行符,所以文件蜈蚣下载任务时导致“未知的错误”,不过即使多了换行符,qbittorrent 4.5.2也可以正常下载,应该是做有优化 20230530101028

bawyvh avatar May 30 '23 02:05 bawyvh

windows下无法建立特殊符号的文件名 ".iso < br >" ,导致的这个问题,其他协议的filec会自动将文件名中的<> 转换为 (),BT下载这块没处理。

filecxx avatar May 30 '23 03:05 filecxx