Ошибка сегментации _dl_runtime_resolve_xsavec с использованием boost::thread и броненосцаLinux

Ответить
Anonymous
 Ошибка сегментации _dl_runtime_resolve_xsavec с использованием boost::thread и броненосца

Сообщение Anonymous »

Я столкнулся с ошибкой сегментации, которая выглядит как какое-то странное взаимодействие между броненосцем и boost::thread.
Ошибка сегментации возникает во время раскрутки 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»