As you are running Linux, you are well placed to try and track this down.
In a command prompt, before you run the script to start your zones, issue the command:
Code:
ulimit -c unlimited
to enable core dumps.
Run eqlaunch to start the zones, then when you get a crash, you will have a file called core or core.nnnnn (where nnnnn is a number) in the same directory as your zone executable.
Next fire up gdb in the same directory with the zone executable and the core dump
Code:
gdb ./zone <core dump file name>
At the (gdb) prompt, issue the command bt full. This will display a backtrace of the sequence of calls that lead up to the crash. You can copy and paste that here.
e.g.
Code:
Core was generated by `./zone dynamic_01 zones'.
Program terminated with signal 6, Aborted.
#0 0xb7f50410 in ?? ()
(gdb) bt full
#0 0xb7f50410 in ?? ()
No symbol table info available.
#1 0xbfb0ae3c in ?? ()
No symbol table info available.
#2 0x00000006 in ?? ()
No symbol table info available.
#3 0xb7b93c69 in abort () from /lib/libc.so.6
No symbol table info available.
#4 0x0818544d in command_optest (c=0x86bb8b8, sep=0xbfb0afcc) at command.cpp:850
No locals.
#5 0x081921ed in command_realdispatch (c=0x86bb8b8, message=0x86e720c "#optest") at command.cpp:657
sep = {argnum = 0, arg = 0x86ddd30, argplus = 0x86ddca0, msg = 0x84064b8 "#optest", maxargnum = 10}
cstr = {static npos = 4294967295,
_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
_M_p = 0x86b164c "optest"}}
cur = (._232 *) 0x83a4808
#6 0x080f04f7 in Client::ChannelMessageReceived (this=0x86bb8b8, chan_num=8 '\b', language=0 '\0', lang_skill=100 'd',
message=0x86e720c "#optest", targetname=0x86e7178 "") at client.cpp:846
sender = <value optimized out>
#7 0x081beae6 in Client::Handle_OP_ChannelMessage (this=0x3da0, app=0x86b15b0) at client_packet.cpp:2725
No locals.
#8 0x081cfe5d in Client::HandlePacket (this=0x86bb8b8, app=0x86b15b0) at client_packet.cpp:428
opcode = <value optimized out>
#9 0x080fc1bf in Client::Process (this=0x86bb8b8) at client_process.cpp:616
ranged = <value optimized out>
may_use_attacks = false
auto_attack_target = <value optimized out>
ret = true
app = (class EQApplicationPacket *) 0x0
#10 0x080df1c6 in EntityList::MobProcess (this=0x831de40) at entity.cpp:476
iterator = {list = @0x831de78, current_element = 0x86b1688, dir = FORWARD}
#11 0x08107359 in main (argc=Cannot access memory at address 0x3da0
) at net.cpp:494
error2 = 95 '_'
dbaw = <value optimized out>
zone_name = 0x82ae9ca "."
Config = (const ZoneConfig *) 0x838b4c0
retval = <value optimized out>
InterserverTimer = {start_time = 20024, timer_time = 10000, enabled = true, set_at_trigger = 10000, pUseAcurateTiming = false}
stream_identifier = {m_patches = {<std::_Vector_base<EQStreamIdentifier::Patch*,std::allocator<EQStreamIdentifier::Patch*> >> = {
_M_impl = {<std::allocator<EQStreamIdentifier::Patch*>> = {<__gnu_cxx::new_allocator<EQStreamIdentifier::Patch*>> = {<No data fields>}, <N---Type <return> to continue, or q <return> to quit---
o data fields>}, _M_start = 0x8496e48, _M_finish = 0x8496e60, _M_end_of_storage = 0x8496e68}}, <No data fields>},
m_streams = {<std::_Vector_base<EQStreamIdentifier::Record*,std::allocator<EQStreamIdentifier::Record*> >> = {
_M_impl = {<std::allocator<EQStreamIdentifier::Record*>> = {<__gnu_cxx::new_allocator<EQStreamIdentifier::Record*>> = {<No data fields>}, <No data fields>}, _M_start = 0x86b9888, _M_finish = 0x86b9888, _M_end_of_storage = 0x86b988c}}, <No data fields>}, m_identified = {
c = {<std::_Deque_base<EQStreamInterface*,std::allocator<EQStreamInterface*> >> = {
_M_impl = {<std::allocator<EQStreamInterface*>> = {<__gnu_cxx::new_allocator<EQStreamInterface*>> = {<No data fields>}, <No data fields>}, _M_map = 0x8420190, _M_map_size = 8, _M_start = {_M_cur = 0x842035c, _M_first = 0x8420358, _M_last = 0x8420558, _M_node = 0x842019c},
_M_finish = {_M_cur = 0x842035c, _M_first = 0x8420358, _M_last = 0x8420558, _M_node = 0x842019c}}}, <No data fields>}}}
quest_timers = {start_time = 23144, timer_time = 1000, enabled = true, set_at_trigger = 1000, pUseAcurateTiming = false}
worldwasconnected = true
eqss = (class EQStream *) 0x0
eqsi = (EQStreamInterface *) 0x0
temp_timer = {start_time = 23224, timer_time = 10, enabled = true, set_at_trigger = 10, pUseAcurateTiming = false}
(gdb)