【问题标题】:Why the same function behaves differently after linking other object files?为什么相同的函数在链接其他目标文件后表现不同?
【发布时间】:2013-02-05 16:45:18
【问题描述】:

我正在处理仅在 debian 系统上出现的 R 扩展错误。

SSL_CTX_new 函数在运行时产生检测到堆栈粉碎,这可能表明发生了段错误。

为了理解这个bug,我写了一个独立的测试函数:

#include <Rcpp.h>
#include <openssl/ssl.h>
RcppExport SEXP test() {
    BEGIN_RCPP

    SSL_library_init();
    SSL_CTX_new(SSLv23_client_method());

    END_RCPP
}

此函数正常独立运行。

但是,在将我现有的项目与测试功能链接后,它会产生 检测到堆栈粉碎

为什么相同的函数在链接其他目标文件后表现不同?谁能给我一些提示?谢谢!


这是我的项目:https://github.com/wush978/RMessenger。到目前为止,它在 debian 上崩溃了。

【问题讨论】:

    标签: c r openssl rcpp


    【解决方案1】:

    R 处理自己的内存管理。 Valgrind内存分析器/调试器之前已经成功使用过,网上也有一些帖子。

    如果我正确理解了您的帖子,那么 SSL 例程可能正在做一些让 R 感到不安的事情。您必须对其进行调试。您在此处发布的内容不构成可重现的错误报告。

    您可能还会发现在 rcpp-devel 列表中获得的反馈很有帮助。

    【讨论】:

    • 但是SSL_CTX_new在R和Rcpp下运行正常,所以我猜问题是函数和libstrophe的冲突。
    • 那么解决方法是什么?我看到您在 CRAN 上有一个新版本,请在此处分享详细信息和跟进。
    • 我先删除了libstrophe中所有存在的文件,SSL_CTX_new运行正常。然后我一一添加.c 文件,直到SSL_CTX_new 产生检测到堆栈粉碎。最后,我注意到文件libstrophe/sha1.c 是不必要的,并使SSL_CTX_new 产生检测到堆栈粉碎。但是,我仍然不明白链接的副作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 2019-08-14
    • 2013-08-16
    • 1970-01-01
    相关资源
    最近更新 更多