У меня очень странное поведение с 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)
Ошибка 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>
.
Также проверял компиляцию слязг ++ и г ++.Та же ошибка.
Я создал маленькое репо здесь с минимальным примером, который я мог сделать.
Кто-нибудь знает, что это может быть?
Примечание файл конфигурации автоматически загрузит и установит libtorch с веб-сайта pytorch.Так что не устанавливайте пакет, если вы не хотите этого.