Çözüldü Db core hatası

  • Konuyu açan Konuyu açan poi
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 6
  • Gösterim Gösterim 284
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

poi

Üye
Üye
Mesaj
47
Çözümler
1
Beğeni
7
Puan
424
Ticaret Puanı
0
İyi forumlar herkese, db core dosyasını açınca şöyle bir hatayla karşılaştım ancak çözüme kavuşturamadım. Sanki ufak bir şeyi gözümden kaçırıyormuşum gibi hissediyorum ancak çözümü belki sizler bulabilirsiniz diye umuyorum.

gdb / bt full:
Genişlet Daralt Kopyala
(gdb) bt full
#0  0x2852ed5b in thr_kill () from /lib/libc.so.7
No symbol table info available.
#1  0x284c2a56 in pthread_sigmask () from /lib/libthr.so.3
No symbol table info available.
#2  0x284c32ab in raise () from /lib/libthr.so.3
No symbol table info available.
#3  0x285d96ba in abort () from /lib/libc.so.7
No symbol table info available.
#4  0x2861c7b0 in __gnu_cxx::__verbose_terminate_handler () from /usr/lib/libsupc++.so.1
No symbol table info available.
#5  0x2862101a in std::set_unexpected () from /usr/lib/libsupc++.so.1
No symbol table info available.
#6  0x28621062 in std::terminate () from /usr/lib/libsupc++.so.1
No symbol table info available.
#7  0x28620f5a in __cxa_throw () from /usr/lib/libsupc++.so.1
No symbol table info available.
#8  0x2861a76e in operator new () from /usr/lib/libsupc++.so.1
No symbol table info available.
#9  0x2846293d in operator new[] () from /usr/lib/libstdc++.so.6
No symbol table info available.
#10 0x08080d66 in CClientManager::InitializeShopTable (this=0xbfbfe37c) at ClientManagerBoot.cpp:501
        data = 0x0
        pRes2 = (SQLResult *) 0x29109130
        map_shop = {_M_t = {
    _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const int, SShopTable*> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const int, SShopTable*> > >> = {<No data fields>}, <No data fields>},
      _M_key_compare = {<> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red,
        _M_parent = 0x29102de0, _M_left = 0x29102d00, _M_right = 0x29106080}, _M_node_count = 28}}}
        shop_table = (TShopTable *) 0x2ae78900
        s_szQuery = 0x814bcf0 "SELECT shop.vnum, shop.npc_vnum, shop_item.item_vnum, shop_item.count FROM shop LEFT JOIN shop_item ON shop.vnum = shop_item.shop_vnum ORDER BY shop.vnum, shop_item.item_vnum"
        __FUNCTION__ = "InitializeShopTable"
#11 0x080820fe in CClientManager::InitializeTables (this=0xbfbfe37c) at ClientManagerBoot.cpp:40
        __FUNCTION__ = "InitializeTables"
#12 0x08063448 in CClientManager::Initialize (this=0xbfbfe37c) at ClientManager.cpp:111
        tmpValue = <value optimized out>
        szBindIP = "\023\000\000\000▒▒\\(t\005_(\000\000\000\000▒\206\001\000\000\000\000\000t\005_(▒\177`(▒\177`(▒߿▒q▒](\030\200`(\000▒\210(3\000\000\000t\005_(t\005_(\000\000\000\000▒߿▒Ӵ](▒\177`(▒+_(<X\024\b`p`(<X\024\b▒⿿\b࿿ڰ\023\b▒\177`(▒\177`(\030࿿\005\000\000\000▒⿿"
        iChinaEventServer = <value optimized out>
        __FUNCTION__ = "Initialize"
#13 0x0805512e in Start () at Main.cpp:381
        iRetry = 5
        tmpValue = 304
        heart_beat = 10
        szBuf = " \000tin1\000▒▒h}N(\000\f8(\t▒\004\b▒I<\a0▒\202\r ▒7(\001\000\000\000\000\f8(h}N(▒⿿▒7(\000\0008(x⿿▒῿▒▒6(▒▒@(\030\000\000\000T▒\201(\025\000\000\000▒\024A(\230῿<⿿\t▒\004\b▒I<\a0▒\202\r ▒7(\001\000\000\000\000\f8(h}N(▒⿿▒7(\000\0008(x⿿T⿿`▒6(\025,\024\b$⿿$⿿\034\000\000\000\n▒\005@\000\0008(\000\0028(\000\0048(\000\0068(\000\b8(\000\n8(\000\f8((▒\200"...
        iDisableHotBackup = -1077941192
        iIDStart = 100
        szAddr = "localhost\000\000\000\000\f8(4쿿▒뿿▒꿿X㿿▒^6(\000\0008(\000\006\000\000\000\000\000\000▒迿▒迿8쿿4쿿"
        szDB = "hotbackup\000▒▒\000\000\000\000X㿿▒\206\b\b\001\000\000\000▒▒6(▒7(▒⿿\024㿿▒뿿▒꿿\177\022\200(\000▒\200(▒▒\200("
        szUser = "mt2\000▒I<\a▒7(▒⿿▒▒6(\000▒7(h}N(▒⿿▒7(▒뿿▒7(\024㿿T▒6(\204▒7(▒⿿\004㿿"
        szPassword = "mt2\000▒῿\b\000\000\000\a\000\000\000▒7(\000\000\000\000\000\0008(▒⿿\001▒6(\000\0008(▒\000\000\000l▒\201(\017▒6(▒▒\200(▒\004\b\t▒\004\b"
        iPort = 3306
        line = "localhost hotbackup mt2 mt2 3306\000(▒~B\b\200\000\000\000\n\000\000\000▒~B\b\200\2306(▒DO(▒▒\004\b\000▒\201(▒~B\b@\000\000\000\006\000\000\000▒~B\b\000῿H῿▒▒N(\002\000\002\000▒7(\000\000\000\000\000\f8($῿▒▒6(\20---Type <return> to continue, or q <return> to quit---
