Skip to content

feat(crash): поднимать RLIMIT_CORE и логировать core_pattern при старте#3451

Merged
bylins merged 1 commit into
masterfrom
feat/crash-diagnostics-coredump
Jun 14, 2026
Merged

feat(crash): поднимать RLIMIT_CORE и логировать core_pattern при старте#3451
bylins merged 1 commit into
masterfrom
feat/crash-diagnostics-coredump

Conversation

@bylins

@bylins bylins commented Jun 14, 2026

Copy link
Copy Markdown
Owner

Зачем

Краши на проде дают core-дамп, но в gdb стек — сплошные ?? (каша). Частая причина — core урезан по размеру: процесс стартует с маленьким мягким ulimit -c, ОС пишет неполный core, и gdb не может раскрутить стек.

Что

В signal_setup() (вызывается при старте мада) добавлено enable_coredumps_and_log():

  • поднимает мягкий RLIMIT_CORE до жёсткого (обычно unlimited) → ОС пишет полный core;
  • логирует в SYSLOG итоговый лимит (Core dumps: RLIMIT_CORE was … set cur=… max=…) и /proc/sys/kernel/core_pattern (Core pattern: …).

Так сразу видно при старте: пишутся ли коры, какой лимит, и куда они идут (файл рядом или pipe в обработчик типа systemd-coredump).

Обработчик сигналов (crash_handle) и backtrace НЕ трогаются.

Как смотреть на проде

После сборки в SYSLOG при старте появятся две строки. Если was 0 или маленький — это и была причина каши; теперь core будет полным. Если Core pattern начинается с | — коры уходят в обработчик (systemd-coredump → coredumpctl), а не в файл рядом с бинарём.

Проверка

ninja -C build — собирается чисто, без предупреждений.

🤖 Generated with Claude Code

@bylins bylins force-pushed the feat/crash-diagnostics-coredump branch from 0b910b0 to 1111f6b Compare June 14, 2026 15:54
При старте мада (signal_setup) поднимаем мягкий лимит RLIMIT_CORE до
жёсткого (обычно unlimited) и логируем итоговый лимит и /proc/sys/kernel/
core_pattern.

Зачем: если процесс стартует с маленьким мягким ulimit -c (на проде был 0),
ОС пишет урезанный/нулевой core, и в gdb он читается как каша (стек "??")
или дампа нет вовсе. Подъём лимита гарантирует полный читаемый core. Лог
лимита и core_pattern сразу показывает, пишутся ли коры и куда.

Аналог `ulimit -c unlimited` в скрипте запуска, но самодостаточно (не зависит
от окружения запуска) и с логированием. Обработчик сигналов и backtrace не
трогаются. <sys/resource.h> подключается только для не-Windows сборок.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bylins bylins force-pushed the feat/crash-diagnostics-coredump branch from 1111f6b to 26b0be5 Compare June 14, 2026 16:13
@bylins bylins merged commit 9fe683f into master Jun 14, 2026
20 checks passed
@bylins bylins deleted the feat/crash-diagnostics-coredump branch June 14, 2026 16:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant