syscall: remove calls to Entersyscall & Exitsyscall in Getdents
authorIan Lance Taylor <ian@gcc.gnu.org>
Mon, 13 Jul 2015 18:55:15 +0000 (18:55 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Mon, 13 Jul 2015 18:55:15 +0000 (18:55 +0000)
    The syscall for Getdents in syscall/libcall_linux.go
    called Entersyscall and Exitsyscall, causing the
    runtime_sched counts for goroutines to be incorrect.
    Inconsistent counts caused checkdead in runtime/proc.c
    to panic.

    Fixes golang/go#11406

    Reviewed-on: https://go-review.googlesource.com/11761

From-SVN: r225745

libgo/go/syscall/libcall_linux.go

index d5bedd06aac126e25a6a054d67606fec20930410..93137fc7fb72820b73cfa4fbbf074c7402c3d434 100644 (file)
@@ -223,7 +223,6 @@ func Getdents(fd int, buf []byte) (n int, err error) {
        } else {
                p = (*byte)(unsafe.Pointer(&_zero))
        }
-       Entersyscall()
        s := SYS_GETDENTS64
        if s == 0 {
                s = SYS_GETDENTS
@@ -233,7 +232,6 @@ func Getdents(fd int, buf []byte) (n int, err error) {
        if n < 0 {
                err = errno
        }
-       Exitsyscall()
        return
 }