[solved] не создаётся core-file под пользователем

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

Ответить
IMB
Сообщения: 2559
ОС: Debian

[solved] не создаётся core-file под пользователем

Сообщение IMB »

Доброго дня!
Имеется приложение которое падает с segfault при работе под пользователем, при работе под root-м проблемы нет. Для сохранения core-file были выполнены следующие действия

Shell

ulimit -c unlimited
echo /path/to/core_%e.%p > /proc/sys/kernel/core_pattern
Приложение было повторно запущено пользователем, упало с segfault, но core-file не создался.
Почему и как это можно починить?
Спасибо.

P.S. работа ведётся на ARM-based устройстве с linux-3.10.33
Последний раз редактировалось IMB 08.04.2022 13:08, всего редактировалось 1 раз.
Спасибо сказали:
Аватара пользователя
Zer0
Сообщения: 479
ОС: Void, Slackware

Re: не создаётся core-file под пользователем

Сообщение Zer0 »

Можно попытаться выловить проблему с помощью команды strace.
Memento mori ... сделай бэкап.
Спасибо сказали:
IMB
Сообщения: 2559
ОС: Debian

Re: не создаётся core-file под пользователем

Сообщение IMB »

Крайне не тривильно, приложение многопоточное и использует множество либ.
Смотрел, но не увидел проблемы.
Спасибо сказали:
Аватара пользователя
Zer0
Сообщения: 479
ОС: Void, Slackware

Re: не создаётся core-file под пользователем

Сообщение Zer0 »

IMB писал(а):
08.04.2022 11:24
Крайне не тривильно
Да, это долгий процесс. Я иногда сталкиваюсь при переносе программ на другой комп, с проблемой недостаточности привилегий, а т. к. софт разный и часто самописный, то приходиться выяснять куда оно лезет и чего ему не хватает. Как вариант, накрыть прогу apparmor-ом, указав куда ей можно, а остальное запретить.

Несколько примеров применения strace: 1, 2 .
Добавлено (12:02):
Возникла ещё одна мысль: Запустить Вашу программу от рута, сохнанить лог strace с помощью ключа -o /путь/к/логу/underrroot.log.
Затем из под пользователя, и тоже сохранить лог /путь/к/логу/underuser.log, ну и сравнить оба лога, посмотреть на каком этапе падает.
Последний раз редактировалось Zer0 08.04.2022 12:26, всего редактировалось 2 раза.
Memento mori ... сделай бэкап.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: не создаётся core-file под пользователем

Сообщение Bizdelnick »

А у пользователя есть права на запись в /path/to/?
Что говорит ulimit -c под пользователем и под рутом?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
IMB
Сообщения: 2559
ОС: Debian

Re: не создаётся core-file под пользователем

Сообщение IMB »

права на место создания core-file есть

установленные ограничения

Shell

~ $ ulimit -a
-f: file size (blocks) unlimited
-t: cpu time (seconds) unlimited
-d: data seg size (kb) unlimited
-s: stack size (kb) 8192
-c: core file size (blocks) 0
-m: resident set size (kb) unlimited
-l: locked memory (kb) 64
-p: processes 1270
-n: file descriptors 1024
-v: address space (kb) unlimited
-w: locks unlimited
-e: scheduling priority 0
-r: real-time priority 0
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: не создаётся core-file под пользователем

Сообщение Bizdelnick »

IMB писал(а):
08.04.2022 12:24

Shell

-c: core file size (blocks) 0
Ну и чего Вы хотите? ☺
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
IMB
Сообщения: 2559
ОС: Debian

Re: не создаётся core-file под пользователем

Сообщение IMB »

Ах ты ж, спасибо.
Похоже параметры установленные root-не применяются

изначально

Shell

~ # ulimit -a
-f: file size (blocks) unlimited
-t: cpu time (seconds) unlimited
-d: data seg size (kb) unlimited
-s: stack size (kb) 8192
-c: core file size (blocks) 0
-m: resident set size (kb) unlimited
-l: locked memory (kb) 64
-p: processes 1270
-n: file descriptors 1024
-v: address space (kb) unlimited
-w: locks unlimited
-e: scheduling priority 0
-r: real-time priority 0
снимаем ограничения

