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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2018-01-11
     Ever confirmed|0                           |1

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
There's other similar fails, like

*** Test killed with Quit: ran too long (10m0s).
exit status 2
FAIL    cmd/go  600.478s
--- FAIL: go test cmd/go (0.00s)

10 minutes looks excessive to me as well.  Eventually because the machine was
swapping like hell.

For the original issue there's an awful lot of threads (when attaching with
gdb).
One thread is in

#0  sync.Get.pN9_sync.Pool (p=p@entry=0x7ff62c4e63d0 <fmt.ppFree>)
    at /space/rguenther/src/svn/trunk/libgo/go/sync/pool.go:130
#1  0x00007ff62b68e818 in fmt.newPrinter ()
    at /space/rguenther/src/svn/trunk/libgo/go/fmt/print.go:133
#2  0x00007ff62b696c5e in fmt.Sprintf (format=..., a=...)
    at /space/rguenther/src/svn/trunk/libgo/go/fmt/print.go:202
#3  0x00007ff62ba0baaa in testing.Logf.pN14_testing.common (c=<optimized out>, 
    format=..., args=...)
    at /space/rguenther/src/svn/trunk/libgo/go/testing/testing.go:571
#4  0x00007ff62ba0baf9 in testing.Logf$stub.pN9_testing.T (
    $this20=<optimized out>, $p21=..., $p22=...)
    at /space/rguenther/src/svn/trunk/libgo/go/testing/testing.go:476
#5  0x00000000004d6d11 in cgotest.testBuildID (t=<optimized out>)
    at
/abuild/rguenther/obj/gotools/cgo-test-dir/misc/cgo/test/buildid_linux.go:61
#6  0x00000000004d6fd4 in
__abuild_rguenther_obj_gotools_cgo_test_dir_misc_cgo_test.TestBuildID
(t=<optimized out>)
    at
/abuild/rguenther/obj/gotools/cgo-test-dir/misc/cgo/test/cgo_linux_test.go:11

thus logging diagnostics somewhere, eventually gobbling up memory.

I suspect that

                        namesz := f.ByteOrder.Uint32(d)
                        descsz := f.ByteOrder.Uint32(d[4:])
                        typ := f.ByteOrder.Uint32(d[8:])

                        an := (namesz + 3) &^ 3
                        ad := (descsz + 3) &^ 3

                        if int(12+an+ad) > len(d) {
                                t.Logf("note section %d too short for header
(%d < 12 + align(%d,4) + align(%d,4))", i, len(d), namesz, descsz)
                                continue
                        }

is somehow "broken".  Doesn't seem to log to disk anywhere btw?

Ah, and of course after 'continue' this just continues with 'd' unchanged and
thus endlessly loops and logs.  Similar for the earlier error.  I suspect
it wants to continue the outer loop instead?  Or maybe for len (d) > 0 isn't
a loop...

As said, please fix!

Reply via email to