SIGILL running 1.14 on macOS

341 views
Skip to first unread message

James Pettyjohn

unread,
Feb 26, 2020, 1:29:33 PM2/26/20
to golang-nuts
I am trying to run go1.14 on macOS 10.13.2 with on a late 2009 iMac with an i7 but always get the same crash:


SIGILL: illegal instruction
PC
=0x1066040 m=0 sigcode=1


goroutine
1 [running, locked to thread]:
runtime
.asyncPreempt()
       
/usr/local/go/src/runtime/preempt_amd64.s:8 fp=0xc000058ef0 sp=0xc000058ee8 pc=0x1066040
fmt
.init()
       
/usr/local/go/src/fmt/scan.go:465 fp=0xc000058ef8 sp=0xc000058ef0 pc=0x10e6540
runtime
.doInit(0x1a80520)
       
/usr/local/go/src/runtime/proc.go:5414 +0x8a fp=0xc000058f28 sp=0xc000058ef8 pc=0x1043aca
runtime
.doInit(0x1a80ec0)
       
/usr/local/go/src/runtime/proc.go:5409 +0x57 fp=0xc000058f58 sp=0xc000058f28 pc=0x1043a97
runtime
.doInit(0x1a850c0)
       
/usr/local/go/src/runtime/proc.go:5409 +0x57 fp=0xc000058f88 sp=0xc000058f58 pc=0x1043a97
runtime
.main()
       
/usr/local/go/src/runtime/proc.go:190 +0x1ce fp=0xc000058fe0 sp=0xc000058f88 pc=0x103702e
runtime
.goexit()
       
/usr/local/go/src/runtime/asm_amd64.s:1373 +0x1 fp=0xc000058fe8 sp=0xc000058fe0 pc=0x10647d1


rax    
0x1a80520
rbx    
0xb
rcx    
0x0
rdx    
0x1a80578
rdi    
0xc0000b2020
rsi    
0x10e6540
rbp    
0xc000058f18
rsp    
0xc000058ee8
r8    
0x3277901
r9    
0x203000
r10    
0x8
r11    
0x55
r12    
0x1
r13    
0x55555555555555
r14    
0x171acac
r15    
0x38
rip    
0x1066040
rflags
0x10202
cs    
0x2b
fs    
0x0
gs    
0x0


Which appears to be a call to VZEROUPPER in preempt_amd64.s.

This was not the case in rc1, which runs just fine. I get the same results from installing it with brew, .pkg and .tgz installs - have done the install from source yet.

Any tips would be appreciated.

James Pettyjohn

unread,
Feb 26, 2020, 2:00:24 PM2/26/20
to golang-nuts
A little further digging shows that VZEROUPPER is part of the AVX instruction set, not supported on any Apple computers prior to 2011 from what I can tell.

Given the rc1 code worked fine, that could be an alternative for Darwin where the CPU does not support AVX. While not ideal, I'd argue it's better than cutting off support for these machines which can run High Sierra. Once support for High Sierra is dropped then it should not matter as it takes a 2013 or later model to run anything after High Sierra.

- James

James Pettyjohn

unread,
Feb 26, 2020, 2:36:27 PM2/26/20
to golang-nuts
Looks like this was already resolved for 1.14.1.

Jon Conradt

unread,
Feb 29, 2020, 10:10:34 PM2/29/20
to golang-nuts
I am looking forward to 1.14.1, this ruined my Saturday. :(

Jon Conradt

unread,
Mar 4, 2020, 4:16:13 PM3/4/20
to golang-nuts
You can follow the progress toward 1.14.1 via https://github.com/golang/go/milestone/137

Looking at 1.13.0 and 1.12.0 it looks like the time between a .0 release and a .0 release is about three weeks. So I'm hoping for a St. Patrick's Day releases of 1.14.1

Jon

James Pettyjohn

unread,
Mar 17, 2020, 1:42:26 PM3/17/20
to golang-nuts
Sooner the better, it's crept into downstream packages. E.g. docker installed via brew is toast as it was built in 1.14.

David Riley

unread,
Mar 17, 2020, 2:07:42 PM3/17/20
to James Pettyjohn, golang-nuts
On Feb 26, 2020, at 2:00 PM, James Pettyjohn <japet...@gmail.com> wrote:
>
> A little further digging shows that VZEROUPPER is part of the AVX instruction set, not supported on any Apple computers prior to 2011 from what I can tell.
>
> Given the rc1 code worked fine, that could be an alternative for Darwin where the CPU does not support AVX. While not ideal, I'd argue it's better than cutting off support for these machines which can run High Sierra. Once support for High Sierra is dropped then it should not matter as it takes a 2013 or later model to run anything after High Sierra.

There are quite a lot of extant machines running Nehalem-generation Xeons (55/56xx) and routers running older Atoms that don't support AVX. I had a similar problem with the Suricata package for OpenBSD.


- Dave

Reply all
Reply to author
Forward
0 new messages