ArcEmu: [HOWTO Linux] Reporting a Crash Dump - ArcEmu

Jump to content

Toggle shoutbox Lastest Announcements

dfighter  : (07 December 2014 - 12:06 PM) Arcemu is in hibernation mode, please read http://arcemu.org/fo...showtopic=26903
dfighter  : (01 January 2013 - 05:56 PM) Arcemu wishes you all a happy new year!
Hasbro  : (12 September 2012 - 10:01 AM) Please excuse our outage from the web! Our web host had a major malfunction!
dfighter  : (01 September 2012 - 04:05 PM) Since the spam bots just don't want to stop, I've enabled admin verification when registering.
dfighter  : (23 January 2012 - 09:56 PM) Please note that from now on you will need to confirm your email on the wiki in order to edit it!
Hasbro  : (31 December 2011 - 12:50 PM) Happy New Years all!
Navid  : (26 December 2011 - 04:09 AM) Merry Christmas !!!!!! Happy holidays all :)
WAmadeus  : (24 December 2011 - 03:54 PM) Merry Christmas to all!
dfighter  : (24 December 2011 - 11:05 AM) The Arcemu team wishes y'all a Merry Christmukkah!
Hasbro  : (05 October 2011 - 12:53 PM) Looking for web designers for upcoming web related project. If you're interested in designing user interfaces contact me
dfighter  : (02 September 2011 - 03:47 PM) So who here wants vehicles in Arcemu? :P http://arcemu.org/fo...showtopic=25440
Hasbro  : (14 August 2011 - 03:25 PM) Join us on irc, grab an irc client and connect to irc.freenode.net join channel #arcemu /server irc.freenode.net:6667 /join #arcemu
jackpoz  : (03 August 2011 - 05:33 AM) to all Lua Engine (old one) users: please check http://arcemu.org/fo...showtopic=25274
Hasbro  : (20 May 2011 - 05:27 PM) Looking for people experienced with CMake configuration and setup! Contact me asap
Hasbro  : (15 May 2011 - 05:03 PM) ArcEmu is recruiting C++ programmers, contact Hasbro if interested.
paroxysm  : (03 May 2011 - 06:26 PM) Updated luabridge gossip example to describe the whole gossip creation process rather than just how to create menu. Gossip tutorial
paroxysm  : (23 April 2011 - 11:35 AM) Lua writers can refer to the Luabridge Tutorials section in the Wiki to learn how to write gossip code correctly.
Hasbro  : (20 April 2011 - 05:22 PM) Thank you for your continuous contribution of bug reports, we are working on them.
Hasbro  : (17 April 2011 - 03:20 AM) Please consider donating to support our bills. Donations can be sent using PayPal to donations@arcemu.org - Thank you for your support.
paroxysm  : (10 April 2011 - 12:43 AM) Refer to the Luabridge Tutorials section in the Wiki to learn the new syntax of luabridge.
Resize Shouts Area

Page 1 of 1
  • You cannot start a new topic
  • This topic is locked

[HOWTO Linux] Reporting a Crash Dump

#1 User is offline   Locuz 

  • Member
  • Pip
  • Group: Members
  • Posts: 96
  • Joined: 07-June 08
  • Location:Germany

Posted 07 June 2008 - 07:52 PM

Linux HOWTO - Reporting a Crash Dump

General information:
You need to compile with "--enable-debug" to provide a complete crashdump. Example:
./configure --enable-debug
Install the gcc debug tool: "apt-get install gdb" (debian, ubuntu) or "yum install gdb" (fedora, centOS, redhat)


Create a Crash Dump
Goto *path_to_ascent*/bin.
Run: gdb ascent-world core.XXXXX --batch --eval-command="bt ful"
Replace core.XXXXX with your core dump filename

In addition:
You can use my automated tool to create instantly a crashdump after crash (next Post).


Informations
Please provide the following information:
  • Core Revision
  • Uptime
  • Reoccuring?
  • A complete crashdump
  • C++ code of the last one or two called methods

Highlight important information.


Example crashdump
Topic Title: [r280] MapCell::RemoveObjects
Topic Description: Crash on shutdown

MapCell::RemoveObjects - Crash on shutdown
Revision: 280
Uptime until crash: ~3h
Reoccuring: yes

