Skip to content

crypto/x509: loadSystemRoots segfault when running under launchd #17972

@nhooyr

Description

@nhooyr

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

go version devel +b21743c Thu Nov 17 20:53:01 2016 +0000 darwin/amd64

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

GOARCH="amd64"
GOOS="darwin"

With the following program https://play.golang.org/p/HzaMgW_1p4 and the following Launch Agent definition

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
	<dict>
		<key>Label</key>
		<string>playground</string>
		<key>ProgramArguments</key>
		<array>
			<string>/Users/nhooyr/code/gopath/bin/playground</string>
		</array>
		<key>RunAtLoad</key>
		<true/>
		<key>StandardErrorPath</key>
		<string>/tmp/playgroundLogs</string>
	</dict>
</plist>

I get

fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x127491f]

runtime stack:
runtime.throw(0x113f88e, 0x2a)
	/nix/store/c8dvzgg10k5svh5mrgkgdiikkzrbmf9g-go-1.8-dev/share/go/src/runtime/panic.go:596 +0x95
runtime.sigpanic()
	/nix/store/c8dvzgg10k5svh5mrgkgdiikkzrbmf9g-go-1.8-dev/share/go/src/runtime/signal_unix.go:253 +0x2db

goroutine 1 [syscall, locked to thread]:
runtime.cgocall(0x1001520, 0xc42009db18, 0xc42000e028)
	/nix/store/c8dvzgg10k5svh5mrgkgdiikkzrbmf9g-go-1.8-dev/share/go/src/runtime/cgocall.go:130 +0xe2 fp=0xc42009dae8 sp=0xc42009daa8
crypto/x509._Cfunc_FetchPEMRoots(0xc42000e028, 0xc400000000)
	crypto/x509/_obj/_cgo_gotypes.go:100 +0x49 fp=0xc42009db18 sp=0xc42009dae8
crypto/x509.loadSystemRoots.func1(0xc42000e028, 0xc42000e028)
	/nix/store/c8dvzgg10k5svh5mrgkgdiikkzrbmf9g-go-1.8-dev/share/go/src/crypto/x509/root_cgo_darwin.go:170 +0xbd fp=0xc42009db60 sp=0xc42009db18
crypto/x509.loadSystemRoots(0x0, 0x0, 0x0)
	/nix/store/c8dvzgg10k5svh5mrgkgdiikkzrbmf9g-go-1.8-dev/share/go/src/crypto/x509/root_cgo_darwin.go:170 +0x15d fp=0xc42009dbd8 sp=0xc42009db60
crypto/x509.initSystemRoots()
	/nix/store/c8dvzgg10k5svh5mrgkgdiikkzrbmf9g-go-1.8-dev/share/go/src/crypto/x509/root.go:21 +0x26 fp=0xc42009dc10 sp=0xc42009dbd8
sync.(*Once).Do(0x11f37c0, 0x1141ee0)
	/nix/store/c8dvzgg10k5svh5mrgkgdiikkzrbmf9g-go-1.8-dev/share/go/src/sync/once.go:44 +0xbe fp=0xc42009dc48 sp=0xc42009dc10
crypto/x509.systemRootsPool(0x9)
	/nix/store/c8dvzgg10k5svh5mrgkgdiikkzrbmf9g-go-1.8-dev/share/go/src/crypto/x509/root.go:16 +0x39 fp=0xc42009dc68 sp=0xc42009dc48
crypto/x509.(*Certificate).Verify(0xc42009e000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	/nix/store/c8dvzgg10k5svh5mrgkgdiikkzrbmf9g-go-1.8-dev/share/go/src/crypto/x509/verify.go:287 +0x7e1 fp=0xc42009ded0 sp=0xc42009dc68
main.main()
	/Users/nhooyr/code/gopath/src/github.com/nhooyr/playground/main.go:41 +0x134 fp=0xc42009df88 sp=0xc42009ded0
runtime.main()
	/nix/store/c8dvzgg10k5svh5mrgkgdiikkzrbmf9g-go-1.8-dev/share/go/src/runtime/proc.go:185 +0x20a fp=0xc42009dfe0 sp=0xc42009df88
runtime.goexit()
	/nix/store/c8dvzgg10k5svh5mrgkgdiikkzrbmf9g-go-1.8-dev/share/go/src/runtime/asm_amd64.s:2184 +0x1 fp=0xc42009dfe8 sp=0xc42009dfe0

goroutine 17 [syscall, locked to thread]:
runtime.goexit()
	/nix/store/c8dvzgg10k5svh5mrgkgdiikkzrbmf9g-go-1.8-dev/share/go/src/runtime/asm_amd64.s:2184 +0x1

in /tmp/playgroundLogs.

If I do not run the program as a Launch Agent under launchd, all works fine.

Metadata

Metadata

Assignees

No one assigned

    Labels

    FrozenDueToAgeNeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.WaitingForInfoIssue is not actionable because of missing required information, which needs to be provided.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions