PDA

View Full Version : Zone crashes - Looks buff related


N0ctrnl
05-28-2015, 11:29 AM
Hey all. So I've been having some random zone crashes lately. I have core files, but I admit I'm no good with gdb. If anybody can help guide me on debugging, I'd greatly appreciate it.

Here's what I've got from what little I have done in gdb so far

[root@freeport server]# gdb zone core.18529
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-64.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /ssd/server/zone...done.
[New LWP 18529]
[New LWP 18537]
[New LWP 18536]
[New LWP 18535]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `./zone dynamic_13 zone'.
Program terminated with signal 11, Segmentation fault.
#0 IsBlankSpellEffect (spellid=65535, effect_index=effect_index@entry=2) at /root/Server/common/spdat.cpp:479
479 formula = spells[spellid].formula[effect_index];
(gdb) backtrace full
#0 IsBlankSpellEffect (spellid=65535, effect_index=effect_index@entry=2) at /root/Server/common/spdat.cpp:479
effect = <optimized out>
base = 65535
formula = 2
#1 0x00000000009f9c5e in Mob::DoBuffTic (this=this@entry=0x4513b40, buff=..., slot=slot@entry=0, caster=0x4e2b870) at /root/Server/zone/spell_effects.cpp:3442
i = 2
effect = <optimized out>
effect_value = <optimized out>
spell = <optimized out>
#2 0x00000000009f1d19 in Mob::BuffProcess (this=this@entry=0x4513b40) at /root/Server/zone/spell_effects.cpp:3363
buffs_i = 0
buff_count = 26
#3 0x0000000000910440 in NPC::Process (this=0x4513b40) at /root/Server/zone/npc.cpp:593
bonus = <optimized out>
OOCRegen = <optimized out>
this = 0x4513b40
#4 0x0000000000738bfc in EntityList::MobProcess (this=0x1934700 <entity_list>) at /root/Server/zone/entity.cpp:472
id = 633
mob = 0x4513b40
p_val = true
#5 0x00000000006250e3 in main (argc=<optimized out>, argv=<optimized out>) at /root/Server/zone/net.cpp:424
retval = <optimized out>
eqss = std::shared_ptr (empty) 0x0
zone_name = <optimized out>
mmf = 0x37b8ea0
worldwasconnected = true
IDLEZONEUPDATE = 200 '\310'
ZONEUPDATE = 10 '\n'
Config = 0x37b3ed0
lua_parser = 0x38789b0
perl_parser = 0x3879440
InterserverTimer = {start_time = 36787598, timer_time = 10000, enabled = true, set_at_trigger = 10000, pUseAcurateTiming = false}
eqsi = <optimized out>
stream_identifier = {m_patches = std::vector of length 12, capacity 16 = {0x41ce1e0, 0x40f64c0, 0x41c9900, 0x39ceb20, 0x41ca000, 0x39d02e0, 0x41ca910, 0x39cf0a0, 0x41cb220, 0x3bf3300, 0x41cb7c0,
0x41c9f20}, m_streams = std::vector of length 0, capacity 1, m_identified = std::queue wrapping: std::deque with 0 elements}
quest_timers = {start_time = 36795849, timer_time = 100, enabled = true, set_at_trigger = 100, pUseAcurateTiming = false}
zoneupdate_timer = {start_time = 36795861, timer_time = 10, enabled = true, set_at_trigger = 10, pUseAcurateTiming = false}


Any thoughts?

Shendare
05-28-2015, 11:37 AM
Hm. Looks like line 479 of common/spdat.cpp tried to determine the spell information for Spell # 65535 (aka -1), so it wasn't determined higher in the pipeline that Spell -1 isn't a valid one to try to get info on.

N0ctrnl
05-28-2015, 11:38 AM
#0 IsBlankSpellEffect (spellid=65535, effect_index=effect_index@entry=2) at /root/Server/common/spdat.cpp:479
479 formula = spells[spellid].formula[effect_index];


This looks to me like it's looking for spell # 65535, which doesn't exist. That sound right?

demonstar55
05-28-2015, 01:18 PM
There are already guards in place for invalid spells (line 3409). But I'm guessing that since the Buffs_Struct uses an uint16 for spell ID this is causing issues. (Do you have a custom spell >65535?)

I will need to look into if changing it to a uint32 will cause any issues (or int32, we should really switch them all to 32-bits but yeah ...)

Shendare
05-28-2015, 01:25 PM
Hmm... good call. That could cause a problem.

There is actually another thread that seems to indicate that there may be problems with spells with an id above 32767, suggesting that somewhere hidden away there's a spellid reference that's an sint16, even.

dagulus2
05-28-2015, 02:19 PM
AFAIK you can't use spells with an ID above 32767 on any items (including spell scrolls) which is a bit of an issue.

N0ctrnl
05-28-2015, 03:40 PM
I did have a few spells above that number, but none were on any items. They just existed in the DB. I have nuked them and restarted everything. We'll see if that's any better.

N0ctrnl
05-29-2015, 10:26 AM
So that didn't fix it. Still got 2 zone crashes since yesterday. Same gdb output.

kimura
05-29-2015, 10:30 AM
yeah, i'm getting similar crashes recently with following crash log

[05-29-2015 :: 01:35:14] [Crash] c:\eqnew\source\common\spdat.cpp (477): IsBlankSpellEffect
[05-29-2015 :: 01:35:14] [Crash] c:\eqnew\source\zone\spell_effects.cpp (3442): Mob::DoBuffTic
[05-29-2015 :: 01:35:14] [Crash] c:\eqnew\source\zone\spell_effects.cpp (3365): Mob::BuffProcess
[05-29-2015 :: 01:35:14] [Crash] c:\eqnew\source\zone\client_process.cpp (611): Client::Process
[05-29-2015 :: 01:35:14] [Crash] c:\eqnew\source\zone\entity.cpp (475): EntityList::MobProcess
[05-29-2015 :: 01:35:14] [Crash] c:\eqnew\source\zone\net.cpp (425): main
[05-29-2015 :: 01:35:14] [Crash] f:\dd\vctools\crt\crtw32\startup\crt0.c (255): __tmainCRTStartup
[05-29-2015 :: 01:35:14] [Crash] ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 7533337A)
[05-29-2015 :: 01:35:14] [Crash] 7533337A (kernel32): (filename not available): BaseThreadInitThunk
[05-29-2015 :: 01:35:14] [Crash] ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 777D92E2)
[05-29-2015 :: 01:35:14] [Crash] 777D92E2 (ntdll): (filename not available): RtlInitializeExceptionChain
[05-29-2015 :: 01:35:14] [Crash] ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 777D92B5)
[05-29-2015 :: 01:35:14] [Crash] 777D92B5 (ntdll): (filename not available): RtlInitializeExceptionChain

started after recent source pull

N0ctrnl
06-05-2015, 11:27 AM
This has been fixed for me. Haven't had any zone crashes in several days now.