aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/runtime
diff options
context:
space:
mode:
authorAram Hăvărneanu <aram@mgk.ro>2014-03-13 18:26:01 +1100
committerDave Cheney <dave@cheney.net>2014-03-13 18:26:01 +1100
commit28792f5d83578d9087be5d3b2490ae8a10e189de (patch)
treeb7dd33b33cc1968e1df6605f88552a73788e47ec /src/pkg/runtime
parentfcc10bc0f1bed00e951f26bd32aaeea5d6d691b3 (diff)
downloadgo-28792f5d83578d9087be5d3b2490ae8a10e189de.tar.xz
runtime: avoid runtime·cgocall in functions called by forkAndExecInChild
Calling runtime·cgocall could trigger a GC in the child while gclock was held by the parent. Fixes #7511 LGTM=bradfitz, dvyukov, dave R=golang-codereviews, bradfitz, dvyukov, dave CC=golang-codereviews, rsc https://golang.org/cl/75210044
Diffstat (limited to 'src/pkg/runtime')
-rw-r--r--src/pkg/runtime/syscall_solaris.goc8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/pkg/runtime/syscall_solaris.goc b/src/pkg/runtime/syscall_solaris.goc
index cd30dd1788..21bcce4d17 100644
--- a/src/pkg/runtime/syscall_solaris.goc
+++ b/src/pkg/runtime/syscall_solaris.goc
@@ -170,7 +170,7 @@ func execve(path uintptr, argv uintptr, envp uintptr) (err uintptr) {
c.fn = (void*)libc·execve;
c.n = 3;
c.args = (void*)&path;
- runtime·cgocall(runtime·asmsysvicall6, &c);
+ runtime·asmcgocall(runtime·asmsysvicall6, &c);
err = c.err;
}
@@ -193,7 +193,7 @@ func fcntl1(fd uintptr, cmd uintptr, arg uintptr) (val uintptr, err uintptr) {
c.fn = (void*)libc·fcntl;
c.n = 3;
c.args = (void*)&fd;
- runtime·cgocall(runtime·asmsysvicall6, &c);
+ runtime·asmcgocall(runtime·asmsysvicall6, &c);
err = c.err;
val = c.r1;
}
@@ -227,7 +227,7 @@ func ioctl(fd uintptr, req uintptr, arg uintptr) (err uintptr) {
c.fn = (void*)libc·ioctl;
c.n = 3;
c.args = (void*)&fd;
- runtime·cgocall(runtime·asmsysvicall6, &c);
+ runtime·asmcgocall(runtime·asmsysvicall6, &c);
err = c.err;
}
@@ -338,7 +338,7 @@ func write1(fd uintptr, buf uintptr, nbyte uintptr) (n uintptr, err uintptr) {
c.fn = (void*)libc·write;
c.n = 3;
c.args = (void*)fd;
- runtime·cgocall(runtime·asmsysvicall6, &c);
+ runtime·asmcgocall(runtime·asmsysvicall6, &c);
err = c.err;
n = c.r1;
}