Рішення помилки «Core Dumped» на серверах Metin2
Одна з помилок, якої найбільше бояться адміністратори PVP-сервера Metin2 і яка спричиняє раптове закриття каналів (CH) "Core Dumped" (Core Crash) відбувається. Ця помилка виникає, коли сервер вимикається внаслідок виявлення помилкового коду, який він не може обробити в пам’яті (RAM), недійсного запиту до бази даних або пошкодженого файлу. Нижче ви знайдете крок за кроком, як вирішити цю проблему.
Крок 1: Виявлення файлу, який зазнав збою
Коли ви отримуєте повідомлення про помилку Core dumped, сервер поміщається в папку, яка вийшла з ладу.game.coreабоdb.coreВін залишає великий файл під назвою . Спочатку нам потрібно знайти джерело проблеми:
- Підключіться до свого сервера за допомогою Filezilla та перейдіть до каталогу, де розташовані канали (наприклад:
/usr/game/cores/channel1). - в папці game.core Якщо ви бачите файл, помилка викликана системою в грі (вихідні коди C++ або використання неправильної карти/елементу).
- якщо
/usr/game/cores/dbв db.core Якщо ви бачите його, проблема цілком спричинена пошкодженою таблицею або неправильним записом прото в базі даних Navicat.
Крок 2. Перехоплення помилкового виводу Syserr
Помилка Core Dumped залишає критичний журнал у файлі syserr.txt точно в секунду, коли вона виникає. Щоб вирішити помилку:
- У папці, яка дає дамп ядра (наприклад: канал1) syserr Відкрийте файл.
- Перехід до нижніх рядків файлу
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.