[OmniOS-discuss] PowerDNS recursor SIGSEGV
Josef 'Jeff' Sipek
jeffpc at josefsipek.net
Sun Dec 6 14:45:14 UTC 2015
I compiled powerdns recursor [1] on 016, but I'm running into an occasional
SIGSEGV. The SIGSEGV is because of insufficiently aligned memory operand to an
instruction. (See the powerdns bug I filed for this [2].) The SIGSEGV actually
happens in the deque code which comes from boost (1.58.0 in this case).
Now, the weird thing... I compiled the same powerdns source with the same
version of boost on OI Hipster and OmniOS 016. Hipster uses gcc 4.9.3,
OmniOS 016 uses 5.1. The function that causes the SEGV on 016 looks totally
different between the two distros so I haven't see it die on my laptop.
Has anyone seen any strange SIGSEGVs in boost using software? I hope it isn't
some sort of gcc bug.
Thanks,
Jeff.
P.S. PowerDNS uses {get,set,swap}context, so I haven't ruled out a stack
alignment bug on their end.
[1] https://www.powerdns.com/
[2] https://github.com/PowerDNS/pdns/issues/3002
OmniOS 016:
_ZNKSt15_Deque_iteratorIcRcPcEmiEi: pushl %ebp
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+1: movl %esp,%ebp
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+3: pushl %ebx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+4: subl $0x1c,%esp
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+7: movl 0xc(%ebp),%eax
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0xa: movl 0x8(%ebp),%ebx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0xd: movdqu (%eax),%xmm0
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x11:movl 0x10(%ebp),%eax
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x14:movaps %xmm0,-0x18(%ebp)
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x18:negl %eax
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x1a:pushl %eax
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x1b:leal -0x18(%ebp),%eax
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x1e:pushl %eax
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x1f:call -0x94 <_ZNSt15_Deque_iteratorIcRcPcEpLEi>
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x24:movl (%eax),%edx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x26:addl $0x10,%esp
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x29:movl %edx,(%ebx)
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x2b:movl 0x4(%eax),%edx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x2e:movl %edx,0x4(%ebx)
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x31:movl 0x8(%eax),%edx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x34:movl 0xc(%eax),%eax
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x37:movl %edx,0x8(%ebx)
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x3a:movl %eax,0xc(%ebx)
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x3d:movl %ebx,%eax
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x3f:movl -0x4(%ebp),%ebx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x42:leave
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x43:ret $0x4
OI Hipster:
_ZNKSt15_Deque_iteratorIcRcPcEmiEi: pushl %ebp
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+1: pushl %edi
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+2: pushl %esi
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+3: pushl %ebx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+4: subl $0x14,%esp
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+7: movl 0x2c(%esp),%edx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0xb: movl 0x30(%esp),%ebx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0xf: movl 0x28(%esp),%eax
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x13:movl (%edx),%esi
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x15:movl 0x4(%edx),%ecx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x18:movl 0x8(%edx),%edi
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x1b:movl 0xc(%edx),%ebp
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x1e:movl %esi,%edx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x20:subl %ebx,%esi
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x22:subl %ecx,%edx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x24:subl %ebx,%edx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x26:cmpl $0x1ff,%edx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x2c:movl %esi,(%esp)
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x2f:jbe +0x21 <_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x52>
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x31:movl %edx,%ebx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x33:sarl $0x9,%ebx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x36:testl %edx,%edx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x38:jle +0x56 <_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x90>
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x3a:leal 0x0(%ebp,%ebx,4),%ebp
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x3e:movl 0x0(%ebp),%ecx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x41:shll $0x9,%ebx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x44:subl %ebx,%edx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x46:leal (%ecx,%edx),%esi
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x49:leal 0x200(%ecx),%edi
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x4f:movl %esi,(%esp)
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x52:movl %edi,0x4(%esp)
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x56:movd (%esp),%xmm0
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x5b:movl %ecx,(%esp)
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x5e:movd 0x4(%esp),%xmm1
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x64:movl %ebp,0x4(%esp)
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x68:movd (%esp),%xmm3
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x6d:punpckldq %xmm3,%xmm0
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x71:movd 0x4(%esp),%xmm2
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x77:punpckldq %xmm2,%xmm1
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x7b:punpcklqdq %xmm1,%xmm0
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x7f:movdqu %xmm0,(%eax)
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x83:addl $0x14,%esp
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x86:popl %ebx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x87:popl %esi
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x88:popl %edi
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x89:popl %ebp
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x8a:ret $0x4
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x8d:leal 0x0(%esi),%esi
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x90:movl %edx,%ebx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x92:shrl $0x9,%ebx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x95:orl $0xff800000,%ebx
_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x9b:jmp -0x63 <_ZNKSt15_Deque_iteratorIcRcPcEmiEi+0x3a>
--
I'm somewhere between geek and normal.
- Linus Torvalds
More information about the OmniOS-discuss
mailing list