我有一个 C http 客户端,它使用 OpenSSL 来处理加密,而 libuv 是主干循环。 有时,当服务器断开我的客户端连接时,清理过程会导致 SSL_free 上的可执行文件崩溃。
执行清理的代码如下:
if (ssl)
SSL_free(ssl);
ssl = nullptr;
read_bio = nullptr;
write_bio = nullptr;
错误是“无效指针”或有时是“双重释放”,但老实说不明白为什么。
我尝试调用SSL_shutdown,尝试在SSL_free之前读取任何ssl错误,但我没有发现任何有用的东西。
任何帮助表示赞赏!
这意味着代码的其他部分存在错误,并且在清理之前正在更改
ssl
(可能会释放它)。