Что означает «не удалось на карте сегмента от общего объекта»?

killall mpirun

или более конкретно для вашего случая:

ps -ef | grep mpirun | grep mylongprogram | awk '{print $2}' | while read p; do kill -9 $p ; done

1
23.01.2019, 21:00
1 ответ

Это сообщение генерируется динамическим компоновщиком(ld.so(8))или средствами динамической загрузки (dlopen(3)).

Чтобы ответить на ваши вопросы напрямую:a)это не из ядра b)это из процесса в пользовательском режиме c)обычно это не генерируется основным кодом программы, но динамическим компоновщиком, который его загружает, или динамической библиотекой, которую он использует(libdl.sod)тот факт, что сегмент может быть прочитан из файла, не означает, что он может быть mmapс соответствующей защитой (напр. исполняемый )или что он может быть mmaped по требуемому адресу (при использовании MAP_FIXEDс поддельным адресом вместо известного отображения, которое следует заменить ).

Если вам нужна дополнительная информация, вы увидите, что она определена в исходном коде glibc в elf/dl-load.hкакDL_MAP_SEGMENTS_ERROR_MAP_SEGMENTи может быть возвращена статической функцией _dl_map_segments(), которая сама вызывается через _dl_map_object()=> _dl_map_object_from_fd(), а _dl_map_object()вызывается либо непосредственно из динамического компоновщика, либо через его обратный вызов .dl_open, в конечном итоге вызываемый dlopen(3).

5
27.01.2020, 23:23

Теги

Похожие вопросы