• Ian Lance Taylor's avatar
    unix: change Dup,Dup2,Dup3 to use Syscall, not RawSyscall · 5829c748
    Ian Lance Taylor authored
    This avoids hanging when a Go program uses a FUSE filesystem and the
    dup system call has to close a file descriptor.  When dup uses
    RawSyscall then the goroutine calling dup will occupy a scheduler slot
    (a p structure) during the call, and may block waiting for some other
    goroutine to respond to the close call on the FUSE filesystem.
    Changing to Syscall avoids the problem.  This makes Dup a tiny bit
    slower but is quite unlikely to make a difference for any real
    programs.
    
    Update golang/go#10202.
    
    Change-Id: I590c5c9a04e0a1281a85dc553c7592fa83949ac7
    Reviewed-on: https://go-review.googlesource.com/8056Reviewed-by: 's avatarRob Pike <r@golang.org>
    5829c748
syscall_dragonfly.go 10.5 KB