EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Support::Linux Servers (https://www.eqemulator.org/forums/forumdisplay.php?f=588)
-   -   Zone crashes - Looks buff related (https://www.eqemulator.org/forums/showthread.php?t=39710)

N0ctrnl 05-28-2015 11:29 AM

Zone crashes - Looks buff related
 
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
Code:

[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

Code:

#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

Code:

[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.


All times are GMT -4. The time now is 10:36 AM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.