diff options
| author | Aram Hăvărneanu <aram@mgk.ro> | 2014-03-13 18:26:01 +1100 |
|---|---|---|
| committer | Dave Cheney <dave@cheney.net> | 2014-03-13 18:26:01 +1100 |
| commit | 28792f5d83578d9087be5d3b2490ae8a10e189de (patch) | |
| tree | b7dd33b33cc1968e1df6605f88552a73788e47ec /src/pkg/runtime | |
| parent | fcc10bc0f1bed00e951f26bd32aaeea5d6d691b3 (diff) | |
| download | go-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.goc | 8 |
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; } |
