cURL 8.16.0 中 pthread_cancel 的灾难性后果及移除

2025-09-13

cURL 8.16.0 版本中引入了使用 pthread_cancel 来取消 getaddrinfo() 的功能,旨在提高性能。然而,这一改动导致了严重的内存泄漏问题。这是因为 getaddrinfo() 在读取 /etc/gai.conf 文件时可能被取消,从而导致已分配的内存无法释放。由于该问题难以解决且可能导致严重的稳定性问题,cURL 团队最终决定在 #18540 中移除该功能,并建议用户使用 c-ares 库来替代,虽然 c-ares 功能上略有不足。

阅读更多