Metin2 Sunucularda "Core Dumped" Hatası Çözümü
Metin2 PVP sunucu yöneticilerinin en çok korktuğu ve kanalların (CH) aniden kapanmasına neden olan hataların başında "Core Dumped" (Çekirdek Çökmesi) gelir. Bu hata, sunucunun bellekte (RAM) işleyemeyeceği hatalı bir kod, geçersiz bir veritabanı sorgusu veya bozuk bir dosya ile karşılaşması sonucu kendini güvenliğe alarak kapatmasıdır. Adım adım bu sorunu nasıl çözeceğinizi aşağıda bulabilirsiniz.
1. Adım: Hangi Dosyanın Çöktüğünü Tespit Etme
Core dumped hatası aldığınızda, sunucu çöken klasörün içerisinegame.coreveyadb.coreadında büyük boyutlu bir dosya bırakır. Öncelikle sorunun kaynağını bulmalıyız:
- Filezilla ile sunucunuza bağlanın ve kanalların bulunduğu dizine gidin (Örn:
/usr/game/cores/channel1). - Klasör içinde game.core dosyasını görüyorsanız, hata oyun içi bir sistemden (C++ kaynak kodlarından veya hatalı bir map/item kullanımından) kaynaklıdır.
- Eğer
/usr/game/cores/dbiçinde db.core görüyorsanız, sorun tamamen Navicat veritabanındaki bozuk bir tablodan veya hatalı proto girdisinden kaynaklanmaktadır.
2. Adım: Hatalı Syserr Çıktısını Yakalama
Core Dumped hatası gerçekleştiği tam saniyede syserr.txt dosyasına kritik bir günlük bırakır. Hatanın çözümü için:
- Core dumped veren klasördeki (Örn: channel1) syserr dosyasını açın.
- Dosyanın en alt satırlarına giderek
CRASH,Segmentation FaultveyaAssertion failedkelimelerini aratın. - Burada yazan fonksiyon adı veya item kodu, size hangi sistemin sunucuyu çökerttiğini doğrudan gösterecektir. En son eklediğiniz sistemi veya questi devre dışı bırakarak kontrol edin.
3. Adım: GDB ile Core Dosyasını Analiz Etme (Teknik Yöntem)
Eğer syserr dosyasında hiçbir şey yazmıyorsa, FreeBSD üzerinde GDB (GNU Debugger) kullanarak çökmenin kaynağı olan C++ kod satırını bulabilirsiniz:
- Putty üzerinden çökme yaşanan dizine girin:
cd /usr/game/cores/channel1 - Terminalde şu komutu çalıştırarak debugger'ı başlatın:
gdb game game.core - Komut satırı açıldığında ekrana
btveyawhereyazıp Enter'a basın. - Ekrana gelecek olan listelemede, hataya sebep olan kaynak kod (source) dosyası ve satır numarası (Örn:
char_item.cpp:1452) listelenecektir. Source kısmından bu satırı düzelterek yeniden build almalısınız.
4. Adım: Sık Yapılan Hataları Gözden Geçirme
Eğer yakında hiçbir kod değişikliği yapmadıysanız, şu iki durumu kontrol edin:
- Tablo Bozulması: Navicat player veritabanındaki tablolar bozulmuş olabilir. Tüm tabloları seçip sağ tıklayarak Maintain -> Repair Tables -> Extended yapın.
- Sınır Aşımı (Stack Overflow): Oyuncuların yaptığı bir bug (Örn: Sınırsız vurma hilesi, pet bugu) sunucunun belleğini şişirip core dumped verdirebilir. Güncel koruma alt yapılarını (Guard) kullanın.
Bu makale PvPSunucusu için özel olarak hazırlanmıştır.