Tag: libcurl

curl_slist_free_all()导致GKE w / Debian 8.7上的段错误

我已经为libcurl封装了我在Google Container Engine上部署的C ++守护进程。 除了一个小问题之外,一切都很精彩。 无论何时调用curl_slist_free_all()它都会发生段curl_slist_free_all() 。 它不会在Ubuntu 14或16或MacOS上发生。 它只发生在Debian 8.7的GKE Docker环境中。 这实际上是我唯一的错误,几周来一直困扰着我。 我已经用RAII风格的容器包装资源句柄,以保证exception安全(是的,是的,我使用例外)和泄漏保护。 easy_init和easy_cleanup在CurlSession的构造函数和析构函数中。 global_init&cleanup在HTTP构造函数和析构函数中。 我validation了没有两个免费的情况,spelunked libcurl代码,仍然无法理解为什么这只发生在这个操作系统环境。 我设法附加一个debugging器,并将其隔离到单个slist清除调用。 唯一可以让我的代码工作的方法是在其他所有的env中泄漏,这不是一个交易的破坏者,而是我的记忆分析器给了我一个干净的健康法案。 任何见解或共享的痛苦感激。 我的标题slist包装: HTTP::Headers::Headers() : slist{nullptr} {} HTTP::Headers::Headers(const HeaderKeyValues &headers) : slist{nullptr} { for (const auto& header : headers) add(header.first, header.second); } HTTP::Headers::~Headers() { curl_slist_free_all(slist); // <- seems to crash on Google's Debian image slist = […]