我对 Rcpp 和 libtorch 有一个非常奇怪的行为。
我有一个具有 2 个功能的文件:
#include <torch/torch.h>
#include <Rcpp.h>
// [[Rcpp::export]]
void test_error () {
throw std::runtime_error("hi this is my error");
}
// [[Rcpp::export]]
void test_error2 () {
Rcpp::Rcout << torch::arange(1) << std::endl;
}
当我打电话时,test_error()
我得到一个段错误(g++):
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted (core dumped)
clang++ 错误是:
terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_M_create
Aborted (core dumped)
test_error2
按预期工作。
此错误仅在 Ubuntu Xenial 上发生。我用 Ubuntu Trusty 和 MacOS 进行了测试,没有段错误。
如果我test_error2
从文件中删除代码,我没有任何错误,即使我没有删除该#include <torch/torch.h>
行。
还测试了使用 clang++ 和 g++ 编译。同样的错误。
我在这里用我能做的最小例子创建了一个 smalll repo 。
有谁知道这可能是什么?
注意配置文件将自动从 pytorch 的网站下载并安装 libtorch。因此,如果您不想要这个,请不要安装该软件包。