今日のdalvik

デバッグ系のオプションをつけてビルドしてみた.
落ちるところが変わった.

00011400 <abort>:
   11400:	55                   	push   %ebp
   11401:	89 e5                	mov    %esp,%ebp
   11403:	57                   	push   %edi
   11404:	56                   	push   %esi
   11405:	53                   	push   %ebx
   11406:	e8 a4 a4 ff ff       	call   b8af <__i686.get_pc_thunk.bx>
   1140b:	81 c3 95 ab 03 00    	add    $0x3ab95,%ebx
   11411:	83 ec 3c             	sub    $0x3c,%esp
   11414:	8d 7d f0             	lea    -0x10(%ebp),%edi
   11417:	8b 83 a0 ff ff ff    	mov    -0x60(%ebx),%eax
   1141d:	8b 30                	mov    (%eax),%esi
   1141f:	c7 44 24 08 04 00 00 	movl   $0x4,0x8(%esp)
   11426:	00 
   11427:	c7 44 24 04 ff ff ff 	movl   $0xffffffff,0x4(%esp)
   1142e:	ff 

0x11427で落ちているらしい.assert で飛び込んできたものの,力尽きたと見える.

こりゃバッファオーバランかなにかですかねぇ.同じGCCでもARMとx86とでパディングの挙動が違っていたりして,ARMでは壊さないとか超アリそう.
確かに MarkSweep.c の辺りって,ptr2chunk とかいう,怪しい処理やってるんだよねぇ.GCデバッグ…イヤすぎる.