https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92567

            Bug ID: 92567
           Summary: libgo regression in syscall test on ppc64le resulting
                    in timeout due to hang in read
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: go
          Assignee: ian at airs dot com
          Reporter: boger at gcc dot gnu.org
                CC: cmang at google dot com, seurer at us dot ibm.com
  Target Milestone: ---

Timeouts occur in the libgo syscall test when running the libgo tests. This is
a regression that started sometime after r276416. It consistently fails after
r276455 but we have been unable to narrow it down further because the failures
in between have been inconsistent.

The timeout happens because a hang occurs in this code in libcalls.go on the
call to c_read. The function readlen is called from forkExec in sys_unix.go.
When using gdb, it does not return from the syscall.

// Automatically generated wrapper for readlen/read
func readlen(fd int, p *byte, np int) (n int, err error) {
        Entersyscall()
        _r := c_read(_C_int(fd), p, Size_t(np))
        n = (int)(_r)
        var errno Errno
        setErrno := false
        if _r < 0 {
                errno = GetErrno()
                setErrno = true
        }
        Exitsyscall()
        if setErrno {
                err = errno
        }
        return
}

Since this works on golang I stopped at the syscall in both cases and the
arguments in the registers looked ok. I believe the address that is being
passed to read is on the stack.

Reply via email to