gpt4 book ai didi

linux - dlopen 什么时候阻塞?

转载 作者:太空宇宙 更新时间:2023-11-04 12:10:57 37 4
gpt4 key购买 nike

sharedlibrary通过LD_PRELOAD加载,同库的构造函数调用dlopen("libc.so.6")

问题是dlopen一直在用,调试显示如下dlopen 调用 __dlopen 调用 calloc 和未知函数 ??, 最后 __GI____pthread_mutex_lock.

如我所料,在 dlopen 之前提供无限资源,但没有解决问题。

只有当 LD_PRELOAD 与目标应用程序 Firefox 在 Linux 上设置 LD_PRELOAD 时才会出现问题,任何其他应用程序都可以正常工作(dlopen 不会阻止) !

最佳答案

when does dlopen blocks?

当它需要一个由于某种原因不可用的锁时。

debugging showes

您需要更多 调试。 dlopen 调用需要 malloc 锁的 calloc。没什么特别的。

必须是某个其他线程持有此 malloc 锁,并正在等待您的 LD_PRELOADed 库完成其初始化(从而产生死锁)。您应该能够找到具有 (gdb) thread apply all where 的其他线程。

您尝试在您的 LD_PRELOADed 库中插入哪些函数也可能很重要。

关于linux - dlopen 什么时候阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48978371/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com