Решение ошибки «Core Dumped» на серверах Metin2
Одна из ошибок, которой больше всего опасаются администраторы PVP-серверов Metin2 и которая приводит к внезапному закрытию каналов (CH). «Ядро сброшено» (Core Crash) приходит. Эта ошибка возникает, когда сервер завершает работу в результате обнаружения ошибочного кода, который он не может обработать в памяти (ОЗУ), недопустимого запроса к базе данных или поврежденного файла. Ниже вы можете найти, как шаг за шагом решить эту проблему.
Шаг 1. Определение того, какой файл поврежден
Когда вы получаете ошибку дампа ядра, сервер помещается в поврежденную папку.game.coreилиdb.coreОн оставляет большой файл с именем . Сначала нам нужно найти источник проблемы:
- Подключитесь к своему серверу с помощью Filezilla и перейдите в каталог, в котором расположены каналы (например:
/usr/game/cores/channel1). - в папке игра.ядро Если вы видите файл, ошибка вызвана внутриигровой системой (исходные коды C++ или использование неправильной карты/предмета).
- Если
/usr/game/cores/dbвнутри db.core Если вы это видите, проблема полностью вызвана поврежденной таблицей или неправильной записью прототипа в базе данных Navicat.
Шаг 2. Захват ошибочного вывода Syserr
Ошибка Core Dumped оставляет критический журнал в файле syserr.txt ровно в ту секунду, когда она возникает. Чтобы устранить ошибку:
- В папке с дампом ядра (пример: канал1) сисерр Откройте файл.
- Переходим к нижним строкам файла
CRASH,Segmentation FaultилиAssertion failedНайдите слова. - Написанное здесь имя функции или код элемента напрямую покажут вам, какая система привела к сбою сервера. Проверьте это, отключив последнюю добавленную систему или квест.
Шаг 3. Анализ основного файла с помощью GDB (технический метод)
Если в файле syserr ничего не записано, вы можете использовать GDB (GNU Debugger) во FreeBSD, чтобы найти строку кода C++, вызывающую сбой:
- Введите каталог, в котором произошел сбой, через Putty:
cd /usr/game/cores/channel1 - Запустите отладчик, выполнив в терминале следующую команду:
gdb game game.core - Когда командная строка открыта, она появляется на экране
btилиwhereВведите его и нажмите Enter. - В списке, который появится на экране, укажите файл исходного кода и номер строки, вызвавшей ошибку (например:
char_item.cpp:1452) будут перечислены. Вам следует пересобрать, исправив эту строку в разделе «Источник».
Шаг 4. Рассмотрите распространенные ошибки
Если вы в последнее время не вносили никаких изменений в код, проверьте эти два случая:
- Повреждение таблицы: Таблицы в базе данных игроков Navicat могут быть повреждены. Выбор всех таблиц и щелчок правой кнопкой мыши Обслуживание -> Таблицы ремонта -> Расширенное сделай это.
- Переполнение стека: Ошибка, допущенная игроками (например, чит-код с неограниченным количеством ударов, ошибка с домашним животным), может привести к увеличению памяти сервера и вызвать сброс ядра. Используйте современные инфраструктуры защиты (Guard).
Эта статья специально подготовлена для PvPServer.