[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Crashing in _Block_release
From: |
Jens Alfke |
Subject: |
Crashing in _Block_release |
Date: |
Wed, 29 Feb 2012 14:30:38 -0800 |
I’m hitting a nasty crash that I can reproduce by running a single one of my
unit tests. It’s impossible to “bt” at the point of the crash, but I was able
to narrow it down to a _Block_release call made while draining an autorelease
pool. Now I’m stuck, though — after the crash has occurred, the PC is bogus
(0x0019) and the stack is smashed, so I can’t tell what happened.
Any ideas, or suggestions how to debug further? The block does appear to be a
valid object before the call (see below).
One possible clue: gdb says the function is at blocks_runtime.m:283, but my
copy of blocks_runtime.m only has 261 lines and _Block_release is at line 234.
I hope there’s not a version mismatch between Base and the libobjc2 runtime;
what would be the best way to tell if there is?
—Jens
Breakpoint 1, _Block_release (src=<optimized out>, src=<optimized out>) at
blocks_runtime.m:283
283 {
(gdb) bt
#0 _Block_release (src=<optimized out>, src=<optimized out>) at
blocks_runtime.m:283
#1 0x0024578c in -[GSBlock release] (self=0x81b7330, _cmd=0x721ea8) at
GSBlocks.m:81
#2 0x002c7d01 in -[NSAutoreleasePool emptyPool] (self=0x8106f64,
_cmd=0x721e90) at NSAutoreleasePool.m:658
#3 0x002c7825 in -[NSAutoreleasePool dealloc] (self=0x8106f64, _cmd=0x721ee8)
at NSAutoreleasePool.m:538
#4 0x002c76a0 in -[NSAutoreleasePool drain] (self=0x8106f64, _cmd=0x8ff678) at
NSAutoreleasePool.m:519
#5 0x008b2841 in RunTestCase (test=0x8fec40) at vendor/MYUtilities/Test.m:69
#6 0x008b21f5 in RunTestCaseNamed (name=0xbffff439 "MYAfterDelay") at
vendor/MYUtilities/Test.m:83
#7 0x008b2396 in RunTestCases (argc=2, argv=0xbffff2a4) at
vendor/MYUtilities/Test.m:114
#8 0x08048752 in main (argc=2, argv=0xbffff2a4) at
Demo-Mac/EmptyGNUstepApp.m:29
(gdb) print [0x81b7330 retainCount]
$2 = 34
(gdb) finish
Run till exit from #0 _Block_release (src=<optimized out>, src=<optimized
out>) at blocks_runtime.m:283
Program received signal SIGSEGV, Segmentation fault.
0x00000019 in ?? ()
(gdb) bt
#0 0x00000019 in ?? ()
Backtrace stopped: Not enough registers or memory available to unwind further
(gdb)
- Crashing in _Block_release,
Jens Alfke <=