zhkl0228 / unidbg

Allows you to emulate an Android native library, and an experimental iOS emulation
Apache License 2.0
3.91k stars 971 forks source link

修复在threadDispatcher启用时,socket相关的读取造成的死锁问题 #665

Open cc004 opened 3 months ago

cc004 commented 3 months ago

在threadDispatcherEnabled时,由于使用抢先式调度,会导致socketpair在其中一个线程在接收时,持续占用调度,导致永远无法接收到发送线程的信息。

同理,由于ppoll没有考虑io是否有信息可读,会导致线程持续卡死在后接的recv中,导致实际运行逻辑与实际不符,同时如果其他线程正在同一socket准备发送请求,也会造成死锁。

详细样例可见本fork的master分支