go: runtime: "fatal error: runtime: name offset out of range" on Android 6.0.1 arm64-v8a

What version of Go are you using (go version)?

$ go version
go version go1.14 windows/amd64

Does this issue reproduce with the latest release?

Not sure

What operating system and processor architecture are you using (go env)?

go env Output
$ go env

set GO111MODULE= set GOARCH=amd64 set GOBIN= set GOCACHE=C:\Users\User\AppData\Local\go-build set GOENV=C:\Users\User\AppData\Roaming\go\env set GOEXE=.exe set GOFLAGS= set GOHOSTARCH=amd64 set GOHOSTOS=windows set GOINSECURE= set GONOPROXY= set GONOSUMDB= set GOOS=windows set GOPATH=C:\Users\User\go set GOPRIVATE= set GOPROXY=https://proxy.golang.org,direct set GOROOT=C:\sdev\Go set GOSUMDB=sum.golang.org set GOTMPDIR= set GOTOOLDIR=C:\sdev\Go\pkg\tool\windows_amd64 set GCCGO=gccgo set AR=ar set CC=gcc set CXX=g++ set CGO_ENABLED=1 set GOMOD= set CGO_CFLAGS=-g -O2 set CGO_CPPFLAGS= set CGO_CXXFLAGS=-g -O2 set CGO_FFLAGS=-g -O2 set CGO_LDFLAGS=-g -O2 set PKG_CONFIG=pkg-config set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\User\AppData\Local\Temp\go-build666510838=/tmp/go-build -gno-record-gcc-switches

What did you do?

