Ошибка сегмента программы вокруг std :: pmr :: synchronized_pool_resource - PullRequest
1 голос
/ 21 июня 2020

Программа ничего не делает, кроме прощания с миром:

/* Ubuntu 18.04 with GCC 10.1.0 and libstdc++-10-dev */

#include <memory_resource>
#include <concepts>
#include <ranges>
#include <string_view>

/* declare global memory resource */
std::pmr::synchronized_pool_resource pool;

int main(int argv, char * argc[]){

    std::puts("Goodbye World!");

}

Компилируется нормально, но завершается SEGV на

/usr/include/c++/10/memory_resource

строке 445, в конструкторе SPR:

synchronized_pool_resource()
: synchronized_pool_resource(pool_options(), get_default_resource())

[Неизвестный / скомпилированный точно в срок] (Неизвестный источник: 0) libstdc ++. So.6! Std :: pmr :: synchronized_pool_resource :: synchronized_pool_resource (std :: pmr :: pool_options const &, std :: pmr :: memory_resource *) (Неизвестный источник: 0) std :: pmr :: synchronized_pool_resource :: synchronized_pool_resource (std :: pmr :: synchronized_pool_resource * const this) (/ usr / include / c ++ / 10 / ресурс_памяти: 445) __static_initialization_and_destruction_0 (int __initialize_p, int __priority) (/data/solution/projects/test/source/main.cpp:10) _GLOBAL__sub_I__Z4testRNSt3pmr26synchronized_source_pub_I__Z4testRNSt3pmr26synchronized_source_sync_source_set/resource_sync_sync_source_sync_sync_sync_source_syn сpаcсpесpацесоpаcтpы / cинхронизиpованныx данных / пул (/pcpcpcpc/sync_source/sync_source_sync_source/resource_sync_sync_source/sync_source) / / 1030 *: 16) __libc_csu_init (Неизвестный источник: 0) lib c .so.6! __ libc_start_main (int () (int, char **, char **) main, int arg c, char * * argv, int () (int, char **, char **) ini t, void () (void) fini, void () (void) rtld_fini, void * stack_end) (/build/glibc-OTsEL5/glibc-2.27/csu/libc -start. c: 266) _start (Неизвестный источник: 0)

Цепочка вызовов в стеке объясняет мне, что программа могла быть связана с libstdc ++. So.6. Это возможная причина, и если да, что мне делать?

Я использовал

GNU gdb (Ubuntu 8.2-0ubuntu1 ~ 18.04) 8.2

для отладки. Может быть, потому, что GDB не готов к этому?

BTW: Я действительно не мог использовать этот редактор для прошлых изображений. Он просто не появляется.

1 Ответ

1 голос
/ 15 июля 2020

Вам нужно добавить -pthread к вызову связывания g ++. Я не могу винить вас, если вы думаете, что должно быть понятное сообщение об ошибке…

...