Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Bug Reports

Development::Bug Reports Post detailed bug reports and what you would like to see next in the emu here.

Reply
 
Thread Tools Display Modes
  #1  
Old 01-05-2011, 06:57 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default Zone crash with FillAAEffects()

Been seeing this crash occasionally on a few characters lately. The crash happens as soon as the "bugged" client tries to log in, every time. To resolve, I have been manually clearing out the AA that the crash reports is the cause directly in the character blob. I am not seeing the cause of this crash yet, but it only started a couple of weeks ago, so may be due to a recent change or maybe some DB issue with AAs. Not sure if any other server has seen this issue as well.

Code:
Core was generated by `./zone dynamic_21 zone'.
Program terminated with signal 6, Aborted.
[New process 27279]
[New process 27283]
[New process 27282]
[New process 27281]
[New process 27280]
#0 0xb774f424 in __kernel_vsyscall ()
(gdb) bt
#0 0xb774f424 in __kernel_vsyscall ()
#1 0xb71a6640 in raise () from /lib/i686/cmov/libc.so.6
#2 0xb71a8018 in abort () from /lib/i686/cmov/libc.so.6
#3 0xb71e348d in __libc_message () from /lib/i686/cmov/libc.so.6
#4 0xb71e9764 in malloc_printerr () from /lib/i686/cmov/libc.so.6
#5 0xb71eb6b3 in _int_free () from /lib/i686/cmov/libc.so.6
#6 0xb71eb966 in free () from /lib/i686/cmov/libc.so.6
#7 0xb74ac0a1 in my_no_flags_free () from /usr/lib/libmysqlclient.so.15
#8 0xb74d2c58 in mysql_free_result () from /usr/lib/libmysqlclient.so.15
#9 0x081fc347 in ZoneDatabase::FillAAEffects (this=0x8a04940, aa_struct=0x9294a20) at AA.cpp:1534
#10 0x081ff7c2 in Client::SendAA (this=0x92a79e0, id=0, seq=211) at AA.cpp:1154
#11 0x081ff832 in Client::SendAAList (this=0x92a79e0) at AA.cpp:1186
#12 0x08215ebf in Client::Handle_Connect_OP_SendAATable (this=0x92a79e0, app=0xae3ada20) at client_packet.cpp:597
#13 0x08216575 in Client::HandlePacket (this=0x92a79e0, app=0xae3ada20) at client_packet.cpp:425
#14 0x08129d91 in Client::Process (this=0x92a79e0) at client_process.cpp:724
#15 0x080f720a in EntityList::MobProcess (this=0x849b6e0) at entity.cpp:487
#16 0x08134a27 in main (argc=Cannot access memory at address 0x6a8f
) at net.cpp:493
(gdb) frame 9
#9 0x081fc347 in ZoneDatabase::FillAAEffects (this=0x8a04940, aa_struct=0x9294a20) at AA.cpp:1534
1534 mysql_free_result(result);
(gdb) frame 10
#10 0x081ff7c2 in Client::SendAA (this=0x92a79e0, id=0, seq=211) at AA.cpp:1154
1154 database.FillAAEffects(saa);
(gdb) print this->name
$1 = "Melchior", '\0' <repeats 55 times>
(gdb) print this->class_
$2 = 13 '\r'
(gdb) list
1149 saa->cost2 = 0;
1150 for(int i=0;i<value;i++){
1151 saa->cost2 += saa2->cost + (saa2->cost_inc * i);
1152 }
1153 }
1154 database.FillAAEffects(saa);
1155
1156 if(value > 0)
1157 {
1158 const AA_DBAction *caa = &AA_Actions[saa->id][value - 1];
(gdb) print saa
$3 = (SendAA_Struct *) 0x9294a20
(gdb) print saa->id
$4 = 674
(gdb) frame 9
#9 0x081fc347 in ZoneDatabase::FillAAEffects (this=0x8a04940, aa_struct=0x9294a20) at AA.cpp:1534
1534 mysql_free_result(result);
(gdb) list
1529 aa_struct->abilities[ndx].base1=atoi(row[1]);
1530 aa_struct->abilities[ndx].base2=atoi(row[2]);
1531 aa_struct->abilities[ndx].slot=atoi(row[3]);
1532 ndx++;
1533 }
1534 mysql_free_result(result);
1535 } else {
1536 LogFile->write(EQEMuLog::Error, "Error in Client::FillAAEffects query: '%s': %s", query, errbuf);
1537 }
1538 safe_delete_array(query);
(gdb) frame 8
#8 0xb74d2c58 in mysql_free_result () from /usr/lib/libmysqlclient.so.15
(gdb) list
1539 }
1540
1541 int32 ZoneDatabase::CountAAs(){
1542 char errbuf[MYSQL_ERRMSG_SIZE];
1543 char *query = 0;
1544 MYSQL_RES *result;
1545 MYSQL_ROW row;
1546 int count=0;
1547 if (RunQuery(query, MakeAnyLenString(&query, "SELECT count(title_sid) from altadv_vars"), errbuf, &result)) {
1548 if((row = mysql_fetch_row(result))!=NULL)
(gdb)

AA.cpp
Code:
void ZoneDatabase::FillAAEffects(SendAA_Struct* aa_struct){
        if(!aa_struct)
                return;

        char errbuf[MYSQL_ERRMSG_SIZE];
    char *query = 0;
    MYSQL_RES *result;
    MYSQL_ROW row;
        if (RunQuery(query, MakeAnyLenString(&query, "SELECT effectid, base1, base2, slot from aa_effects where aaid=%i order by slot asc", aa_struct->id), errbuf, &result)) {
                int ndx=0;
                while((row = mysql_fetch_row(result))!=NULL) {
                        aa_struct->abilities[ndx].skill_id=atoi(row[0]);
                        aa_struct->abilities[ndx].base1=atoi(row[1]);
                        aa_struct->abilities[ndx].base2=atoi(row[2]);
                        aa_struct->abilities[ndx].slot=atoi(row[3]);
                        ndx++;
                }
                mysql_free_result(result);
        } else {
                LogFile->write(EQEMuLog::Error, "Error in Client::FillAAEffects query: '%s': %s", query, errbuf);                       
        }
        safe_delete_array(query);
}
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 09:21 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3