Cross-Compiled rclone for Android and ran it there inside of an app (original issue: https://github.com/x0b/rcx/issues/58). About 2% of arm64-v8a devices seem to be affected, no complaints from the rest.

Build Commands/Env:

set CC=android-sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\aarch64-linux-android21-clang.cmd
set CC_FOR_TARGET=android-sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\aarch64-linux-android21-clang.cmd
set GOOS=android
set GOARCH=arm64
set CGO_ENABLED=1

go build -tags linux -o ../app/lib/arm64-v8a/librclone.so github.com/rclone/rclone

Run Env

Chipset: Qualcomm MSM8956 Snapdragon 650
Android: 6.0.1 / API 23 / CM 13.0-20171215-UNOFFICIAL-kenzo
Kernel: Linux version 3.10.108-SecuRadon-v6.1.1 (gismo@zeus) (gcc version 4.9.x-google 20140827 (prerelease) (GCC) ) #1 SMP PREEMPT Fri Dec 15 23:40:05 EET 2017

Run command

rclone -vvv listremotes

What did you expect to see?

Normal program operation.

What did you see instead?

fatal error: runtime: name offset out of range
2020-05-02 14:25:06 - runtime: nameOff 0x7d987be0 out of range 0x557d85a9c0 - 0x557dcf37c0
fatal error: runtime: name offset out of range

goroutine 1 [running, locked to thread]: runtime.throw(0x557d533189, 0x21) C:/sdev/Go/src/runtime/panic.go:1112 +0x4c fp=0x40000c99f0 sp=0x40000c99c0 pc=0x557c983d04 runtime.resolveNameOff(0x557da531a0, 0x7d987be0, 0x557d8634c8) C:/sdev/Go/src/runtime/type.go:195 +0x290 fp=0x40000c9a60 sp=0x40000c99f0 pc=0x557c9ab888 reflect.resolveNameOff(0x557da531a0, 0x557d987be0, 0x557d8634c8) C:/sdev/Go/src/runtime/runtime1.go:482 +0x28 fp=0x40000c9a90 sp=0x40000c9a60 pc=0x557c9955f0 reflect.(*rtype).nameOff(…) C:/sdev/Go/src/reflect/type.go:683 reflect.implements(0x557da531a0, 0x557d9ffe40, 0x0) C:/sdev/Go/src/reflect/type.go:1520 +0x3bc fp=0x40000c9be0 sp=0x40000c9a90 pc=0x557c9e1914 reflect.(*rtype).Implements(0x557d9ffe40, 0x557dcc7ca0, 0x557da531a0, 0x557ce18900) C:/sdev/Go/src/reflect/type.go:1437 +0x60 fp=0x40000c9c10 sp=0x40000c9be0 pc=0x557c9e1348 encoding/gob.implementsInterface(0x557dcc7ca0, 0x557dbae2c0, 0x557dcc7ca0, 0x557da531a0, 0x0) C:/sdev/Go/src/encoding/gob/type.go:142 +0x128 fp=0x40000c9c60 sp=0x40000c9c10 pc=0x557ce18f00 encoding/gob.validUserType(0x557dcc7ca0, 0x557dbae2c0, 0x557e701640, 0x557c95c848, 0x40002092c0) C:/sdev/Go/src/encoding/gob/type.go:90 +0x2f0 fp=0x40000c9cf0 sp=0x40000c9c60 pc=0x557ce18c18 encoding/gob.userType(0x557dcc7ca0, 0x557dbae2c0, 0x557dbae2c0) C:/sdev/Go/src/encoding/gob/type.go:152 +0x28 fp=0x40000c9d40 sp=0x40000c9cf0 pc=0x557ce18fb0 encoding/gob.mustGetTypeInfo(0x557dcc7ca0, 0x557dbae2c0, 0x557dcc7ca0) C:/sdev/Go/src/encoding/gob/type.go:766 +0x28 fp=0x40000c9d90 sp=0x40000c9d40 pc=0x557ce1c6a0 encoding/gob.init() C:/sdev/Go/src/encoding/gob/type.go:259 +0x1bcc fp=0x40000c9e30 sp=0x40000c9d90 pc=0x557ce1fce4 runtime.doInit(0x557e69dcc0) C:/sdev/Go/src/runtime/proc.go:5414 +0x94 fp=0x40000c9e70 sp=0x40000c9e30 pc=0x557c99314c runtime.doInit(0x557e69cdc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9eb0 sp=0x40000c9e70 pc=0x557c993108 runtime.doInit(0x557e6a8cc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9ef0 sp=0x40000c9eb0 pc=0x557c993108 runtime.doInit(0x557e6a7bc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9f30 sp=0x40000c9ef0 pc=0x557c993108 runtime.doInit(0x557e697520) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9f70 sp=0x40000c9f30 pc=0x557c993108 runtime.main() C:/sdev/Go/src/runtime/proc.go:190 +0x1d0 fp=0x40000c9fd0 sp=0x40000c9f70 pc=0x557c986a88 runtime.goexit() C:/sdev/Go/src/runtime/asm_arm64.s:1148 +0x4 fp=0x40000c9fd0 sp=0x40000c9fd0 pc=0x557c9b477c

fatal error: runtime: name offset out of range
2020-05-02 14:25:06 - runtime: nameOff 0x64e88be0 out of range 0x5564d5b9c0 - 0x55651f47c0
fatal error: runtime: name offset out of range

goroutine 1 [running, locked to thread]: runtime.throw(0x5564a34189, 0x21) C:/sdev/Go/src/runtime/panic.go:1112 +0x4c fp=0x400014f9f0 sp=0x400014f9c0 pc=0x5563e84d04 runtime.resolveNameOff(0x5564f541a0, 0x64e88be0, 0x5564d644c8) C:/sdev/Go/src/runtime/type.go:195 +0x290 fp=0x400014fa60 sp=0x400014f9f0 pc=0x5563eac888 reflect.resolveNameOff(0x5564f541a0, 0x5564e88be0, 0x5564d644c8) C:/sdev/Go/src/runtime/runtime1.go:482 +0x28 fp=0x400014fa90 sp=0x400014fa60 pc=0x5563e965f0 reflect.(*rtype).nameOff(…) C:/sdev/Go/src/reflect/type.go:683 reflect.implements(0x5564f541a0, 0x5564f00e40, 0x0) C:/sdev/Go/src/reflect/type.go:1520 +0x3bc fp=0x400014fbe0 sp=0x400014fa90 pc=0x5563ee2914 reflect.(*rtype).Implements(0x5564f00e40, 0x55651c8ca0, 0x5564f541a0, 0x5564319900) C:/sdev/Go/src/reflect/type.go:1437 +0x60 fp=0x400014fc10 sp=0x400014fbe0 pc=0x5563ee2348 encoding/gob.implementsInterface(0x55651c8ca0, 0x55650af2c0, 0x55651c8ca0, 0x5564f541a0, 0x0) C:/sdev/Go/src/encoding/gob/type.go:142 +0x128 fp=0x400014fc60 sp=0x400014fc10 pc=0x5564319f00 encoding/gob.validUserType(0x55651c8ca0, 0x55650af2c0, 0x5565c02640, 0x5563e5d848, 0x40000912c0) C:/sdev/Go/src/encoding/gob/type.go:90 +0x2f0 fp=0x400014fcf0 sp=0x400014fc60 pc=0x5564319c18 encoding/gob.userType(0x55651c8ca0, 0x55650af2c0, 0x55650af2c0) C:/sdev/Go/src/encoding/gob/type.go:152 +0x28 fp=0x400014fd40 sp=0x400014fcf0 pc=0x5564319fb0 encoding/gob.mustGetTypeInfo(0x55651c8ca0, 0x55650af2c0, 0x55651c8ca0) C:/sdev/Go/src/encoding/gob/type.go:766 +0x28 fp=0x400014fd90 sp=0x400014fd40 pc=0x556431d6a0 encoding/gob.init() C:/sdev/Go/src/encoding/gob/type.go:259 +0x1bcc fp=0x400014fe30 sp=0x400014fd90 pc=0x5564320ce4 runtime.doInit(0x5565b9ecc0) C:/sdev/Go/src/runtime/proc.go:5414 +0x94 fp=0x400014fe70 sp=0x400014fe30 pc=0x5563e9414c runtime.doInit(0x5565b9ddc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x400014feb0 sp=0x400014fe70 pc=0x5563e94108 runtime.doInit(0x5565ba9cc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x400014fef0 sp=0x400014feb0 pc=0x5563e94108 runtime.doInit(0x5565ba8bc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x400014ff30 sp=0x400014fef0 pc=0x5563e94108 runtime.doInit(0x5565b98520) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x400014ff70 sp=0x400014ff30 pc=0x5563e94108 runtime.main() C:/sdev/Go/src/runtime/proc.go:190 +0x1d0 fp=0x400014ffd0 sp=0x400014ff70 pc=0x5563e87a88 runtime.goexit() C:/sdev/Go/src/runtime/asm_arm64.s:1148 +0x4 fp=0x400014ffd0 sp=0x400014ffd0 pc=0x5563eb577c

fatal error: runtime: name offset out of range
2020-05-02 14:27:31 - runtime: nameOff 0x7fa05be0 out of range 0x557f8d89c0 - 0x557fd717c0
fatal error: runtime: name offset out of range

goroutine 1 [running, locked to thread]: runtime.throw(0x557f5b1189, 0x21) C:/sdev/Go/src/runtime/panic.go:1112 +0x4c fp=0x40000c99f0 sp=0x40000c99c0 pc=0x557ea01d04 runtime.resolveNameOff(0x557fad11a0, 0x7fa05be0, 0x557f8e14c8) C:/sdev/Go/src/runtime/type.go:195 +0x290 fp=0x40000c9a60 sp=0x40000c99f0 pc=0x557ea29888 reflect.resolveNameOff(0x557fad11a0, 0x557fa05be0, 0x557f8e14c8) C:/sdev/Go/src/runtime/runtime1.go:482 +0x28 fp=0x40000c9a90 sp=0x40000c9a60 pc=0x557ea135f0 reflect.(*rtype).nameOff(…) C:/sdev/Go/src/reflect/type.go:683 reflect.implements(0x557fad11a0, 0x557fa7de40, 0x0) C:/sdev/Go/src/reflect/type.go:1520 +0x3bc fp=0x40000c9be0 sp=0x40000c9a90 pc=0x557ea5f914 reflect.(*rtype).Implements(0x557fa7de40, 0x557fd45ca0, 0x557fad11a0, 0x557ee96900) C:/sdev/Go/src/reflect/type.go:1437 +0x60 fp=0x40000c9c10 sp=0x40000c9be0 pc=0x557ea5f348 encoding/gob.implementsInterface(0x557fd45ca0, 0x557fc2c2c0, 0x557fd45ca0, 0x557fad11a0, 0x0) C:/sdev/Go/src/encoding/gob/type.go:142 +0x128 fp=0x40000c9c60 sp=0x40000c9c10 pc=0x557ee96f00 encoding/gob.validUserType(0x557fd45ca0, 0x557fc2c2c0, 0x558077f640, 0x557e9da848, 0x4000285300) C:/sdev/Go/src/encoding/gob/type.go:90 +0x2f0 fp=0x40000c9cf0 sp=0x40000c9c60 pc=0x557ee96c18 encoding/gob.userType(0x557fd45ca0, 0x557fc2c2c0, 0x557fc2c2c0) C:/sdev/Go/src/encoding/gob/type.go:152 +0x28 fp=0x40000c9d40 sp=0x40000c9cf0 pc=0x557ee96fb0 encoding/gob.mustGetTypeInfo(0x557fd45ca0, 0x557fc2c2c0, 0x557fd45ca0) C:/sdev/Go/src/encoding/gob/type.go:766 +0x28 fp=0x40000c9d90 sp=0x40000c9d40 pc=0x557ee9a6a0 encoding/gob.init() C:/sdev/Go/src/encoding/gob/type.go:259 +0x1bcc fp=0x40000c9e30 sp=0x40000c9d90 pc=0x557ee9dce4 runtime.doInit(0x558071bcc0) C:/sdev/Go/src/runtime/proc.go:5414 +0x94 fp=0x40000c9e70 sp=0x40000c9e30 pc=0x557ea1114c runtime.doInit(0x558071adc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9eb0 sp=0x40000c9e70 pc=0x557ea11108 runtime.doInit(0x5580726cc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9ef0 sp=0x40000c9eb0 pc=0x557ea11108 runtime.doInit(0x5580725bc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9f30 sp=0x40000c9ef0 pc=0x557ea11108 runtime.doInit(0x5580715520) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9f70 sp=0x40000c9f30 pc=0x557ea11108 runtime.main() C:/sdev/Go/src/runtime/proc.go:190 +0x1d0 fp=0x40000c9fd0 sp=0x40000c9f70 pc=0x557ea04a88 runtime.goexit() C:/sdev/Go/src/runtime/asm_arm64.s:1148 +0x4 fp=0x40000c9fd0 sp=0x40000c9fd0 pc=0x557ea3277c

fatal error: fault
2020-05-02 14:27:31 - unexpected fault address 0x55252305a1
fatal error: fault
[signal SIGSEGV: segmentation violation code=0x1 addr=0x55252305a1 pc=0x5591a0899c]

goroutine 1 [running, locked to thread]: runtime.throw(0x55925295ff, 0x5) C:/sdev/Go/src/runtime/panic.go:1112 +0x4c fp=0x40000c9a50 sp=0x40000c9a20 pc=0x55919aad04 runtime.sigpanic() C:/sdev/Go/src/runtime/signal_unix.go:694 +0x37c fp=0x40000c9a80 sp=0x40000c9a50 pc=0x55919c1a14 reflect.name.name(…) C:/sdev/Go/src/reflect/type.go:495 reflect.implements(0x5592a7a1a0, 0x5592a26e40, 0x0) C:/sdev/Go/src/reflect/type.go:1523 +0x444 fp=0x40000c9be0 sp=0x40000c9a90 pc=0x5591a0899c reflect.(*rtype).Implements(0x5592a26e40, 0x5592ceeca0, 0x5592a7a1a0, 0x5591e3f900) C:/sdev/Go/src/reflect/type.go:1437 +0x60 fp=0x40000c9c10 sp=0x40000c9be0 pc=0x5591a08348 encoding/gob.implementsInterface(0x5592ceeca0, 0x5592bd52c0, 0x5592ceeca0, 0x5592a7a1a0, 0x0) C:/sdev/Go/src/encoding/gob/type.go:142 +0x128 fp=0x40000c9c60 sp=0x40000c9c10 pc=0x5591e3ff00 encoding/gob.validUserType(0x5592ceeca0, 0x5592bd52c0, 0x5593728640, 0x5591983848, 0x4000091780) C:/sdev/Go/src/encoding/gob/type.go:90 +0x2f0 fp=0x40000c9cf0 sp=0x40000c9c60 pc=0x5591e3fc18 encoding/gob.userType(0x5592ceeca0, 0x5592bd52c0, 0x5592bd52c0) C:/sdev/Go/src/encoding/gob/type.go:152 +0x28 fp=0x40000c9d40 sp=0x40000c9cf0 pc=0x5591e3ffb0 encoding/gob.mustGetTypeInfo(0x5592ceeca0, 0x5592bd52c0, 0x5592ceeca0) C:/sdev/Go/src/encoding/gob/type.go:766 +0x28 fp=0x40000c9d90 sp=0x40000c9d40 pc=0x5591e436a0 encoding/gob.init() C:/sdev/Go/src/encoding/gob/type.go:259 +0x1bcc fp=0x40000c9e30 sp=0x40000c9d90 pc=0x5591e46ce4 runtime.doInit(0x55936c4cc0) C:/sdev/Go/src/runtime/proc.go:5414 +0x94 fp=0x40000c9e70 sp=0x40000c9e30 pc=0x55919ba14c runtime.doInit(0x55936c3dc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9eb0 sp=0x40000c9e70 pc=0x55919ba108 runtime.doInit(0x55936cfcc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9ef0 sp=0x40000c9eb0 pc=0x55919ba108 runtime.doInit(0x55936cebc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9f30 sp=0x40000c9ef0 pc=0x55919ba108 runtime.doInit(0x55936be520) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9f70 sp=0x40000c9f30 pc=0x55919ba108 runtime.main() C:/sdev/Go/src/runtime/proc.go:190 +0x1d0 fp=0x40000c9fd0 sp=0x40000c9f70 pc=0x55919ada88 runtime.goexit() C:/sdev/Go/src/runtime/asm_arm64.s:1148 +0x4 fp=0x40000c9fd0 sp=0x40000c9fd0 pc=0x55919db77c

fatal error: runtime: name offset out of range
2020-05-02 14:27:32 - runtime: nameOff 0x7c3d8be0 out of range 0x557c2ab9c0 - 0x557c7447c0
fatal error: runtime: name offset out of range

goroutine 1 [running, locked to thread]: runtime.throw(0x557bf84189, 0x21) C:/sdev/Go/src/runtime/panic.go:1112 +0x4c fp=0x40000c99f0 sp=0x40000c99c0 pc=0x557b3d4d04 runtime.resolveNameOff(0x557c4a41a0, 0x7c3d8be0, 0x557c2b44c8) C:/sdev/Go/src/runtime/type.go:195 +0x290 fp=0x40000c9a60 sp=0x40000c99f0 pc=0x557b3fc888 reflect.resolveNameOff(0x557c4a41a0, 0x557c3d8be0, 0x557c2b44c8) C:/sdev/Go/src/runtime/runtime1.go:482 +0x28 fp=0x40000c9a90 sp=0x40000c9a60 pc=0x557b3e65f0 reflect.(*rtype).nameOff(…) C:/sdev/Go/src/reflect/type.go:683 reflect.implements(0x557c4a41a0, 0x557c450e40, 0x0) C:/sdev/Go/src/reflect/type.go:1520 +0x3bc fp=0x40000c9be0 sp=0x40000c9a90 pc=0x557b432914 reflect.(*rtype).Implements(0x557c450e40, 0x557c718ca0, 0x557c4a41a0, 0x557b869900) C:/sdev/Go/src/reflect/type.go:1437 +0x60 fp=0x40000c9c10 sp=0x40000c9be0 pc=0x557b432348 encoding/gob.implementsInterface(0x557c718ca0, 0x557c5ff2c0, 0x557c718ca0, 0x557c4a41a0, 0x0) C:/sdev/Go/src/encoding/gob/type.go:142 +0x128 fp=0x40000c9c60 sp=0x40000c9c10 pc=0x557b869f00 encoding/gob.validUserType(0x557c718ca0, 0x557c5ff2c0, 0x557d152640, 0x557b3ad848, 0x40001a7300) C:/sdev/Go/src/encoding/gob/type.go:90 +0x2f0 fp=0x40000c9cf0 sp=0x40000c9c60 pc=0x557b869c18 encoding/gob.userType(0x557c718ca0, 0x557c5ff2c0, 0x557c5ff2c0) C:/sdev/Go/src/encoding/gob/type.go:152 +0x28 fp=0x40000c9d40 sp=0x40000c9cf0 pc=0x557b869fb0 encoding/gob.mustGetTypeInfo(0x557c718ca0, 0x557c5ff2c0, 0x557c718ca0) C:/sdev/Go/src/encoding/gob/type.go:766 +0x28 fp=0x40000c9d90 sp=0x40000c9d40 pc=0x557b86d6a0 encoding/gob.init() C:/sdev/Go/src/encoding/gob/type.go:259 +0x1bcc fp=0x40000c9e30 sp=0x40000c9d90 pc=0x557b870ce4 runtime.doInit(0x557d0eecc0) C:/sdev/Go/src/runtime/proc.go:5414 +0x94 fp=0x40000c9e70 sp=0x40000c9e30 pc=0x557b3e414c runtime.doInit(0x557d0eddc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9eb0 sp=0x40000c9e70 pc=0x557b3e4108 runtime.doInit(0x557d0f9cc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9ef0 sp=0x40000c9eb0 pc=0x557b3e4108 runtime.doInit(0x557d0f8bc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9f30 sp=0x40000c9ef0 pc=0x557b3e4108 runtime.doInit(0x557d0e8520) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9f70 sp=0x40000c9f30 pc=0x557b3e4108 runtime.main() C:/sdev/Go/src/runtime/proc.go:190 +0x1d0 fp=0x40000c9fd0 sp=0x40000c9f70 pc=0x557b3d7a88 runtime.goexit() C:/sdev/Go/src/runtime/asm_arm64.s:1148 +0x4 fp=0x40000c9fd0 sp=0x40000c9fd0 pc=0x557b40577c

fatal error: runtime: name offset out of range
2020-05-02 14:27:32 - runtime: nameOff 0x65f18be0 out of range 0x5565deb9c0 - 0x55662847c0
fatal error: runtime: name offset out of range

goroutine 1 [running, locked to thread]: runtime.throw(0x5565ac4189, 0x21) C:/sdev/Go/src/runtime/panic.go:1112 +0x4c fp=0x40000c99f0 sp=0x40000c99c0 pc=0x5564f14d04 runtime.resolveNameOff(0x5565fe41a0, 0x65f18be0, 0x5565df44c8) C:/sdev/Go/src/runtime/type.go:195 +0x290 fp=0x40000c9a60 sp=0x40000c99f0 pc=0x5564f3c888 reflect.resolveNameOff(0x5565fe41a0, 0x5565f18be0, 0x5565df44c8) C:/sdev/Go/src/runtime/runtime1.go:482 +0x28 fp=0x40000c9a90 sp=0x40000c9a60 pc=0x5564f265f0 reflect.(*rtype).nameOff(…) C:/sdev/Go/src/reflect/type.go:683 reflect.implements(0x5565fe41a0, 0x5565f90e40, 0x0) C:/sdev/Go/src/reflect/type.go:1520 +0x3bc fp=0x40000c9be0 sp=0x40000c9a90 pc=0x5564f72914 reflect.(*rtype).Implements(0x5565f90e40, 0x5566258ca0, 0x5565fe41a0, 0x55653a9900) C:/sdev/Go/src/reflect/type.go:1437 +0x60 fp=0x40000c9c10 sp=0x40000c9be0 pc=0x5564f72348 encoding/gob.implementsInterface(0x5566258ca0, 0x556613f2c0, 0x5566258ca0, 0x5565fe41a0, 0x0) C:/sdev/Go/src/encoding/gob/type.go:142 +0x128 fp=0x40000c9c60 sp=0x40000c9c10 pc=0x55653a9f00 encoding/gob.validUserType(0x5566258ca0, 0x556613f2c0, 0x5566c92640, 0x5564eed848, 0x400020cd00) C:/sdev/Go/src/encoding/gob/type.go:90 +0x2f0 fp=0x40000c9cf0 sp=0x40000c9c60 pc=0x55653a9c18 encoding/gob.userType(0x5566258ca0, 0x556613f2c0, 0x556613f2c0) C:/sdev/Go/src/encoding/gob/type.go:152 +0x28 fp=0x40000c9d40 sp=0x40000c9cf0 pc=0x55653a9fb0 encoding/gob.mustGetTypeInfo(0x5566258ca0, 0x556613f2c0, 0x5566258ca0) C:/sdev/Go/src/encoding/gob/type.go:766 +0x28 fp=0x40000c9d90 sp=0x40000c9d40 pc=0x55653ad6a0 encoding/gob.init() C:/sdev/Go/src/encoding/gob/type.go:259 +0x1bcc fp=0x40000c9e30 sp=0x40000c9d90 pc=0x55653b0ce4 runtime.doInit(0x5566c2ecc0) C:/sdev/Go/src/runtime/proc.go:5414 +0x94 fp=0x40000c9e70 sp=0x40000c9e30 pc=0x5564f2414c runtime.doInit(0x5566c2ddc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9eb0 sp=0x40000c9e70 pc=0x5564f24108 runtime.doInit(0x5566c39cc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9ef0 sp=0x40000c9eb0 pc=0x5564f24108 runtime.doInit(0x5566c38bc0) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9f30 sp=0x40000c9ef0 pc=0x5564f24108 runtime.doInit(0x5566c28520) C:/sdev/Go/src/runtime/proc.go:5409 +0x50 fp=0x40000c9f70 sp=0x40000c9f30 pc=0x5564f24108 runtime.main() C:/sdev/Go/src/runtime/proc.go:190 +0x1d0 fp=0x40000c9fd0 sp=0x40000c9f70 pc=0x5564f17a88 runtime.goexit() C:/sdev/Go/src/runtime/asm_arm64.s:1148 +0x4 fp=0x40000c9fd0 sp=0x40000c9fd0 pc=0x5564f4577c

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 20 (17 by maintainers)

Commits related to this issue

Most upvoted comments

The prelaunch idea worked out. I used a Huawei P8 Lite from Firebase as proxy device since it shows the same behaviour - and test data from the affected user confirms it as well.

The bisect result is this commit: d3c2b1f17600fadeebf62d65c85baf3bef879e2b

d3c2b1f17600fadeebf62d65c85baf3bef879e2b is the first bad commit
commit d3c2b1f17600fadeebf62d65c85baf3bef879e2b
Author: Elias Naur <mail@eliasnaur.com>
Date:   Wed Nov 13 11:57:17 2019 +0100

    cmd/link/internal/ld,misc/cgo/testcshared: don't -fuse-ld=gold on Android

    The NDK is switching to ldd, and will stop including the gold linker.

    Change-Id: If74168017c9874134b34010906ab1d94001528b6
    Reviewed-on: https://go-review.googlesource.com/c/go/+/206840
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: Ian Lance Taylor <iant@golang.org>

 misc/cgo/testcshared/cshared_test.go | 2 +-
 src/cmd/link/internal/ld/lib.go      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Mentioning that in the official 1.14 changelog would have saved me a few days 🙄, especially since lld is still in testing as of the latest ndk release. Consequently, adding -fuse-ld=gold back via env vars fixes the issue on >= d3c2b1f17600fadeebf62d65c85baf3bef879e2b, including go 1.14.x.

ianlancetaylor 2020-05-12T19:02:47Z If someone has a reproduction that doesn’t require any special setup or hardware, I imagine that this could be fixed easily.

We aren’t 100% there, but with Firebase, I managed to confirm a working/breaking version in about 10 minutes/version. According to the play catalogue, filtered to Android 5.0-6.0.1 arm64-v8a, >1200 devices should be affected by this, so it is not all that unlikely that you actually have affected hardware somewhere in your drawer.

Anyway, I can now confirm that go is broken when cross-compiling rclone v1.51.0 using Android NDK 20b, clang, lld for both Android 5.0 and 6.0.1 on aarch64.

But you’ve got hardware which can reproduce the problem?

No, otherwise I would have bisected it right away. I have to send a test package to an affected user, who then has to execute the package and report the results back.

I did modify gvm in a way to mass-build your test from source with for every possible golang version, but until we have a test program that crashes, mass building would be a waste of resources. And mass-building rclone itself is not really feasible.

However, I just had an idea and looked through old Google Play prelaunch reports - it does seem that Firebase has affected devices in their device farm. If it checks out, it might be possible to build an APK that can act as remote verifier. It will take a few days to build and test that.