summary refs log tree commit diff stats
path: root/results/classifier/gemma3:12b/hypervisor/1696353
blob: c5609e1a78f9a108528e8eccc774cfd687097221 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
golang binaries fail to start under linux-user

With current master golang binaries fail when run under linux-user, for example:

[will@localhost qemu]$ ./arm-linux-user/qemu-arm glide 
runtime: failed to create new OS thread (have 2 already; errno=22)
fatal error: newosproc

runtime stack:
runtime.throw(0x45f879, 0x9)
	/usr/lib/golang/src/runtime/panic.go:566 +0x78
runtime.newosproc(0x1092c000, 0x1093bfe0)
	/usr/lib/golang/src/runtime/os_linux.go:160 +0x1b0
runtime.newm(0x4ae1e8, 0x0)
	/usr/lib/golang/src/runtime/proc.go:1572 +0x12c
runtime.main.func1()
	/usr/lib/golang/src/runtime/proc.go:126 +0x24
runtime.systemstack(0x5ef900)
	/usr/lib/golang/src/runtime/asm_arm.s:247 +0x80
runtime.mstart()
	/usr/lib/golang/src/runtime/proc.go:1079

goroutine 1 [running]:
runtime.systemstack_switch()
	/usr/lib/golang/src/runtime/asm_arm.s:192 +0x4 fp=0x109287ac sp=0x109287a8
runtime.main()
	/usr/lib/golang/src/runtime/proc.go:127 +0x5c fp=0x109287d4 sp=0x109287ac
runtime.goexit()
	/usr/lib/golang/src/runtime/asm_arm.s:998 +0x4 fp=0x109287d4 sp=0x109287d4

The reason for this is that the golang runtime does not pass the CLONE_SYSVMEM flag to clone so the clone flags checks fail:

https://github.com/golang/go/blob/master/src/runtime/os_linux.go#L155

The attached patch allows golang binaries to start under linux-user.