bind fails with sig11 on start / pthread failure on ARM?

Bernd Walter ticso at cicely7.cicely.de
Fri Feb 19 03:47:37 UTC 2010


On Fri, Feb 19, 2010 at 04:30:00AM +0100, Bernd Walter wrote:
> On Fri, Feb 19, 2010 at 04:12:00AM +0100, Bernd Walter wrote:
> > On Thu, Feb 18, 2010 at 03:10:10PM +0200, Kostik Belousov wrote:
> > > On Thu, Feb 18, 2010 at 01:49:07PM +0100, Bernd Walter wrote:
> > > > On Tue, Feb 16, 2010 at 07:39:51PM +0100, Bernd Walter wrote:
> > > > > On Mon, Feb 15, 2010 at 10:39:07PM +0100, Bernd Walter wrote:
> > [Switching to thread 4 (Thread 20804140 (LWP 100053))]#0  0x0015755c in isc_atomic_cmpxchg ()
> > (gdb) bt
> > #0  0x0015755c in isc_atomic_cmpxchg ()
> > #1  0x00157dac in isc_rwlock_lock ()
> > #2  0x000f9790 in dns_db_register ()
> > #3  0x0004d590 in dns_sdb_register ()
> > #4  0x0000c974 in ns_builtin_init ()
> > #5  0x0001aa90 in $a ()
> > #6  0x0001aa90 in $a ()
> > 
> > isc_atomic_cmpxchg really sounds quite interesting though.
> > It is not only the crashing function it is also a type of function which
> > sounds error prune.
> 
> For me it looks like a bug in bind itself.
> It is in contrib/bind9/lib/isc/arm/include/isc/atomic.h.
> My assumption is that either the assembly is broken or it gets an
> invalid pointer.
> I'm not very expirienced with ARM assembly.
> Warner - it names you in the copyright, so very likely you know this code.
> I will build a debug version of bind, but as usual it will take some
> time...

Maybe it helps in the meanwhile:
(gdb) disassemble 0x0015755c
Dump of assembler code for function isc_atomic_cmpxchg:
0x00157550 <isc_atomic_cmpxchg+0>:      mov     r3, r0
0x00157554 <isc_atomic_cmpxchg+4>:      sub     r0, pc, #8      ; 0x8
0x00157558 <isc_atomic_cmpxchg+8>:      mov     r12, #-536870908        ; 0xe0000004
0x0015755c <isc_atomic_cmpxchg+12>:     str     r0, [r12]
0x00157560 <isc_atomic_cmpxchg+16>:     mov     r12, #-536870904        ; 0xe0000008
0x00157564 <isc_atomic_cmpxchg+20>:     add     r0, pc, #12     ; 0xc
0x00157568 <isc_atomic_cmpxchg+24>:     str     r0, [r12]
0x0015756c <isc_atomic_cmpxchg+28>:     ldr     r0, [r3]
0x00157570 <isc_atomic_cmpxchg+32>:     cmp     r0, r1
0x00157574 <isc_atomic_cmpxchg+36>:     streq   r2, [r3]
0x00157578 <isc_atomic_cmpxchg+40>:     mov     r1, #0  ; 0x0
0x0015757c <isc_atomic_cmpxchg+44>:     mov     r12, #-536870908        ; 0xe0000004
0x00157580 <isc_atomic_cmpxchg+48>:     str     r1, [r12]
0x00157584 <isc_atomic_cmpxchg+52>:     mvn     r1, #0  ; 0x0
0x00157588 <isc_atomic_cmpxchg+56>:     mov     r12, #-536870904        ; 0xe0000008
0x0015758c <isc_atomic_cmpxchg+60>:     str     r1, [r12]
0x00157590 <isc_atomic_cmpxchg+64>:     mov     pc, lr
End of assembler dump.

Seems to be the str in line 57, which is crashing.

-- 
B.Walter <bernd at bwct.de> http://www.bwct.de
Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm.


More information about the freebsd-current mailing list