FreeLibrary函数卡死,请教大牛指点
调试公司的代码,一个动态库导出一个类,在卸载动态库的时候调用FreeLibrary,FreeLibrary卡死在里面。
下面详细描述一下场景和我的一些看法:
1、动态库是用MFC生成的,也就是说DllMain是被封装起来的,我不会改其中的加载/卸载函数。
2、在动态库卸载前,我已确认将导出类对象删除,及时不删除,应该出现崩溃现象才对。
现在没有什么好的思路,请各位指点一下,给个方向也好。
[解决办法]
是不是线程死锁了
[解决办法]
创建个新工程,只加载dll,然后释放,看看情况,调用dll中的类方法再释放看看情况。而且FreeLibrary应该都不用主动调用的吧
[解决办法]
如果你确实正确的用Windbg扫描,没有死锁。
有可能是Dll释放时清理资源出现死循环,到不一定是锁住
你最好看看windbg释放线程的堆栈。
[解决办法]
http://blog.csdn.net/breaksoftware/article/details/8159088
[解决办法]
//////////////////////////////////////////////////////////////////////////
//
//Entry-Point Function: the first code to execute, also the last code.
//
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
//TODO
return TRUE;
case DLL_PROCESS_DETACH:
//TODO
return TRUE;
case DLL_THREAD_ATTACH:
//TODO
return TRUE;
case DLL_THREAD_DETACH:
//TODO
return TRUE;
default:
return TRUE;
}
}