############### Backtrace & locals ###############
Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".
Core was generated by `./ascent-world'.
Program terminated with signal 6, Aborted.
#0  0xffffe405 in __kernel_vsyscall ()
#0  0xffffe405 in __kernel_vsyscall ()
No symbol table info available.
#1  0xf7950811 in raise () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#2  0xf7951fb9 in abort () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#3  0xf7985dfa in __fsetlocking () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#4  0xf798d68f in mallopt () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#5  0xf798d732 in free () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#6  0xf7b4b3b1 in operator delete () from /usr/lib/libstdc++.so.6
No symbol table info available.
#7  0x08359dbf in ~EventableObject (this=0xd3caa078) at EventableObject.cpp:35
No locals.
#8  0x083e10a4 in [b]MapCell::RemoveObjects[/b] (this=0xbef13738) at [i]MapCell.cpp:156[/i]
   obj = (class Object *) 0xd3caa078
   itr = {_M_node = 0xbef13758}
   count = 6
#9  0x083e9ea1 in ~MapMgr (this=0xf00e1d10) at MapMgr.cpp:86
No locals.
#10 0x083e7be4 in MapMgr::Do (this=0xf00e1d10) at MapMgr.cpp:1506
   i = {_M_node = 0xf00e1d84}
   last_exec = 1197825284
   exec_time = 1
   exec_start = 1197825283
#11 0x083e7c0b in MapMgr::run (this=0xf00e1d10) at MapMgr.cpp:1382
   rv = false
#12 0x085a5fc5 in thread_proc (param=0xf2b7dbe0)
    at Threading/ThreadPool.cpp:323
   t = (Thread *) 0xf2b7dbe0
#13 0xf7a5e240 in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
No symbol table info available.
#14 0xf79f349e in clone () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.


############### Source ###############
MapCell.cpp:156
void MapCell::RemoveObjects()
{
   ObjectSet::iterator itr;
   uint32 count = 0;
   //uint32 ltime = getMSTime();

   /* delete objects in pending respawn state */
   for(itr = _respawnObjects.begin(); itr != _respawnObjects.end(); ++itr)
   {
      switch((*itr)->GetTypeId())
      {
      case TYPEID_UNIT: {
            if( !(*itr)->IsPet() )
            {
               _mapmgr->_reusable_guids_creature.push_back( (*itr)->GetUIdFromGUID() );
               static_cast< Creature* >( *itr )->m_respawnCell=NULL;
               delete static_cast< Creature* >( *itr );
            }
         }break;

      case TYPEID_GAMEOBJECT: {
         _mapmgr->_reusable_guids_gameobject.push_back( (*itr)->GetUIdFromGUID() );
         static_cast< GameObject* >( *itr )->m_respawnCell=NULL;
         delete static_cast< GameObject* >( *itr );
         }break;
      }
   }
   _respawnObjects.clear();

   //This time it's simpler! We just remove everything :)
   for(itr = _objects.begin(); itr != _objects.end(); )
   {
      count++;

      Object *obj = (*itr);

      itr++;

      if(!obj)
         continue;

      if( _unloadpending )
      {
         if(obj->GetTypeFromGUID() == HIGHGUID_TYPE_TRANSPORTER)
            continue;

         if(obj->GetTypeId()==TYPEID_CORPSE && obj->GetUInt32Value(CORPSE_FIELD_OWNER) != 0)
            continue;

         if(!obj->m_loadedFromDB)
            continue;
      }



      if( obj->Active )
         obj->Deactivate( _mapmgr );

      if( obj->IsInWorld() )
         obj->RemoveFromWorld( true );

[b][color="#FF0000"]      delete obj;[/color][/b]
   }

   _playerCount = 0;
   _loaded = false;
}

0

#2 User is offline   Locuz 

  • Member
  • Pip
  • Group: Members
  • Posts: 96
  • Joined: 07-June 08
  • Location:Germany

Posted 07 June 2008 - 07:59 PM

Automated tool
This tool starts and restarts the ascent core, create crashdumps and move logs

Create a file: run_world.sh
#!/bin/bash
#
# Auto Crashreport & Logrotation
# ( c ) Locuz

mkdir crashdumps -p
mkdir logs -p

while :; do

	echo "##### Start core"
       ./ascent-world

	echo "##### Create crashreport"
	gdb ascent-world core.* --batch --eval-command="bt ful" > crashdumps/dump_`date +%Y%m%d_%H:%M`.log
	rm core.*

	echo "##### Moving logs"
	mv logs/gmcommand.log logs/gm_`date +%Y%m%d_%H:%M`.log
	mv logs/cheaters.log logs/cheaters_`date +%Y%m%d_%H:%M`.log
done



Goto: *path_to_ascent*/bin
Run: chmod +x ./run_world.sh

Start the server with: screen -A -m -d -S ascent ./run_world.sh

You can detach the screen session by pressing ctrl+a+d
To retach the session type: screen -r ascent
0

#3 User is offline   Neo_mat 

  • drunken bear rider
  • PipPipPip
  • Group: Developers
  • Posts: 278
  • Joined: 07-June 08
  • Gender:Male
  • Server OS:Linux

Posted 11 June 2008 - 10:36 AM

Closed. Very nice guide for linux newbs. Good job!
Posted Image
Posted Image
Posted Image
I am 91% addicted to World of Warcraft. What about you?
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • This topic is locked

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users