与RCPP在Ubuntu Xenial扔的std :: runtime_error当段错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了与RCPP在Ubuntu Xenial扔的std :: runtime_error当段错误相关的知识,希望对你有一定的参考价值。

我有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()我得到一个segfault(G ++):

terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted (core dumped)

铛++错误是:

terminate called after throwing an instance of 'std::length_error'
  what():  basic_string::_M_create
Aborted (core dumped)

test_error2按预期工作。

仅发生在Ubuntu Xenial此错误。我与Ubuntu忠实的和MacOS和无段错误的测试。

如果我从文件中删除代码test_error2,我没有任何错误,即使我不删除#include <torch/torch.h>线。

也测试用铛++和g ++编译。同样的错误。

我创建了一个小型回购qazxsw POI与小例子,我可以做。

有没有人有什么,这可能是什么想法?

注意配置文件会下载并pytorch网站自动安装libtorch。所以,如果你不希望这样不安装该软件包。

答案

你可以尝试更换

here

什么我们的文档建议你做(在RCPP调用的函数,不会少)

throw std::runtime_error("hi this is my error");

看看会发生什么?

另一答案

原来,编译它与旧版本Rcpp::stop("hi this is my error"); 工作的罚款。

我安装g++

g++-4.9

编辑使用sudo apt-get install g++-4.9.R/Makevars

g++-4.9

然后重新编译RCPP和包装。

以上是关于与RCPP在Ubuntu Xenial扔的std :: runtime_error当段错误的主要内容,如果未能解决你的问题,请参考以下文章

如何将 std::vector<std::vector<double>> 转换为 Rcpp::Dataframe 或 Rcpp::NumericMatrix

与 Rcpp 等效的 lineprof

(Rcpp)armadillos abs() 函数在 std::abs 工作时与 c++ double 一起使用时输出错误值

Vagrant box ubuntu/xenial64 没有密码的解决方法

sh 在Ubuntu 16.04上安装LAMP(Xenial Xerus)

sh 安装开发人员环境Ubuntu Xenial(16.03)