Adium

Running Adium in GDB

If a developer asks you to recreate a crash while running in GDB, do the following (this assumes that Adium is installed to /Applications; if it is not, adjust references to /Applications accordingly)

  1. Load Terminal from /Applications/Utilities

Press return after each of the following steps (you may want to use copy & paste to ensure each line is correct). Do not include the numbers.

  1. gdb /Applications/Adium.app
  2. handle SIGPIPE nostop
  3. fb objc_exception_throw
  4. fb malloc_printf
  5. fb malloc_error_break
  6. fb szone_error
  7. set environment MallocBadFreeAbort 1
  8. run

If you are debugging a "freed object" crash (the developer will tell you if this is the case, based on your crash log), add the following commands before run:

  1. set environment NSZombieEnabled YES
  2. set environment CFZombieLevel 3
  3. fb -[NSZombie methodSignatureForSelector:]

Adium will launch - this will take a bit longer than usual. Use Adium normally until the crash occurs. Then switch back to Terminal and type

bt full

and send the developer (or post in the ticket) the output.

If you post the output to a ticket, please place {{{ and }}} around it, such as

{{{
#0  0x92e91c76 in mach_msg_trap ()
No symbol table info available.
#1  0x92e9a80b in mach_msg ()
No symbol table info available.
#2  0x94532319 in __CFRunLoopRun ()
No symbol table info available.
#3  0x94533d1f in CFRunLoopRunSpecific ()
No symbol table info available.
}}}