[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Crashing in _Block_release

From: Jens Alfke
Subject: Re: Crashing in _Block_release
Date: Wed, 29 Feb 2012 15:14:37 -0800

I rebuilt libobjc2 without optimizations; now I can get a backtrace and more 
info when it crashes.

Program received signal SIGSEGV, Segmentation fault.
0x00000021 in ?? ()
(gdb) bt
#0  0x00000021 in ?? ()
#1  0x00b7608f in _Block_object_dispose (object=0x8193990, flags=8) at 
#2  0x008b1f29 in __destroy_helper_block_ () at 
#3  0x00b76335 in _Block_release (src=0x81b8368) at blocks_runtime.m:299
#4  0x0024576c in -[GSBlock release] (self=0x81b8368, _cmd=0x721f18) at 
#5  0x002c7dc1 in -[NSAutoreleasePool emptyPool] (self=0x8106f64, 
_cmd=0x721ea8) at NSAutoreleasePool.m:658
(gdb) frame 1
#1  0x00b7608f in _Block_object_dispose (object=0x8193990, flags=8) at 
208                                                     src->byref_dispose(src);
(gdb) print *src
$1 = {isa = 0x1, forwarding = 0x8193990, flags = 0, size = 20, byref_keep = 
0x8b3001 <_AssertAbstractMethodFailed+193>, byref_dispose = 0x21}

So the block has a byref_dispose function pointer with a highly bogus value.

I’m reassured that I’m running with the right libobjc2, because recompiling it 
with -O0 made a difference at runtime. I’m still a little confused by the fact 
that gnustep-base seems to have its own different copy of the runtime in 
Source/ObjectiveC2. I wonder if they have incompatible header files declaring 
block layout?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]