Имя файла дампа ядра усечено - PullRequest
2 голосов
/ 09 ноября 2009

С учетом конфигурации в /proc/sys/kernel/core_pattern, установленной на /cores/core.%e.%p, дампы ядра именуются в соответствии с шаблоном, однако для процессов, выполняющих исполняемые файлы с длинными именами, например, SampleCrashApplication, созданный файл ядра будет содержать усеченное имя исполняемого файла: /cores/core.SampleCrashAppl.9933

Что вызывает это? Страница man core говорит только о максимальном размере результирующего имени файла ядра, равном 128 (64 для ядер до 2.6.19)

1 Ответ

3 голосов
/ 10 ноября 2009

Код для этого можно найти в exec.c здесь .

Код будет копировать имя ядра, основанное на шаблоне, вплоть до первого процента (данные / ядра / ядра.). В процентах он будет увеличивать и обрабатывать «е». Код для обработки части 'e' распечатывает шаблон, используя snprintf на основе структуры current-> comm.

Это имя исполняемого файла (исключая путь), значение которого равно TRUNCATED TASK_COMM_LEN . Так как он определен как 16 символов (по крайней мере, в ядре, которое я нашел), SampleCrashApplication усекается до 15 + 1 символов (1 для нулевого байта в конце), что объясняет, почему вы получаете свое усеченное имя дампа ядра.

На вопрос, почему эта структура усекает имя TASK_COMM_LEN, это более глубокий вопрос, но это что-то внутреннее для ядра, и здесь есть некоторые обсуждения здесь .

...