首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >uClibc共享库在exit()期间卸载

uClibc共享库在exit()期间卸载
EN

Stack Overflow用户
提问于 2016-12-01 20:16:31
回答 1查看 102关注 0票数 0

我正在使用一个共享库,它在初始化期间创建工作线程。该应用程序与uClibc链接。当它从main()返回时,它在__pthread_cond_wait()或类似的工作线程中崩溃,共享库没有正确地停止清除()代码。当主()线程堆栈崩溃时:

代码语言:javascript
复制
#0 _dl_munmap from uClibc.so
#1 _dl_fini 
#2 __GI_exit 
#3 __uClibc_main

由于我没有共享库的源代码,所以无法修复工作人员清理代码,但我的问题是:

为什么一旦uClibc开始卸载共享库,线程仍在运行(崩溃)?我猜想它是从上面的_dl_munmap堆栈条目中卸载它们的。是否有办法确保在main()退出时暂停/停止所有线程?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-02 07:52:22

为什么线程还在运行?

因为您(或您所链接的共享库)让它们运行。

是否有办法确保当main()退出时暂停/停止所有线程?

是的:您需要安排线程终止。如果没有对共享库源的访问,您就无法真正做到这一点;您唯一的选择是调用_exit (不应该运行任何清理),而不是调用exit (或者从main返回)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40919598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档