Thread 0 crashed with X86 Thread State (32-bit): in cocoa Application

4

I am doing crash fixing in an OS X application. The crash report shows

Date/Time: 2012-05-01 16:05:58.004 +0200
OS Version: Mac OS X 10.5.8 (9L31a)

Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000545f5f00
Crashed Thread: 8

Thread 8 crashed with X86 Thread State (32-bit):

eax: 0x140e0850 ebx: 0x00060fc8 ecx: 0x92df0ec0 edx: 0xc0000003
edi: 0x545f5f00 esi: 0x140e0870 ebp: 0xb0445988 esp: 0xb0445964
ss: 0x0000001f efl: 0x00010206 eip: 0x92dca68c cs: 0x00000017
ds: 0x0000001f es: 0x0000001f fs: 0x0000001f gs: 0x00000037
cr2: 0x545f5f00

How to tares the application code with this report?

What is Thread 0 crashed with X86 Thread State (32-bit)?

objective-c
macos
cocoa
osx-leopard
asked on Stack Overflow Jun 19, 2012 by John • edited Jan 19, 2020 by halfer

2 Answers

4

Take a look at Apple's Technical Notes on CrashReporter here: https://developer.apple.com/library/mac/#technotes/tn2004/tn2123.html

Thread 0 crashed with X86 Thread State (32-bit):
  eax: 0x00000000  ebx: 0x942cea07  ecx: 0xbfffed1c  edx: 0x94b3a8e6
  edi: 0x00000000  esi: 0x00000000  ebp: 0xbfffed58  esp: 0xbfffed1c
   ss: 0x0000001f  efl: 0x00010206  eip: 0x00000000   cs: 0x00000017
   ds: 0x0000001f   es: 0x0000001f   fs: 0x00000000   gs: 0x00000037
  cr2: 0x00000000

For Intel-based computers running 32-bit code, you should consider the following points:

Focus on two values: eip and the exception address (described earlier).

eip is the program counter at the time that the exception occurred. That is, it's the address of the instruction that caused the exception. For most non-memory access exceptions (for example, EXC_ARITHMETIC/EXC_I386_DIV caused by an integer division by zero), this is the key value.

For memory access exceptions:

If eip is equal to the exception address, the exception was caused by fetching instructions. Typically this means:

you've called a bogus function pointer (or, equivalently, called a method on a bogus object)

you've returned to a bad address which, in turn, means that you've corrupted the stack

If eip is not equal to the exception address, the exception was caused by a memory access instruction (in terms of C, this means that you're dereferencing an invalid pointer).

answered on Stack Overflow Jun 19, 2012 by self
0

You get info about the crash, including the reason of the crash (EXC_BAD_ACCESS in thread 8), the registers content, and backtraces for every thread.

Thread 8 crashed. In the part of the crash report you did not paste here, there are stack traces for every thread, including thread 8. Look at what it was doing and you might have a better idea of what happened.

answered on Stack Overflow Jun 19, 2012 by cdelacroix

User contributions licensed under CC BY-SA 3.0