人在做, 天在看 boxcounter.com boxcounter.org boxcounter[a]boxcounter.org 注册 | 登陆

LibTorrent库的奇怪问题

       《LibTorrent库的中文支持问题》说到乱码问题,其实还有一个问题,目前还没有解决。我把我需要的功能封装成了一个DLL,工作的挺好,但是在进程退出时会有问题,对于DEBUG版,会有LibTorrentASSERT失败,对于RELEASE版,ASSERT被略过了,现象改为了进程死锁挂起,没法退出。

    跟踪源码,发现问题出在session的析构函数里,它会设置一个线程退出任务,然后丢到队列里,这个任务在处理好退出任务后,会设置一个abort成员变量。析构函数里会ASSERT这个变量。问题就出在,这个任务始终没有得到执行,所以ASSERT失败/死锁。

    开始我认为是自己代码里的问题,就开始检查代码,没发现问题,于是就开始精简代码,还是没有解决。最后怒了,把所有自己敲的代码全咔嚓,只保留空的DLLMain函数和一个全局的session变量(当然还有一些必须的include#pragma~),结果居然还是有问题,彻底崩溃了~~~~

    这个问题只出现在DLL里,如果在控制台程序里,怎么折腾都OK。目前我临时用了一个很不完美的方法给绕过去了:定义一个全局的指针,只new,不delete,等到系统自己回收资源~~~

    网上没找到相关资料,应该是LibTorrent本身的BUG。如果有朋友遇到同样的问题,而且有更好的解决方案,帮忙冒个泡,灰常感谢。

Tags: libtorrent

« 上一篇 | 下一篇 »

Trackbacks

点击获得Trackback地址,Encode: UTF-8

发表评论

评论内容 (必填):