راه حل خطای Core Dumped در سرورهای Metin2
یکی از خطاهایی که مدیران سرور Metin2 PVP بیش از همه از آن می ترسند و باعث بسته شدن ناگهانی کانال ها (CH) می شود. "هسته دامپینگ" (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 در ثانیه ای که رخ می دهد باقی می گذارد. برای حل خطا:
- در پوشهای که هسته را تخلیه میکند (مثلاً: channel1) 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) فهرست خواهد شد. شما باید با تصحیح این خط در قسمت Source، دوباره بسازید.
مرحله 4: اشتباهات رایج را مرور کنید
اگر اخیراً هیچ تغییری در کد ایجاد نکرده اید، این دو مورد را بررسی کنید:
- فساد جدول: جداول موجود در پایگاه داده پخش کننده Navicat ممکن است خراب شده باشند. انتخاب همه جداول و کلیک راست Maintain -> Repair Tables -> Extended انجامش بده
- سرریز پشته: یک اشکال ایجاد شده توسط بازیکنان (به عنوان مثال، تقلب نامحدود، اشکال حیوان خانگی) ممکن است حافظه سرور را افزایش دهد و باعث تخلیه هسته شود. استفاده از زیرساخت های حفاظتی به روز (گارد).
این مقاله به طور ویژه برای PvPServer تهیه شده است.