Странная проблема с boost 1.69.0 и openmpi 2.1.2 - PullRequest
1 голос
/ 28 мая 2020

Может ли кто-нибудь помочь мне разобраться в следующей ошибке segfault 11?

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x00000000004425e0 in boost::system::error_category::equivalent(boost::system::error_code const&, int) const ()
(gdb) where
#0  0x00000000004425e0 in boost::system::error_category::equivalent(boost::system::error_code const&, int) const ()
#1  0x0000000000414a58 in _GLOBAL__sub_I_operations.cpp ()
#2  0x000000000047d40d in __libc_csu_init ()
#3  0x00002aaaab9b24d5 in __libc_start_main (main=0x414730 <main>, argc=1, argv=0x7fffffff9b38, init=0x47d3c0 <__libc_csu_init>, fini=<optimized out>, 
    rtld_fini=<optimized out>, stack_end=0x7fffffff9b28) at ../csu/libc-start.c:225
#4  0x0000000000414a90 in _start ()

Ответы [ 2 ]

0 голосов
/ 05 июня 2020

Решение найдено здесь: Ошибка сегментации с boost :: filesystem

Я не скомпилировал boost с теми же флагами, что и мое приложение ... в частности, -std = c ++ 14.

0 голосов
/ 29 мая 2020

Похоже, что что-то могло вызвать ошибку до того, как были инициализированы данные c, например, для Boost System ¹.

Наиболее вероятным виновником в таком случае являются глобальные переменные с нетривиальными конструкторами .

Если конструкторы попытаются что-то сделать до запуска main, это может произойти, потому что соответствующая библиотека еще не инициализирована.

¹ см. «Stati c Порядок инициализации Fiasco»

...