Very bizarre behavior ARM64 (Pi3)

Karl Denninger karl at denninger.net
Mon Nov 13 16:33:02 UTC 2017


On 11/13/2017 10:26, Michal Meloun wrote:
>
> On 13.11.2017 16:54, Karl Denninger wrote:
>> On 11/12/2017 12:02, Karl Denninger wrote:
>>> I managed to get around the Crochet blow-up I reported the other day
>>> with another svn update, and now can Crochet myself a running image for
>>> the Pi3 which boots and (at least at first blush) works.
>>>
>>> But I have code that has been running on the Pi3 (and also on the Pi2,
>>> along with other architectures) for quite some time that no longer runs
>>> when compiled on that newly-built OS.  It compiles without warnings or
>>> errors but blows up immediately when executed.
>>>
>>> I just tried to roll that build forward to the newly-built (FreeBSD
>>> 12.0-CURRENT #0 r325681M: Fri Nov 10 19:31:28 CST 2017)  -HEAD and am
>>> getting really bizarre core dumps, including (if compiled using OpenSSL
>>> libraries) a crash on initialization claiming unknown opcodes in the
>>> compiled binary.
>>>
>>> root at rpi3:/data/HD-MCP # lldb hd-mcp
>>> (lldb) target create "hd-mcp"
>>> Current executable set to 'hd-mcp' (aarch64).
>>> (lldb) run -n
>>> Process 1101 launching
>>> Process 1101 launched: '/data/HD-MCP/hd-mcp' (aarch64)
>>> Process 1101 stopped
>>> * thread #1, name = 'hd-mcp', stop reason = signal SIGILL: illegal trap
>>>     frame #0: 0x00000000403342e8
>>> ->  0x403342e8: .long  0x0ee0e000                ; unknown opcode
>>>     0x403342ec: ret
>>>     0x403342f0: stp    x28, x19, [sp, #-0x20]!
>>>     0x403342f4: stp    x29, x30, [sp, #0x10]
>>> (lldb) bt
>>> * thread #1, name = 'hd-mcp', stop reason = signal SIGILL: illegal trap
>>>   * frame #0: 0x00000000403342e8
>>>     frame #1: 0x0000000040082ad8
>>>     frame #2: 0x0000000040081ab4
>>> (lldb)
>>>
> That is pretty standard behavior.
> 0x0ee0e000 opcode is optional pmull crypto extension instruction and
> OpenSSL tests the availability of these optional instructions in this way.
> It have SIGILL handler installed and if a signal is hit, it means that
> these extensions are not available.
> Simply hit 'c' and ignore it...
> Michal
>

Aha.  Got it.

However, this remains a problem and is linked, I suspect, to the above
bug report:

root at rpi3:/data/HD-MCP # lldb hd-mcp.freeware
(lldb) target create "hd-mcp.freeware"
Current executable set to 'hd-mcp.freeware' (aarch64).
(lldb) b 12752
Breakpoint 1: where = hd-mcp.freeware`main + 192 at hd-mcp.c:12752,
address = 0x0000000000040974

(12751 is the first "real" assignment in main(); so stop right after the
buffer is initialized)

(lldb) l 12751
   12751                x10_fail_event[0] = 0;
   12752                status_buffer[0] = 0;
   12753                status_mod = 0;
   12754
   12755                emit_html5_script[0] = 0;
   12756
   12757                int     dynamic_time;
   12758
   12759        #ifdef  OPENSSL
   12760                SSL     *ssl_socket;
(lldb) r -n
Process 1277 launching
Process 1277 launched: '/data/HD-MCP/hd-mcp.freeware' (aarch64)
Process 1277 stopped
* thread #1, name = 'hd-mcp.freeware', stop reason = breakpoint 1.1
    frame #0: 0x0000000000040974 hd-mcp.freeware`main(argc=2,
argv=0x0000ffffffffebc8) at hd-mcp.c:12752
   12749
   12750
   12751                x10_fail_event[0] = 0;
-> 12752                status_buffer[0] = 0;
   12753                status_mod = 0;
   12754
   12755                emit_html5_script[0] = 0;
(lldb) p x10_fail_event
Segmentation fault (core dumped)
root at rpi3:/data/HD-MCP #


-- 
Karl Denninger
karl at denninger.net <mailto:karl at denninger.net>
/The Market Ticker/
/[S/MIME encrypted email preferred]/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4897 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.freebsd.org/pipermail/freebsd-arm/attachments/20171113/0064dcab/attachment.bin>


More information about the freebsd-arm mailing list