1\005\000\000\004\000\000\000▒~B\b\002\000\000\000 \000\000\000▒~B\b\001\000\000\000\000῿YhU(\000\000\000\000@\rN(▒@U(t\005_(\021\000\000\000\004\000\000\000▒@U(t\005_(\024\000\000\000$⿿8῿Yh"...
        __FUNCTION__ = "Start"

InitializeShopTable'ın 501. satırını aşağıda vurguladım.

bool CClientManager::InitializeShopTable():
Genişlet Daralt Kopyala
bool CClientManager::InitializeShopTable()
{
    MYSQL_ROW    data;
    int        col;

    static const char * s_szQuery =
        "SELECT "
        "shop.vnum, "
        "shop.npc_vnum, "
        "shop_item.item_vnum, "
        "shop_item.count "
        "FROM shop LEFT JOIN shop_item "
        "ON shop.vnum = shop_item.shop_vnum ORDER BY shop.vnum, shop_item.item_vnum";

    std::auto_ptr<SQLMsg> pkMsg2(CDBManager::instance().DirectQuery(s_szQuery));

    // shopÀÇ vnumÀº Àִµ¥ shop_item ÀÌ ¾øÀ»°æ¿ì... ½ÇÆзΠó¸®µÇ´Ï ÁÖÀÇ ¿ä¸Á.
    // °íó¾ßÇҺκÐ
    SQLResult * pRes2 = pkMsg2->Get();

    if (!pRes2->uiNumRows)
    {
        sys_err("InitializeShopTable : Table count is zero.");
        return false;
    }

    std::map<int, TShopTable *> map_shop;

    if (m_pShopTable)
    {
        delete [] (m_pShopTable);
        m_pShopTable = NULL;
    }

    TShopTable * shop_table = m_pShopTable;

    while ((data = mysql_fetch_row(pRes2->pSQLResult)))
    {
        col = 0;

        int iShopVnum = 0;
        str_to_number(iShopVnum, data[col++]);

        if (map_shop.end() == map_shop.find(iShopVnum))
        {
            shop_table = new TShopTable;
            memset(shop_table, 0, sizeof(TShopTable));
            shop_table->dwVnum    = iShopVnum;

            map_shop[iShopVnum] = shop_table;
        }
        else
            shop_table = map_shop[iShopVnum];

        str_to_number(shop_table->dwNPCVnum, data[col++]);

        if (!data[col])    // ¾ÆÀÌÅÛÀÌ Çϳªµµ ¾øÀ¸¸é NULLÀÌ ¸®ÅÏ µÇ¹Ç·Î..
            continue;

        TShopItemTable * pItem = &shop_table->items[shop_table->byItemCount];

        str_to_number(pItem->vnum, data[col++]);
        str_to_number(pItem->count, data[col++]);

        ++shop_table->byItemCount;
    }

    m_pShopTable = new TShopTable[map_shop.size()];
    m_iShopTableSize = map_shop.size();

    typeof(map_shop.begin()) it = map_shop.begin();

    int i = 0;

    while (it != map_shop.end())
    {
        thecore_memcpy((m_pShopTable + i), (it++)->second, sizeof(TShopTable));
        sys_log(0, "SHOP: #%d items: %d", (m_pShopTable + i)->dwVnum, (m_pShopTable + i)->byItemCount);
        ++i;
    }

    return true;
}


InitializeShopTable'ın false döndüğü fark ettim ve bu da table count'unun 0 olduğunu belirtiyor sanırsam. Bunu görünce o zaman SQL Query'sinin hiçbir row'u dönmüyor olması gerektiğini düşündüm ancak hatadaki query'i navicat üzerinde executelayınca rowların döndüğünü gördüm. Shop ve shop_item table'ları databasede mevcut ve entryleri de var, sorunun database bağlantımda olabilceğini düşünüyorum ancak nasıl kontrol edebilirim bilemedim. Bilen biri yardımcı olabilirse sevinirim.

Bir de core'u incelerken en üstteki "no symbol table info available" yazısının çıkması normal mi acaba? Liblerde bir problem mi yaşıyorum yoksa bir sorun yaratmaz mı bilemedim de.


Bu da /usr/game/cores/db'deki conf.txt dosyam :

/usr/game/cores/db/conf.txt:
Genişlet Daralt Kopyala
WELCOME_MSG = "DB Server Acildi"

SQL_ACCOUNT = "localhost account mt2 mt2 3306"
SQL_PLAYER = "localhost player mt2 mt2 3306"
SQL_COMMON = "localhost common mt2 mt2 3306"
SQL_HOTBACKUP = "localhost hotbackup mt2 mt2 3306"

TABLE_POSTFIX = " "

BIND_PORT               = 15900
DB_SLEEP_MSEC           = 10
CLIENT_HEART_FPS        = 10
HASH_PLAYER_LIFE_SEC    = 600
BACKUP_LIMIT_SEC        = 3600
PLAYER_ID_START = 100
PLAYER_DELETE_LEVEL_LIMIT = 70

ITEM_ID_RANGE = 2000000000 2100000000

LOCALE = "latin1"
 
Çözüm
bir sıkıntı göremedim, m_pShopTable = new TShopTable[map_shop.size()]; kısmında çöküyor ama sorun arrayı oluştururken çıkıyor. map_shop boyutu çıktıya göre 28 ve 28 tane öğe oluştururken çöküyor.

new debug sembolü bulunmuyor sende. makefile ye -ggdb3 ekle ve öyle derle.
Sorunu çözdüm sadece nasıl çözdüğümü hatırlamıyorum, dün farklı yerlerde birden fazla fix attığım için ne yaparak çözdüm hatırlayamıyorum şu an ancak kodları chatgpt ile tartışarak çözmüştüm. Çözdüğüm hatalardan birinde, fix atınca aldığım farklı bir problem de çözülmüştü bu hata onlardan biri olabilir, o yüzden benzer bir sorunla karşılaşan olursa bu dediğimi deneyebilir. Tek hatırladığım sorunu makefile üzerinden çözmediğim, dümdüz cpp ve header dosyaları...
kod olarak attığınız için vurgu mesaj da belli olmuyor ya da en azından bende görünmüyor ancak aldığınız hata memory ile alakalı muhtemelen ram yetmediği için veriyor, değerleri kontrol edip tekrar dener misiniz?
 
kod olarak attığınız için vurgu mesaj da belli olmuyor ya da en azından bende görünmüyor ancak aldığınız hata memory ile alakalı muhtemelen ram yetmediği için veriyor, değerleri kontrol edip tekrar dener misiniz?
68. Satır hocam, hafif yeşil yanıyor.

Virtual Box'da 4gb ram verdim diye hatırlıyorum ancak eve gecince kontrol edip attırırım en kötü. Denedikten sonra sonucu yazarım, teşekkürler.
 
68. Satır hocam, hafif yeşil yanıyor.

Virtual Box'da 4gb ram verdim diye hatırlıyorum ancak eve gecince kontrol edip attırırım en kötü. Denedikten sonra sonucu yazarım, teşekkürler.
Sistem gereksinimi çok yüksektir hocam içerisi sistemlerle dolu ise diye düşünüyorum
 
C++:
Genişlet Daralt Kopyala
while ((data = mysql_fetch_row(pRes2->pSQLResult)))
    
--->>>

while ((data = mysql_fetch_row(pRes2->pSQLResult)) != NULL)

Kullandığınız C++ sürümünü bilmiyorum ama eğer güncel değilse bunu bir deneyin, görünürde Koray'ın bahsettiği bellek tüketimi haricinde bir sıkıntı göremedim.
 
bir sıkıntı göremedim, m_pShopTable = new TShopTable[map_shop.size()]; kısmında çöküyor ama sorun arrayı oluştururken çıkıyor. map_shop boyutu çıktıya göre 28 ve 28 tane öğe oluştururken çöküyor.

new debug sembolü bulunmuyor sende. makefile ye -ggdb3 ekle ve öyle derle.
 
bir sıkıntı göremedim, m_pShopTable = new TShopTable[map_shop.size()]; kısmında çöküyor ama sorun arrayı oluştururken çıkıyor. map_shop boyutu çıktıya göre 28 ve 28 tane öğe oluştururken çöküyor.

new debug sembolü bulunmuyor sende. makefile ye -ggdb3 ekle ve öyle derle.
Sorunu çözdüm sadece nasıl çözdüğümü hatırlamıyorum, dün farklı yerlerde birden fazla fix attığım için ne yaparak çözdüm hatırlayamıyorum şu an ancak kodları chatgpt ile tartışarak çözmüştüm. Çözdüğüm hatalardan birinde, fix atınca aldığım farklı bir problem de çözülmüştü bu hata onlardan biri olabilir, o yüzden benzer bir sorunla karşılaşan olursa bu dediğimi deneyebilir. Tek hatırladığım sorunu makefile üzerinden çözmediğim, dümdüz cpp ve header dosyaları üzerinde oynamalar yapmıştım.

Konuyu kapatabilirsiniz.
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Üst