Dmitriy Vyukov [Mon, 19 Aug 2013 19:06:46 +0000 (23:06 +0400)]
runtime: do not preempt race calls
In the crash stack trace race cgocall() calls endcgo(),
this means that m->racecall is wrong.
Indeed this can happen is a goroutine is rescheduled to another M
during race call.
Disable preemption for race calls.
Fixes #6155.
Rob Pike [Mon, 19 Aug 2013 05:50:57 +0000 (15:50 +1000)]
cmd/go: diagnose import cycles better
Before this CL, the import stack was a) not printed and b) overwritten later
in the build, destroying the information about the cycle. This CL fixes both.
I made time depend on os (os already depends on time) and with this CL the error is:
/Users/r/go/src/pkg/fmt/print.go:10:2: import cycle not allowed
package code.google.com/p/XXX/YYY:
imports fmt
imports os
imports time
imports os
Doesn't give line numbers for the actual imports, as requested in the bug, but
I don't believe that's important.
Rob Pike [Mon, 19 Aug 2013 01:49:59 +0000 (11:49 +1000)]
cmd/gc: better error messages for C-style if statements.
Given
if (i == 0)
x++
The old message was
x.go:6: syntax error: unexpected semicolon or newline before {
Now we see
x.go:6: syntax error: missing { after if clause
Rob Pike [Mon, 19 Aug 2013 01:22:09 +0000 (11:22 +1000)]
math/big: fix nil bug in GobEncode
Update #5305.
This handles the case where the nil pointers are inside a slice.
A top-level nil pointer is harder, maybe fundamentally broken by gob's model.
Thinking required.
However, a slice is the important case since people don't expect to be sending
top-level nils much, but they can arise easily in slices.
Rob Pike [Mon, 19 Aug 2013 01:18:43 +0000 (11:18 +1000)]
make.bash: exit if dist fails
The shell's -e doesn't work across "eval"; need to error-check by hand.
The recent spate of Darwin build failures pointed out that if the first
run of cmd/dist fails, we keep going. We shouldn't.
David Symonds [Mon, 19 Aug 2013 01:11:27 +0000 (11:11 +1000)]
cmd/dist: join with TMPDIR more carefully to avoid // in path.
This might fix the mkdtemp problem on the darwin builders if they
have TMPDIR set to a path ending in a slash; at worse this will
result in cleaner path names.
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/13097043
Marco Hennings [Mon, 19 Aug 2013 00:45:44 +0000 (10:45 +1000)]
archive/tar: Fix support for long links and improve PAX support.
The tar/archive code from golang has a problem with linknames with length >
100. A pax header is added but the original header still written with a too
long field length.
As it is clear that pax support is incomplete I have added missing
implementation parts.
This commit contains code from the golang project in the folder tar/archiv.
The following pax header records are now automatically written:
- gname)
- linkpath
- path
- uname
The following fields can be written with PAX, but the default is to use the
star binary extension.
Russ Cox [Sat, 17 Aug 2013 02:43:05 +0000 (22:43 -0400)]
net: limit number of concurrent cgo calls
The limit is 500. There is no way to change it.
This primarily affects name resolution.
If a million goroutines try to resolve DNS names,
only 500 will get to execute cgo calls at a time.
But in return the operating system will not crash.
Dominik Honnef [Fri, 16 Aug 2013 04:22:38 +0000 (00:22 -0400)]
misc/emacs: allow godef to work in coverage buffers
Jumps to the same file will use the original buffer, not the
coverage buffer. Making it work for the coverage buffer isn't
worth the trouble, especially because it would break as soon as
you jump to a different file and back.
Use error instead of message so it actually terminates
Rob Pike [Fri, 16 Aug 2013 02:49:51 +0000 (12:49 +1000)]
cmd/go: fix at least some instances of double compilation
When the packages the tested package depends on don't build,
we weren't getting out early. Added a simple check for a successful
build to an existing early out.
There may be other ways that double compilation arises, but
this fixes the one listed in the issue.
Fixes #5679
Russ Cox [Fri, 16 Aug 2013 02:34:06 +0000 (22:34 -0400)]
runtime: impose stack size limit
The goal is to stop only those programs that would keep
going and run the machine out of memory, but before they do that.
1 GB on 64-bit, 250 MB on 32-bit.
That seems implausibly large, and it can be adjusted.
Nigel Tao [Fri, 16 Aug 2013 01:23:35 +0000 (11:23 +1000)]
database/sql: make Rows.Next returning false always implicitly call
Rows.Close.
Previously, callers that followed the example code (but not call
rows.Close after "for rows.Next() { ... }") could leak statements if
the driver returned an error other than io.EOF.
Rob Pike [Thu, 15 Aug 2013 06:42:54 +0000 (16:42 +1000)]
time: expand acceptance of time zones when parsing
I tried to make it absolutely correct but there are too many
conflicting definitions for the official list of time zones.
Since when we're parsing we know when to expect
a time zone and we know what they look like if not exactly
what the definitive set is, we compromise. We accept any
three-character sequence of upper case letters, possibly
followed by a capital T (all four-letter zones end in T).
There is one crazy special case (ChST) and the possibility
of a signed hour offset for GMT.
Fixes #3790
I hope forever, but I doubt that very much.
Brad Fitzpatrick [Thu, 15 Aug 2013 06:21:57 +0000 (23:21 -0700)]
archive/zip: speed up Zip64 test
Took 76 seconds or so before. By avoiding flate and crc32 on
4GB of data, it's now only 12 seconds. Still a slow test, but
not painful to run anymore when you forget -short.
Rob Pike [Thu, 15 Aug 2013 00:36:46 +0000 (10:36 +1000)]
cmd/go: fix bad error message in coverage for package without non-test files
Was checking for nil map; must check for empty map instead.
Fixes #6065
Before:
go test -cover
# testmain
/var/folders/00/013l0000h01000cxqpysvccm0004fc/T/go-build233480051/_/Users/r/issue/_test/_testmain.go:11: imported and not used: "_/Users/r/issue"
FAIL _/Users/r/issue [build failed]
Now:
go test -cover
testing: warning: no tests to run
PASS
coverage: 0.0% of statements
ok _/Users/r/issue 0.021s
Carl Shapiro [Wed, 14 Aug 2013 22:21:53 +0000 (15:21 -0700)]
cmd/go, runtime/cgo: explicitly target ARMv5T
The baseline architecture had been left to the GCC configured
default which can be more accomodating than the rest of the Go
toolchain. This prevented instructions used by the 5g compiler,
like BLX, from being used in GCC compiled assembler code.
Dmitriy Vyukov [Wed, 14 Aug 2013 20:20:36 +0000 (00:20 +0400)]
runtime: fix SetBlockProfileRate
It doughtily misses all possible corner cases.
In particular on machines with <1GHz processors,
SetBlockProfileRate(1) disables profiling.
Fixes #6114.
Russ Cox [Wed, 14 Aug 2013 18:54:31 +0000 (14:54 -0400)]
runtime: make SetFinalizer(x, f) accept any f for which f(x) is valid
Originally the requirement was f(x) where f's argument is
exactly x's type.
CL 11858043 relaxed the requirement in a non-standard
way: f's argument must be exactly x's type or interface{}.
If we're going to relax the requirement, it should be done
in a way consistent with the rest of Go. This CL allows f's
argument to have any type for which x is assignable;
that's the same requirement the compiler would impose
if compiling f(x) directly.
Dmitriy Vyukov [Wed, 14 Aug 2013 17:53:27 +0000 (21:53 +0400)]
net: make TCPStress test shorter
It timeouts on freebsd builders:
http://build.golang.org/log/3d8169e13bff912bebf6fd3c54b34ad2d29a7221
but there are always runnable goroutines,
which suggests that it's slowly progressing.
Elias Naur [Wed, 14 Aug 2013 16:47:06 +0000 (12:47 -0400)]
cmd/cgo: fix windows build
The shared library changes broke the windows build because __attribute__ ((visibility ("hidden"))) is not supported in windows gcc. This change removes the attribute, as it is only needed when building shared libraries.