信号处理函数陷阱:调用malloc导致死锁[转]
2024-09-01 08:37:14
概览
因malloc是加锁的,上网了解的相关信息,额外了解到信号处理规范使用,mark
正文
在执行malloc的过程中,跳转到了信号处理函数中。而信号处理函数在调用某个系统api时,内部又调用了malloc。 看了glibc源码就会知道,malloc内部也是有锁、而且是非嵌套的,如果在上一次调用中拿到锁,又跳转到信号处理函数中再次malloc,自然就导致死锁了。而且即使没有死锁,也极有可能破坏malloc内部维护的一些全局信息,导致后面莫名其妙的崩溃;由此可见,对于信号处理函数“必须保证可重入”这一点,在实际编码中必须慎之又慎,时刻谨记。
一般来说,信号处理函数中要做的事情应该尽量简单。通常可以置一个标识,由其他线程检测到这个标识后再做相应处理,而不是直接在信号处理函数中做这些事情。
ref
https://blog.csdn.net/zyboy2000/article/details/78964314
最新文章
- floodlight 中两个互相矛盾的地方
- 【网络收集】MySql中IS NOT NULL与!=NULL的区别
- 滑动选择日期(基于sui-mobile的移动端)
- docker 镜像和容器的批量清理
- Latex加速: TexStudio的安装和使用
- Scala入门系列(十三):类型参数
- Jquery中 .empty()和.append()
- [android] 保存文件到SD卡
- Android开发过程中的坑及解决方法收录(五)
- Android为TV端助力 关于JNI的使用方法
- 牛客网 2018年东北农业大学春季校赛 L题 wyh的天鹅
- 【读书笔记】iOS-对iOS应用进行模糊测试
- Django web project
- checked 选择框选中
- PHP防止跨站表单提交与同站跨页伪造表单的攻击
- 【Oracle】Windows定时计划每天备份数据库
- Js实现AES/RSA加密
- PowerDesigner生成数据库表和逆向生成表结构(MySQL数据库)
- javascript:json对象和json字符串的相互转换
- 洛谷 P1509 找啊找啊找GF