View Single Post
  #5  
Old 06-07-2009, 11:50 AM
Derision
Developer
 
Join Date: Feb 2004
Location: UK
Posts: 1,540
Default

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)
Reply With Quote