程序崩溃时malloc/new可能导致死锁,程序卡死退不出

来源:清泛原创     2020-09-05 13:17:48    人气:     我有话说( 0 人参与)

清泛网(www.tsingfun.com):Windows Server2016服务器C++崩溃时容易不彻底,导致卡住死锁,Server2008死锁概率低一些,死锁感觉是由于malloc不可重入导致的。操作系统底层API行为可能不一致,可能有办法指定

1、程序崩溃时malloc/new可能导致死锁,程序卡死退不出。Win、Linux下都会发生,应该是malloc系统函数的不可重入性导致的,函数中会加锁,当某个线程崩溃malloc没有正常返回时,其他线程就会发生死锁现象。而且只有崩溃时才有malloc的可重入性的问题。

2、Linux下可以通过添加一个宏 _REENTRANT 解决,Windows未知。


另外,Windows Server2016服务器C++崩溃时容易不彻底,导致卡住死锁,Server2008死锁概率低一些,死锁感觉是由于malloc不可重入导致的。

操作系统底层API行为可能不一致,可能有办法指定2016直接崩溃不让它卡住吧。


(待续...)

deadlock 可重入

注:本文为本站或本站会员原创优质内容,版权属于原作者及清泛网所有,
欢迎转载,转载时须注明版权并添加来源链接,谢谢合作! (编辑:admin)