原始问题:
我目前有一个程序,dynamic加载两个共享库a.so和b.so。 这两个库加载libcrypto.so(OpenSSL)。 如果程序结束,则会出现double free or corrupted error
。 我已经检查了我的程序错误。 索引处于界限内,并且不使用dynamic内存。
在我看来,libcrypto.so库在程序结束时分离了两次。 有没有办法来防止这一点? 优选地,不必使用不同的libssl实例,因为存储和内存在相近的范围内。
我使用Ubuntu 14.04 LTS,在C中编写了这些库,并使用gcc和-fpic编译它们。
谢谢你的帮助!
PS:可能相关: 静态库加载两次
//编辑:如果a.so和b.so静态链接libssl,则会发生同样的问题。
///编辑:如果a.so静态链接和b.so链接dynamic相同的问题发生。 (首先使用a.so。)如果a.so是dynamic链接的,而b.so是静态链接的,则RSA_check_key(..)
会发生libcrypto错误。
回答
////编辑:我最小化了我的代码,发现我另外连接了两次静态的东西。 这造成了第一个问题
新问题:
如第二次编辑所述,如果libcrypto先静态链接,然后dynamic链接,则RSA_check_key会失败。 任何想法发生在这里?
什么错误返回? 如果还没有,请查看https://www.openssl.org/docs/crypto/RSA_check_key.html