killall mpirun
или более конкретно для вашего случая:
ps -ef | grep mpirun | grep mylongprogram | awk '{print $2}' | while read p; do kill -9 $p ; done
Это сообщение генерируется динамическим компоновщиком(ld.so(8)
)или средствами динамической загрузки (dlopen(3)
).
Чтобы ответить на ваши вопросы напрямую:a)это не из ядра b)это из процесса в пользовательском режиме c)обычно это не генерируется основным кодом программы, но динамическим компоновщиком, который его загружает, или динамической библиотекой, которую он использует(libdl.so
)и d)тот факт, что сегмент может быть прочитан из файла, не означает, что он может быть mmap
с соответствующей защитой (напр. исполняемый )или что он может быть mmap
ed по требуемому адресу (при использовании 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)
.