[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [Bug 1696353] Re: golang binaries fail to start under linux
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [Bug 1696353] Re: golang binaries fail to start under linux-user |
Date: |
Wed, 07 Jun 2017 13:11:16 -0000 |
The problem with doing that is that it doesn't actually change the
behaviour. We use pthread_create to create the new thread, which glibc
does with a clone with CLONE_SYSVSEM set. We can't tell the difference
between "guest program needs the new threads to not share SysV semaphore
behaviour" and "guest program doesn't care but didn't provide the flag"
so we err on the side of caution and refuse to create a thread that
doesn't behave the way the guest asked us for it to behave.
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1696353
Title:
golang binaries fail to start under linux-user
Status in QEMU:
New
Bug description:
With current master golang binaries fail when run under linux-user,
for example:
address@hidden 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.
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1696353/+subscriptions