Ошибка сегментации возникает во время раскрутки boost::thread, но только если мой двоичный файл включает вызовы функции Arma::gmm_diag Learn броненосца (другие функции броненосца я еще не пробовал). Обратите внимание, что функция Arma::gmm_diag Learn еще не запускалась, когда возникает ошибка сегментации, поэтому это вызывает только тот факт, что функция была скомпилирована в двоичный файл. Ошибка сегментации не наблюдается в следующих сценариях:
- запуск двоичного файла gtest вместо двоичного файла приложения (двоичный файл gtest вызывает Arma::gmm_diag Learn )
- использование std::thread вместо boost::thread во всем двоичном файле приложения, за исключением вызова функции броненосца внутри boost::thread
Для броненосца я использую версию 14.0.2, а для повышения — использую версию 1.84.0.
Я использую броненосец только с заголовком
Код: Выделить всё
#define ARMA_DONT_USE_LAPACK
#define ARMA_DONT_USE_BLAS
Код: Выделить всё
Thread 5 "dragen" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffe8704700 (LWP 700154)]
_dl_runtime_resolve_xsavec () at ../sysdeps/x86_64/dl-trampoline.h:126
126 ../sysdeps/x86_64/dl-trampoline.h: No such file or directory.
(gdb) bt
#0 _dl_runtime_resolve_xsavec () at ../sysdeps/x86_64/dl-trampoline.h:126
#1 0x0000000006869d48 in boost::detail::set_current_thread_data(boost::detail::thread_data_base*) ()
#2 0x000000000686af07 in thread_proxy ()
#3 0x00007ffff77761da in start_thread () from /lib64/libpthread.so.0
#4 0x00007ffff361a8d3 in clone () from /lib64/libc.so.6
Моя машина имеет 48 процессоров (Intel(R) Xeon) (R) Gold 6126) под управлением Oracle Linux Server версии 8.10.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -armadillo
Мобильная версия