Shell

~ # ulimit -c unlimited
~ # ulimit -a
-f: file size (blocks) unlimited
-t: cpu time (seconds) unlimited
-d: data seg size (kb) unlimited
-s: stack size (kb) 8192
-c: core file size (blocks) unlimited
-m: resident set size (kb) unlimited
-l: locked memory (kb) 64
-p: processes 1270
-n: file descriptors 1024
-v: address space (kb) unlimited
-w: locks unlimited
-e: scheduling priority 0
-r: real-time priority 0
проверяем под пользователем

Shell

~ $ ulimit -a
-f: file size (blocks) unlimited
-t: cpu time (seconds) unlimited
-d: data seg size (kb) unlimited
-s: stack size (kb) 8192
-c: core file size (blocks) 0
-m: resident set size (kb) unlimited
-l: locked memory (kb) 64
-p: processes 1270
-n: file descriptors 1024
-v: address space (kb) unlimited
-w: locks unlimited
-e: scheduling priority 0
-r: real-time priority 0
но пользователь может сам изменить параметры

Shell

~ $ ulimit -c unlimited
~ $ ulimit -a
-f: file size (blocks) unlimited
-t: cpu time (seconds) unlimited
-d: data seg size (kb) unlimited
-s: stack size (kb) 8192
-c: core file size (blocks) unlimited
-m: resident set size (kb) unlimited
-l: locked memory (kb) 64
-p: processes 1270
-n: file descriptors 1024
-v: address space (kb) unlimited
-w: locks unlimited
-e: scheduling priority 0
-r: real-time priority 0
осталось только решить вопрос /proc/sys/kernel/core_pattern в который может писать только root
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: [solved] не создаётся core-file под пользователем

Сообщение Bizdelnick »

IMB писал(а):
08.04.2022 13:07
Похоже параметры установленные root-не применяются
Нет, конечно. Они вообще только дочерними процессами наследуются.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 900
ОС: debian, fedora (i3-wm)

Re: [solved] не создаётся core-file под пользователем

Сообщение olecya »

IMB писал(а):
08.04.2022 13:07
осталось только решить вопрос /proc/sys/kernel/core_pattern в который может писать только root
Немного непонятно. Установите пакет systemd-coredump с утилитой coredumpctl и строка формата в файле /proc/sys/kernel/core_pattern появится:

Shell

>sudo sysctl kernel.core_pattern
kernel.core_pattern = core
>sudo apt install systemd-coredump
>sudo sysctl kernel.core_pattern
kernel.core_pattern = |/lib/systemd/systemd-coredump %P %u %g %s %t 9223372036854775808 %h
>cat /proc/sys/kernel/core_pattern
|/lib/systemd/systemd-coredump %P %u %g %s %t 9223372036854775808 %h
Все, в этот файл больше ничего не будет писаться.
Через coredumpctl даже можно запускать gdb, например с последним дампом сброшенным на диск:

Shell

coredumpctl gdb -1
И не надо разархивировать и разжимать вручную. Ну и так далее. Скину вам свои старые заметки, не хочу сейчас в них разбираться, может найдете что-то полезное:

Код: Выделить всё

man 5 core
man 8 systemd-coredump

sysctl kernel.core_pattern

/var/spool/abrt/*/coredump

coredumpctl list
##cd /var/lib/systemd/coredump/
##lz4 -d core.test.*
##gdb test -c core.test.*
tar -I zstd -xvf archive.tar.zst #apt intall zstd
unzstd filename.tar.zst
#or
zstd -d filename.tar.zst
objdump -Cd core.test.*

#debug the latest dump
coredumpctl debug #coredumpctl gdb -1
#or
coredumpctl debug <PID> #coredumpctl gdb <PID> #from coredumpctl list

#extract archive into file bar.coredump
coredumpctl -o bar.coredump dump 4344
objdump -Cd bar.coredump
readelf -Wa bar.coredump
Спасибо сказали:
Ответить