Ian Lance Taylor <[email protected]> writes:
> Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu. Tested
> both with and without -fsplit-stack support. Committed to mainline.
Once Go bootstrap works again on Solaris, I notice that there are many
64-bit testsuite failures, which have been introduced between 20111125
(r181724) and 20111130 (r181837), so this patch is the obvious culprit.
The failures are as follows:
* In the go.* tests:
FAIL: ./select5-out.go compilation, -O2 -g
WARNING: program timed out.
32-bit compilation on idle system (1.6 GHz Core i7 Q720, so a
reasonably up-to-date system):
./select5-out.go: In function 'main.$init4':
./select5-out.go:19326:1: note: variable tracking size limit exceeded with
-fvar-tracking-assignments, retrying without
real 2:04.06
user 2:03.43
sys 0.35
with -fno-var-tracking-assignments:
real 1:09.87
user 1:09.57
sys 0.20
With parallel make check, the runtime can easily exceed the default
300s timeout.
* 64-bit failures:
FAIL: go.test/test/chan/doubleselect.go execution, -O2 -g
throw: malloc/free - deadlock
panic during panic
The messages don't show up in go.log, they goes to stdout,
cf. runtime/runtime.h where runtime_printf is just printf.
FAIL: go.test/test/chan/select2.go execution, -O2 -g
BUG: too much memory for 100,000 selects: 2098448
This test used to fail intermittendly, now the failure seems constant.
FAIL: go.test/test/chan/select3.go execution, -O2 -g
throw: gosched of g0
FAIL: go.test/test/fixedbugs/bug147.go execution, -O2 -g
throw: gosched of g0
FAIL: go.test/test/goprint.go execution, -O2 -g
throw: gosched holding locks
sometimes
throw: bad gp->status in sched
FAIL: go.test/test/mallocfin.go execution, -O2 -g
throw: gosched holding locks
FAIL: go.test/test/nil.go execution, -O2 -g
throw: gosched holding locks
FAIL: go.test/test/stack.go execution, -O2 -g
SEGV from a stack overflow, this test seems to require split-stack
support and doesn't even work with unlimited stack size.
* libgo testsuite failures:
All tests hang with the default -test.timeout=240. When I remove
that, some (like bufio) simply pass, while others run into errors
similar to the above:
goroutine 2 has status 1
throw: bad g->status in ready
I've tried to make some sense of it, but don't really know where to
start looking.
The situation on Solaris/SPARC is considerably worse (large number of
32-bit failures, too, all 32-bit libgo tests fail), but I think it's
preferable to get it working again on x86 before checking what remains
on SPARC.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University