【发布时间】:2021-02-12 08:48:36
【问题描述】:
我在 Linux x86-64 上使用 C 语言进行编程。我正在使用一个库,它通过原始clone 系统调用而不是使用pthread_create 创建多个线程。这些线程运行库内部的低级代码。
我想钩住其中一个线程来内省它的行为。挂钩代码很容易,但我发现我几乎无法调用 libc 中的任何内容,因为未配置线程状态。 pthread_create 通常会将一堆数据插入到fs: 索引的线程本地存储区域中。例如,其中一些数据对于 libc 的函数至关重要,例如函数指针加密密钥 (pointer_guard) 和语言环境指针。
所以我的问题是:我可以通过任何机制将clone'd 线程升级到完整的pthread 吗?如果没有,有什么方法可以从clone'd 线程(例如printf、toupper 等需要libc 的线程本地数据)调用C 函数?
【问题讨论】:
标签: multithreading pthreads glibc