开了个线程,卡死在malloc

这人很菜 2018-06-07 05:15:21
我在实现上传文件功能时,开了个线程专门去读取文件内容并上传,但是在进入线程后就会卡死在malloc里。我用strace定位打印是[pid 21239] futex(0xb6dbce2c, FUTEX_WAIT_PRIVATE, 2, NULL
就卡在这儿了
...全文
1762 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
温柔的最决绝 2018-08-06
  • 打赏
  • 举报
回复
引用 11 楼 chaty_chu 的回复:
[quote=引用 9 楼 qq_15271231 的回复:]
你看看这个博客吧。malloc内部有加解锁机制,你这样写在线程里面,线程不安全吧。https://blog.csdn.net/icycode/article/details/49645725


这个文档我看过的,我这边没有涉及到信号函数。你的意思是子线程不允许malloc操作吗。。。。。。。[/quote]
对。你自己看一下线程安全方面的东西吧,线程里面的所有函数,操作都是要可重入的。你可以试下先在主线程里面把内存分配好,再进子线程里面处理你需要做的一些 事情。线程退出过后再free内存。
这人很菜 2018-08-06
  • 打赏
  • 举报
回复
引用 9 楼 qq_15271231 的回复:
你看看这个博客吧。malloc内部有加解锁机制,你这样写在线程里面,线程不安全吧。https://blog.csdn.net/icycode/article/details/49645725


这个文档我看过的,我这边没有涉及到信号函数。你的意思是子线程不允许malloc操作吗。。。。。。。
Acuity. 2018-08-04
  • 打赏
  • 举报
回复
堆用完啦,申请不到内存?
温柔的最决绝 2018-08-03
  • 打赏
  • 举报
回复
你看看这个博客吧。malloc内部有加解锁机制,你这样写在线程里面,线程不安全吧。https://blog.csdn.net/icycode/article/details/49645725
这人很菜 2018-08-02
  • 打赏
  • 举报
回复
gdb跟过了,栈被破坏了看不了。走读了下代码,发现是之前主线程malloc(-1)导致的子线程卡死,估计是c库的问题,毕竟主线程malloc(-1)返回err了,很玄幻,不知道为什么。
这人很菜 2018-08-02
  • 打赏
  • 举报
回复
先不结贴了,等大神来解释原因
weixin_42742911 2018-07-19
  • 打赏
  • 举报
回复
请帖代码,估计是死锁了吧。可以用GDB跟踪
john_liqinghan 2018-07-16
  • 打赏
  • 举报
回复 1
贴代码!!!
这人很菜 2018-06-22
  • 打赏
  • 举报
回复
顶一下~~~
这人很菜 2018-06-13
  • 打赏
  • 举报
回复
引用 2 楼 jklinux 的回复:
malloc申请的缓冲区难道非常大而且系统可用内存已很少?
申请不大而且内存足够。也没有使用信号处理函数
jklinux 2018-06-10
  • 打赏
  • 举报
回复
malloc申请的缓冲区难道非常大而且系统可用内存已很少?
fly 100% 2018-06-08
  • 打赏
  • 举报
回复
c库的问题吧

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