]> Cypherpunks repositories - gostls13.git/log
gostls13.git
11 years agoruntime: fix windows build (buggy commit in 19543:d68b79ccbfed)
Ian Lance Taylor [Tue, 25 Mar 2014 21:17:00 +0000 (14:17 -0700)]
runtime: fix windows build (buggy commit in 19543:d68b79ccbfed)

TBR=rsc
CC=golang-codereviews
https://golang.org/cl/80090043

11 years agoruntime: redo stack map entries to avoid false retention
Keith Randall [Tue, 25 Mar 2014 21:11:34 +0000 (14:11 -0700)]
runtime: redo stack map entries to avoid false retention

Change two-bit stack map entries to encode:
0 = dead
1 = scalar
2 = pointer
3 = multiword

If multiword, the two-bit entry for the following word encodes:
0 = string
1 = slice
2 = iface
3 = eface

That way, during stack scanning we can check if a string
is zero length or a slice has zero capacity.  We can avoid
following the contained pointer in those cases.  It is safe
to do so because it can never be dereferenced, and it is
desirable to do so because it may cause false retention
of the following block in memory.

Slice feature turned off until issue 7564 is fixed.

Update #7549

LGTM=rsc
R=golang-codereviews, bradfitz, rsc
CC=golang-codereviews
https://golang.org/cl/76380043

11 years agoruntime: accurately record whether heap memory is reserved
Ian Lance Taylor [Tue, 25 Mar 2014 20:22:19 +0000 (13:22 -0700)]
runtime: accurately record whether heap memory is reserved

The existing code did not have a clear notion of whether
memory has been actually reserved.  It checked based on
whether in 32-bit mode or 64-bit mode and (on GNU/Linux) the
requested address, but it confused the requested address and
the returned address.

LGTM=rsc
R=rsc, dvyukov
CC=golang-codereviews, michael.hudson
https://golang.org/cl/79610043

11 years agonet/http: don't re-use Transport connections if we've seen an EOF
Brad Fitzpatrick [Tue, 25 Mar 2014 17:59:09 +0000 (10:59 -0700)]
net/http: don't re-use Transport connections if we've seen an EOF

This the second part of making persistent HTTPS connections to
certain servers (notably Amazon) robust.

See the story in part 1: https://golang.org/cl/76400046/

This is the http Transport change that notes whether our
net.Conn.Read has ever seen an EOF. If it has, then we use
that as an additional signal to not re-use that connection (in
addition to the HTTP response headers)

Fixes #3514

LGTM=rsc
R=agl, rsc
CC=golang-codereviews
https://golang.org/cl/79240044

11 years agocrypto/tls: make Conn.Read return (n, io.EOF) when EOF is next in buffer
Brad Fitzpatrick [Tue, 25 Mar 2014 17:58:35 +0000 (10:58 -0700)]
crypto/tls: make Conn.Read return (n, io.EOF) when EOF is next in buffer

Update #3514

An io.Reader is permitted to return either (n, nil)
or (n, io.EOF) on EOF or other error.

The tls package previously always returned (n, nil) for a read
of size n if n bytes were available, not surfacing errors at
the same time.

Amazon's HTTPS frontends like to hang up on clients without
sending the appropriate HTTP headers. (In their defense,
they're allowed to hang up any time, but generally a server
hangs up after a bit of inactivity, not immediately.) In any
case, the Go HTTP client tries to re-use connections by
looking at whether the response headers say to keep the
connection open, and because the connection looks okay, under
heavy load it's possible we'll reuse it immediately, writing
the next request, just as the Transport's always-reading
goroutine returns from tls.Conn.Read and sees (0, io.EOF).

But because Amazon does send an AlertCloseNotify record before
it hangs up on us, and the tls package does its own internal
buffering (up to 1024 bytes) of pending data, we have the
AlertCloseNotify in an unread buffer when our Conn.Read (to
the HTTP Transport code) reads its final bit of data in the
HTTP response body.

This change makes that final Read return (n, io.EOF) when
an AlertCloseNotify record is buffered right after, if we'd
otherwise return (n, nil).

A dependent change in the HTTP code then notes whether a
client connection has seen an io.EOF and uses that as an
additional signal to not reuse a HTTPS connection. With both
changes, the majority of Amazon request failures go
away. Without either one, 10-20 goroutines hitting the S3 API
leads to such an error rate that empirically up to 5 retries
are needed to complete an API call.

LGTM=agl, rsc
R=agl, rsc
CC=golang-codereviews
https://golang.org/cl/76400046

11 years agoruntime: change nproc local variable to uint32
Ian Lance Taylor [Tue, 25 Mar 2014 12:18:08 +0000 (05:18 -0700)]
runtime: change nproc local variable to uint32

The nproc and ndone fields are uint32.  This makes the type
consistent.

LGTM=minux.ma
R=golang-codereviews, minux.ma
CC=golang-codereviews
https://golang.org/cl/79340044

11 years agodatabase/sql: add "defer rows.Close()" to the example code.
Nigel Tao [Tue, 25 Mar 2014 02:32:18 +0000 (13:32 +1100)]
database/sql: add "defer rows.Close()" to the example code.

Strictly speaking, it's not necessary in example_test.go, as the
Rows.Close docs say that "If Next returns false, the Rows are closed
automatically". However, if the for loop breaks or returns early, it's
not obvious that you'll leak unless you explicitly call Rows.Close.

LGTM=bradfitz
R=bradfitz
CC=golang-codereviews, rsc
https://golang.org/cl/79330043

11 years agoruntime: use VEH, not SEH, for windows/386 exception handling
Russ Cox [Tue, 25 Mar 2014 01:22:16 +0000 (21:22 -0400)]
runtime: use VEH, not SEH, for windows/386 exception handling

Structured Exception Handling (SEH) was the first way to handle
exceptions (memory faults, divides by zero) on Windows.
The S might as well stand for "stack-based": the implementation
interprets stack addresses in a few different ways, and it gets
subtly confused by Go's management of stacks. It's also something
that requires active maintenance during cgo switches, and we've
had bugs in that maintenance in the past.

We have recently come to believe that SEH cannot work with
Go's stack usage. See http://golang.org/issue/7325 for details.

Vectored Exception Handling (VEH) is more like a Unix signal
handler: you set it once for the whole process and forget about it.

This CL drops all the SEH code and replaces it with VEH code.
Many special cases and 7 #ifdefs disappear.

VEH was introduced in Windows XP, so Go on windows/386 will
now require Windows XP or later. The previous requirement was
Windows 2000 or later. Windows 2000 immediately preceded
Windows XP, so Windows 2000 is the only affected version.
Microsoft stopped supporting Windows 2000 in 2010.
See http://golang.org/s/win2000-golang-nuts for details.

Fixes #7325.

LGTM=alex.brainman, r
R=golang-codereviews, alex.brainman, stephen.gutekanst, dave
CC=golang-codereviews, iant, r
https://golang.org/cl/74790043

11 years agotime: add comment explaining rejection of years outside [0000,9999]
Russ Cox [Tue, 25 Mar 2014 00:34:17 +0000 (20:34 -0400)]
time: add comment explaining rejection of years outside [0000,9999]

This has come up twice now. Redirect future questions
to the explanation in the issue tracker.

LGTM=iant, r
R=r, iant
CC=golang-codereviews
https://golang.org/cl/79550043

11 years agomath/cmplx: define Pow(0, x) for problematic values of x.
Rob Pike [Tue, 25 Mar 2014 00:25:20 +0000 (11:25 +1100)]
math/cmplx: define Pow(0, x) for problematic values of x.
Currently it's always zero, but that is inconsistent with math.Pow
and also plain wrong.
This is a proposal for how it should be defined.
Fixes #7583.

LGTM=rsc
R=golang-codereviews, iant, gobot, rsc
CC=golang-codereviews
https://golang.org/cl/76940044

11 years agoregexp/syntax: document the upper limit of n in x{n}
Rob Pike [Tue, 25 Mar 2014 00:19:25 +0000 (11:19 +1100)]
regexp/syntax: document the upper limit of n in x{n}
Fixes #7252.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/77990044

11 years agoregexp: document that it is linear in the input size.
Rob Pike [Tue, 25 Mar 2014 00:17:30 +0000 (11:17 +1100)]
regexp: document that it is linear in the input size.
Fixes #7488.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/78050043

11 years agodoc: allow buffered channel as semaphore without initialization
Russ Cox [Mon, 24 Mar 2014 23:11:21 +0000 (19:11 -0400)]
doc: allow buffered channel as semaphore without initialization

This rule not existing has been the source of many discussions
on golang-dev and on issues. We have stated publicly that it is
true, but we have never written it down. Write it down.

Fixes #6242.

LGTM=r, dan.kortschak, iant, dvyukov
R=golang-codereviews, r, dominik.honnef, dvyukov, dan.kortschak, iant, 0xjnml
CC=golang-codereviews
https://golang.org/cl/75130045

11 years agocmd/gc: fix spurious 'const initializer is not a constant' error
Jan Ziak [Mon, 24 Mar 2014 19:36:42 +0000 (20:36 +0100)]
cmd/gc: fix spurious 'const initializer is not a constant' error

Fixes #6403

LGTM=rsc
R=iant, rsc
CC=golang-codereviews
https://golang.org/cl/72840044

11 years agobufio: fix bug that ReadFrom stops before EOF or error
Rui Ueyama [Mon, 24 Mar 2014 18:48:34 +0000 (11:48 -0700)]
bufio: fix bug that ReadFrom stops before EOF or error

ReadFrom should not return until it receives a non-nil error
or too many contiguous (0, nil)s from a given reader.
Currently it immediately returns if it receives one (0, nil).
Fixes #7611.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/76400048

11 years agocmd/gc: round floats with a large negative exponent towards zero
Jan Ziak [Mon, 24 Mar 2014 17:10:29 +0000 (10:10 -0700)]
cmd/gc: round floats with a large negative exponent towards zero

Fixes #6902

LGTM=iant
R=iant, rsc
CC=golang-codereviews
https://golang.org/cl/78730049

11 years agostrings: minor cleanup
Rui Ueyama [Mon, 24 Mar 2014 01:58:35 +0000 (18:58 -0700)]
strings: minor cleanup

bi is a slice and not an array, so bi[:] does not make much sense.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/79280043

11 years agomisc/nacl: add Native Client support scripts and documentation
Dave Cheney [Mon, 24 Mar 2014 01:34:09 +0000 (12:34 +1100)]
misc/nacl: add Native Client support scripts and documentation

LGTM=josharian, dan.kortschak
R=golang-codereviews, josharian, dan.kortschak
CC=golang-codereviews
https://golang.org/cl/75080043

11 years agounicode/utf8: minor code simplification
Rui Ueyama [Sun, 23 Mar 2014 22:44:29 +0000 (15:44 -0700)]
unicode/utf8: minor code simplification

It's a little bit waste to check if r is not a surrogate
code point because RuneError is not a surrogate code point.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/79230043

11 years agounicode/utf16: remove unnecessary type conversions
Rui Ueyama [Sun, 23 Mar 2014 22:07:26 +0000 (15:07 -0700)]
unicode/utf16: remove unnecessary type conversions

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/79080044

11 years agobufio: fix typo in test
Rui Ueyama [Sun, 23 Mar 2014 00:40:17 +0000 (17:40 -0700)]
bufio: fix typo in test

LGTM=dave
R=golang-codereviews, dave
CC=golang-codereviews
https://golang.org/cl/79120043

11 years agoregexp: remove unused variables
Rui Ueyama [Sat, 22 Mar 2014 18:05:40 +0000 (11:05 -0700)]
regexp: remove unused variables

"min" and "max" in "case '{'" clause are fresh variables.
The variables defined in the outer scope never get value
other than 0.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/78750044

11 years agotext/scanner: handle non-io.EOF errors
Rui Ueyama [Sat, 22 Mar 2014 00:05:57 +0000 (17:05 -0700)]
text/scanner: handle non-io.EOF errors

Currently Scan ignores an error returned from source if the number
of bytes source has read is 0.

Fixes #7594.

LGTM=gri
R=golang-codereviews, bradfitz, gri
CC=golang-codereviews
https://golang.org/cl/78120043

11 years agocmd/ld: fix warnings on Plan 9
David du Colombier [Fri, 21 Mar 2014 18:26:47 +0000 (19:26 +0100)]
cmd/ld: fix warnings on Plan 9

warning: src/cmd/ld/macho.c:595 sign-extended character constant
warning: src/cmd/ld/macho.c:595 sign-extended character constant
warning: src/cmd/ld/symtab.c:63 sign-extended character constant
warning: src/cmd/ld/symtab.c:63 sign-extended character constant

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/76580046

11 years agoruntime: skip stack growth test in short mode
David du Colombier [Fri, 21 Mar 2014 17:13:23 +0000 (18:13 +0100)]
runtime: skip stack growth test in short mode

LGTM=dvyukov
R=dvyukov
CC=golang-codereviews
https://golang.org/cl/78410043

11 years agoencoding/asn1: use GeneralizedTime for times outside the range of UTCTime.
Adam Langley [Fri, 21 Mar 2014 15:14:38 +0000 (11:14 -0400)]
encoding/asn1: use GeneralizedTime for times outside the range of UTCTime.

Fixes issue #6976.

LGTM=r
R=golang-codereviews, r
CC=golang-codereviews
https://golang.org/cl/72080044

11 years agodoc/go_faq.html: update description of stack management
Rob Pike [Fri, 21 Mar 2014 02:59:30 +0000 (13:59 +1100)]
doc/go_faq.html: update description of stack management
They aren't segmented any more, at least with gc.
Also improve the comparison of goroutines and threads.
Fixes #7373.

LGTM=iant
R=iant
CC=golang-codereviews
https://golang.org/cl/77950044

11 years agodoc/effective_go.html: fix typo
Rob Pike [Thu, 20 Mar 2014 21:37:27 +0000 (08:37 +1100)]
doc/effective_go.html: fix typo
Prose referred to 'b', code used 'buf'.
Fixes #7601.

LGTM=dominik.honnef
R=golang-codereviews, dominik.honnef
CC=golang-codereviews
https://golang.org/cl/78470043

11 years agocmd/6g, cmd/8g: skip CONVNOP nodes in bgen.
Rémy Oudompheng [Thu, 20 Mar 2014 21:22:37 +0000 (22:22 +0100)]
cmd/6g, cmd/8g: skip CONVNOP nodes in bgen.

Revision 3ae4607a43ff introduced CONVNOP layers
to fix type checking issues arising from comparisons.
The added complexity made 8g run out of registers
when compiling an equality function in go.net/ipv6.

A similar issue occurred in test/sizeof.go on
amd64p32 with 6g.

Fixes #7405.

LGTM=khr
R=rsc, dave, iant, khr
CC=golang-codereviews
https://golang.org/cl/78100044

11 years agoreflect: correct alignment of call arguments on amd64p32.
Rémy Oudompheng [Thu, 20 Mar 2014 21:22:07 +0000 (22:22 +0100)]
reflect: correct alignment of call arguments on amd64p32.

Changes adapted from original CL 15680044.

LGTM=iant
R=rsc, iant, dave
CC=golang-codereviews
https://golang.org/cl/76150044

11 years agocmd/6g: make comment more consistent.
Rémy Oudompheng [Thu, 20 Mar 2014 21:21:10 +0000 (22:21 +0100)]
cmd/6g: make comment more consistent.

LGTM=dave, iant
R=iant, khr, rsc, dave
CC=golang-codereviews
https://golang.org/cl/77960044

11 years agotest: add extra test case for issue 7590
Chris Manghane [Thu, 20 Mar 2014 18:46:45 +0000 (11:46 -0700)]
test: add extra test case for issue 7590

LGTM=iant
R=iant
CC=golang-codereviews
https://golang.org/cl/78040043

11 years agocrypto/tls: clarify concurrent use of Config
Brad Fitzpatrick [Thu, 20 Mar 2014 15:32:06 +0000 (08:32 -0700)]
crypto/tls: clarify concurrent use of Config

LGTM=r, agl
R=agl, r
CC=golang-codereviews
https://golang.org/cl/77530044

11 years agotest: enable bug385_32 test on amd64p32.
Rémy Oudompheng [Thu, 20 Mar 2014 06:28:24 +0000 (07:28 +0100)]
test: enable bug385_32 test on amd64p32.

LGTM=dave
R=dave, rsc
CC=golang-codereviews
https://golang.org/cl/78110043

11 years agobase64: fix bug that decoder fails to detect corruption
Rui Ueyama [Thu, 20 Mar 2014 05:00:34 +0000 (16:00 +1100)]
base64: fix bug that decoder fails to detect corruption

Encoding.Decode() failed to detect trailing garbages if input contains "==" followed by garbage smaller than 3 bytes (for example, it failed to detect "x" in "AA==x"). This patch fixes the bug and adds a few tests.

LGTM=nigeltao
R=golang-codereviews, bradfitz, nigeltao
CC=golang-codereviews
https://golang.org/cl/75340044

11 years agobase32: remove unnecessary "if" condition
Rui Ueyama [Thu, 20 Mar 2014 04:54:17 +0000 (15:54 +1100)]
base32: remove unnecessary "if" condition

This is a patch to apply the same change as CL 76610045.

LGTM=nigeltao
R=nigeltao
CC=golang-codereviews
https://golang.org/cl/77460044

11 years agocmd/6g: remove unused stosptr variable
Ian Lance Taylor [Thu, 20 Mar 2014 00:18:25 +0000 (17:18 -0700)]
cmd/6g: remove unused stosptr variable

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/78030043

11 years agocmd/6g: do small zeroings with straightline code.
Keith Randall [Wed, 19 Mar 2014 22:41:34 +0000 (15:41 -0700)]
cmd/6g: do small zeroings with straightline code.

Removes most uses of the REP prefix, which has a high startup cost.

LGTM=iant
R=golang-codereviews, iant, khr
CC=golang-codereviews
https://golang.org/cl/77920043

11 years agofmt: make %F a synonym for %f
Rob Pike [Wed, 19 Mar 2014 21:51:06 +0000 (08:51 +1100)]
fmt: make %F a synonym for %f
Rationale:
        It already is for scanning.
        It is accepted for complexes already, but doesn't work.
        It's analogous to %G and %E.
        C accepts it too, and we try to be roughly compatible.
Fixes #7518.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/77580044

11 years agostrings, bytes: ReadAt should not mutate receiver
Rui Ueyama [Wed, 19 Mar 2014 19:13:47 +0000 (12:13 -0700)]
strings, bytes: ReadAt should not mutate receiver

CL 77580046 caused a data race issue with tests that assumes ReadAt
does not mutate receiver. This patch partially revert CL 77580046
to fix it.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/77900043

11 years agounicode: minor cleanup
Rui Ueyama [Wed, 19 Mar 2014 17:14:04 +0000 (10:14 -0700)]
unicode: minor cleanup

These test cases are redundant because TestSimpleFold tests
all possible rotations of test data, so no need to add
rotated strings.

Also updated the comment as it's guaranteed that SimpleFold
returns values in increasing order.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/77730043

11 years agostrings, bytes: fix Reader.UnreadRune
Rui Ueyama [Wed, 19 Mar 2014 16:00:58 +0000 (09:00 -0700)]
strings, bytes: fix Reader.UnreadRune

UnreadRune should return an error if previous operation is not
ReadRune.

Fixes #7579.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/77580046

11 years agoruntime: add stack growth tests
Dmitriy Vyukov [Wed, 19 Mar 2014 13:22:56 +0000 (17:22 +0400)]
runtime: add stack growth tests
Also move generated code into a separate file,
because it's difficult to work with the file otherwise.

LGTM=khr
R=golang-codereviews, khr
CC=golang-codereviews
https://golang.org/cl/76080044

11 years agoruntime: fix stack split detection around fork
Dmitriy Vyukov [Wed, 19 Mar 2014 13:04:51 +0000 (17:04 +0400)]
runtime: fix stack split detection around fork
If runtime_BeforeFork splits stack, it will unsplit it
with spoiled g->stackguard. It leads to check failure in oldstack:

fatal error: stackfree: bad fixed size

runtime stack:
runtime.throw(0xadf3cd)
runtime.stackfree(0xc208040480, 0xfffffffffffff9dd, 0x1b00fa8)
runtime.oldstack()
runtime.lessstack()

goroutine 311 [stack unsplit]:
syscall.forkAndExecInChild(0xc20802eea0, 0xc208192c00, 0x5, 0x5, 0xc208072a80, ...)
syscall.forkExec(0xc20802ed80, 0x54, 0xc2081ccb40, 0x4, 0x4, ...)

Fixes #7567.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews, khr, rsc
https://golang.org/cl/77340045

11 years agocmd/gc: check exponent overflow and underflow in mparith
Jan Ziak [Wed, 19 Mar 2014 04:48:00 +0000 (05:48 +0100)]
cmd/gc: check exponent overflow and underflow in mparith

A too large float constant is an error.
A too small float constant is rounded to zero.

Fixes #7419
Update #6902

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/76730046

11 years agomisc/bash/go: remove "doc" subcommand autocompletion
Rui Ueyama [Wed, 19 Mar 2014 04:01:23 +0000 (21:01 -0700)]
misc/bash/go: remove "doc" subcommand autocompletion

"go doc" has been removed in CL 17799.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/77420045

11 years agobytes: fix panic in Map
Rui Ueyama [Wed, 19 Mar 2014 03:52:58 +0000 (20:52 -0700)]
bytes: fix panic in Map

utf8.RuneLen returns -1 for an invalid rune. In that case we
need to extend the internal buffer at least by 3 for \uFFFD.

Fixes #7577.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/77420044

11 years agostrconv: CanBackquote should reject \x7F
Rob Pike [Tue, 18 Mar 2014 23:16:48 +0000 (10:16 +1100)]
strconv: CanBackquote should reject \x7F
It's a control character.
Fixes #7565.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/77300043

11 years agocmd/go: let build -x output describe CGO_LDFLAGS env variable
Jan Ziak [Tue, 18 Mar 2014 20:47:21 +0000 (21:47 +0100)]
cmd/go: let build -x output describe CGO_LDFLAGS env variable

Fixes #7249

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/75820046

11 years agoexpvar: don't recursively acquire Map.RLock
Brad Fitzpatrick [Tue, 18 Mar 2014 18:38:39 +0000 (11:38 -0700)]
expvar: don't recursively acquire Map.RLock

Fixes #7575

LGTM=iant
R=dvyukov, iant
CC=golang-codereviews
https://golang.org/cl/77540044

11 years agonet/http: make use of testing.Errorf instead of testing.Fatalf in non-test function...
Mikio Hara [Tue, 18 Mar 2014 12:12:00 +0000 (21:12 +0900)]
net/http: make use of testing.Errorf instead of testing.Fatalf in non-test function goroutines

See testing.FailNow for further information.
Also avoid nil pointer derefernce in TestTransportMaxPerHostIdleConns.

LGTM=dave
R=golang-codereviews, dave
CC=golang-codereviews
https://golang.org/cl/76470043

11 years agobase64: refactor encoder.Write
Rui Ueyama [Tue, 18 Mar 2014 05:26:23 +0000 (16:26 +1100)]
base64: refactor encoder.Write

"nn" can never be zero for any input "p", so no check is needed.
This change should improve readability a bit.

LGTM=nigeltao
R=golang-codereviews, bradfitz, nigeltao
CC=golang-codereviews
https://golang.org/cl/76610045

11 years agocmd/go: make the default coverage mode -atomic if -race is set
Rob Pike [Tue, 18 Mar 2014 03:38:40 +0000 (14:38 +1100)]
cmd/go: make the default coverage mode -atomic if -race is set
Fixes #7013.

LGTM=adg
R=golang-codereviews, gobot, adg
CC=golang-codereviews
https://golang.org/cl/76370043

11 years agocmd/gc: fix error check for self-referential array type.
Chris Manghane [Tue, 18 Mar 2014 03:26:19 +0000 (20:26 -0700)]
cmd/gc: fix error check for self-referential array type.

LGTM=gri, iant
R=gri, iant
CC=golang-codereviews
https://golang.org/cl/75920044

11 years agoundo CL 77050045 / 073d79675aae
Brad Fitzpatrick [Tue, 18 Mar 2014 03:00:44 +0000 (20:00 -0700)]
undo CL 77050045 / 073d79675aae

Breaks all builds.

««« original CL description
cmd/gc: Add tests for self-referential array types.

LGTM=gri, iant
R=gri, iant
CC=golang-codereviews
https://golang.org/cl/77050045
»»»

TBR=cmang
R=cmang
CC=golang-codereviews
https://golang.org/cl/77210043

11 years agobuild: fix race in doc/articles/wiki test
Rick Arnold [Tue, 18 Mar 2014 02:03:03 +0000 (13:03 +1100)]
build: fix race in doc/articles/wiki test

The original test would open a local port and then immediately close it
and use the port number in subsequent tests. Between the port being closed
and reused by the later process, it could be opened by some other program
on the machine.

Changed the test to run the server process directly and have it save the
assigned port to a text file to be used by client processes.

Fixes #5564.

LGTM=adg
R=golang-codereviews, gobot, adg
CC=golang-codereviews
https://golang.org/cl/72290043

11 years agocmd/gc: Add tests for self-referential array types.
Chris Manghane [Tue, 18 Mar 2014 01:30:02 +0000 (18:30 -0700)]
cmd/gc: Add tests for self-referential array types.

LGTM=gri, iant
R=gri, iant
CC=golang-codereviews
https://golang.org/cl/77050045

11 years agofmt: document GoStringer and explain application of formats to compound objects
Rob Pike [Tue, 18 Mar 2014 00:25:04 +0000 (11:25 +1100)]
fmt: document GoStringer and explain application of formats to compound objects
%q quotes each element of a string slice; this was never explained in the docs.
Fixes #7015.

LGTM=josharian
R=golang-codereviews, josharian
CC=golang-codereviews
https://golang.org/cl/77140044

11 years agonet/http: Request Body error should not be ignored.
Luka Zakrajšek [Mon, 17 Mar 2014 22:52:52 +0000 (15:52 -0700)]
net/http: Request Body error should not be ignored.

Fixes #7521.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/76320043

11 years agoA+C: Luka Zakrajšek (individual CLA)
Brad Fitzpatrick [Mon, 17 Mar 2014 22:49:32 +0000 (15:49 -0700)]
A+C: Luka Zakrajšek (individual CLA)

Generated by addca.

R=gobot
CC=golang-codereviews
https://golang.org/cl/77120044

11 years agonet/http/fcgi: fix handling of request ID reuse
Catalin Patulea [Mon, 17 Mar 2014 22:47:16 +0000 (15:47 -0700)]
net/http/fcgi: fix handling of request ID reuse

Request ID reuse is allowed by the FastCGI spec [1]. In particular nginx uses
the same request ID, 1, for all requests on a given connection. Because
serveRequest does not remove the request from conn.requests, this causes it to
treat the second request as a duplicate and drops the connection immediately
after beginRequest. This manifests with nginx option 'fastcgi_keep_conn on' as
the following message in nginx error log:

2014/03/17 01:39:13 [error] 730#0: *109 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: x.x.x.x, server: example.org, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9001", host: "example.org"

Because handleRecord and serveRequest run in different goroutines, access to
conn.requests must now be synchronized.

[1] http://www.fastcgi.com/drupal/node/6?q=node/22#S3.3

LGTM=bradfitz
R=bradfitz
CC=golang-codereviews
https://golang.org/cl/76800043

11 years agoC: add Catalin Patulea (Google CLA)
Brad Fitzpatrick [Mon, 17 Mar 2014 22:46:31 +0000 (15:46 -0700)]
C: add Catalin Patulea (Google CLA)

LGTM=iant
R=iant
CC=golang-codereviews
https://golang.org/cl/76400044

11 years agoencoding/hex: add error check for write error.
Rui Ueyama [Mon, 17 Mar 2014 19:07:30 +0000 (12:07 -0700)]
encoding/hex: add error check for write error.

I believe the original author of this code just forgot to check for error here.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/76760043

11 years agomisc/bash/go: Add a completion rule for "go env".
Rui Ueyama [Mon, 17 Mar 2014 18:58:02 +0000 (11:58 -0700)]
misc/bash/go: Add a completion rule for "go env".

"env" is a valid go command. This patch is to make bash to autocomplete it.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/74660045

11 years agoC: add Rui Ueyama (Google CLA)
Brad Fitzpatrick [Mon, 17 Mar 2014 18:57:04 +0000 (11:57 -0700)]
C: add Rui Ueyama (Google CLA)

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/76930044

11 years agodoc: Revise Contribution Guidelines.
Nathan John Youngman [Sun, 16 Mar 2014 22:35:04 +0000 (09:35 +1100)]
doc: Revise Contribution Guidelines.

Smooth out the setup process for new contributors.

* Remove references $GOROOT (often not defined).
* Add a note for contributing to subrepositories.
* Emphasize that hg mail also uploads the latest copy.

LGTM=adg
R=golang-codereviews, iant, adg
CC=golang-codereviews
https://golang.org/cl/74370043

11 years agocmd/gc: fix comment about how GOEXPERIMENT works
Ian Lance Taylor [Sat, 15 Mar 2014 18:18:11 +0000 (11:18 -0700)]
cmd/gc: fix comment about how GOEXPERIMENT works

LGTM=minux.ma
R=golang-codereviews, minux.ma
CC=golang-codereviews
https://golang.org/cl/76270043

11 years agonet: make use of testing.Errorf instead of testing.Fatalf in non-test function goroutines
Mikio Hara [Sat, 15 Mar 2014 04:43:02 +0000 (13:43 +0900)]
net: make use of testing.Errorf instead of testing.Fatalf in non-test function goroutines

See testing.FailNow for further information.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/75900043

11 years agoruntime: fix 386 assembly for syscall.naclWrite
Rémy Oudompheng [Fri, 14 Mar 2014 21:49:46 +0000 (22:49 +0100)]
runtime: fix 386 assembly for syscall.naclWrite

It was using the wrong offset and returned random values
making "runoutput" compiler tests crash.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/76250043

11 years agoliblink, runtime: make nacl/386 binaries valid.
Rémy Oudompheng [Fri, 14 Mar 2014 20:33:55 +0000 (21:33 +0100)]
liblink, runtime: make nacl/386 binaries valid.

They were rejected by NaCl due to AES instructions and
accesses to %gs:0x8, caused by wrong tlsoffset value.

LGTM=iant
R=rsc, dave, iant
CC=golang-codereviews
https://golang.org/cl/76050044

11 years agoruntime: fix another race in bgsweep
Dmitriy Vyukov [Fri, 14 Mar 2014 19:32:12 +0000 (23:32 +0400)]
runtime: fix another race in bgsweep
It's possible that bgsweep constantly does not catch up for some reason,
in this case runfinq was not woken at all.

R=rsc
CC=golang-codereviews
https://golang.org/cl/75940043

11 years agoruntime: fix spans corruption
Dmitriy Vyukov [Fri, 14 Mar 2014 19:25:48 +0000 (23:25 +0400)]
runtime: fix spans corruption
The problem was that spans end up in wrong lists after split
(e.g. in h->busy instead of h->central->empty).
Also the span can be non-swept before split,
I don't know what it can cause, but it's safer to operate on swept spans.
Fixes #7544.

R=golang-codereviews, rsc
CC=golang-codereviews, khr
https://golang.org/cl/76160043

11 years agocmd/6g, runtime: alignment fixes for amd64p32.
Rémy Oudompheng [Fri, 14 Mar 2014 18:37:39 +0000 (19:37 +0100)]
cmd/6g, runtime: alignment fixes for amd64p32.

LGTM=rsc
R=rsc, dave, iant, khr
CC=golang-codereviews
https://golang.org/cl/75820044

11 years agoruntime: report "out of memory" in efence mode
Dmitriy Vyukov [Fri, 14 Mar 2014 17:22:03 +0000 (21:22 +0400)]
runtime: report "out of memory" in efence mode
Currently processes crash with obscure message.
Say that it's "out of memory".

LGTM=rsc
R=golang-codereviews
CC=golang-codereviews, khr, rsc
https://golang.org/cl/75820045

11 years agoruntime: fix a race in bgsweep
Dmitriy Vyukov [Fri, 14 Mar 2014 17:21:44 +0000 (21:21 +0400)]
runtime: fix a race in bgsweep
See the comment for description.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/75670044

11 years agoruntime: do not shrink stacks GOCOPYSTACK=0
Dmitriy Vyukov [Fri, 14 Mar 2014 17:11:04 +0000 (21:11 +0400)]
runtime: do not shrink stacks GOCOPYSTACK=0

LGTM=rsc
R=golang-codereviews
CC=golang-codereviews, khr, rsc
https://golang.org/cl/76070043

11 years agocmd/go: fix invalid go pack command line in the output of go build -x
Jan Ziak [Fri, 14 Mar 2014 15:44:54 +0000 (16:44 +0100)]
cmd/go: fix invalid go pack command line in the output of go build -x

Fixes #7262

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/76110043

11 years agocmd/gc: fix spurious 'not enough arguments to return' error
Jan Ziak [Fri, 14 Mar 2014 15:42:42 +0000 (16:42 +0100)]
cmd/gc: fix spurious 'not enough arguments to return' error

Fixes #6405

LGTM=rsc
R=rsc, iant
CC=golang-codereviews
https://golang.org/cl/72920046

11 years agocmd/gc: replace '·' as '.' in ELF/Mach-O symbol tables
Shenghou Ma [Fri, 14 Mar 2014 14:07:51 +0000 (10:07 -0400)]
cmd/gc: replace '·' as '.' in ELF/Mach-O symbol tables

Old versions of DTrace (as those shipped in OS X and FreeBSD)
don't support unicode characters in symbol names.  Replace '·'
to '.' to make DTrace happy.

Fixes #7493

LGTM=aram, rsc
R=aram, rsc, gobot, iant
CC=golang-codereviews
https://golang.org/cl/72280043

11 years agoruntime: fix use after close race in Solaris network poller
Aram Hăvărneanu [Fri, 14 Mar 2014 13:53:05 +0000 (17:53 +0400)]
runtime: fix use after close race in Solaris network poller

The Solaris network poller uses event ports, which are
level-triggered. As such, it has to re-arm itself after each
wakeup. The arming mechanism (which runs in its own thread) raced
with the closing of a file descriptor happening in a different
thread. When a network file descriptor is about to be closed,
the network poller is awaken to give it a chance to remove its
association with the file descriptor. Because the poller always
re-armed itself, it raced with code that closed the descriptor.

This change makes the network poller check before re-arming if
the file descriptor is about to be closed, in which case it will
ignore the re-arming request. It uses the per-PollDesc lock in
order to serialize access to the PollDesc.

This change also adds extensive documentation describing the
Solaris implementation of the network poller.

Fixes #7410.

LGTM=dvyukov, iant
R=golang-codereviews, bradfitz, iant, dvyukov, aram.h, gobot
CC=golang-codereviews
https://golang.org/cl/69190044

11 years agodebug/macho: handle missing __debug_str section
Keith Randall [Thu, 13 Mar 2014 21:04:29 +0000 (14:04 -0700)]
debug/macho: handle missing __debug_str section

debug/elf does the same thing, use []byte{} for
any missing sections.

Fixes #7510

LGTM=rsc
R=golang-codereviews, iant
CC=golang-codereviews, rsc
https://golang.org/cl/75230043

11 years agoruntime: fix signal handling on Plan 9
Anthony Martin [Thu, 13 Mar 2014 16:00:12 +0000 (09:00 -0700)]
runtime: fix signal handling on Plan 9

LGTM=rsc
R=rsc, 0intro, aram, jeremyjackins, iant
CC=golang-codereviews, lucio.dere, minux.ma, paurea, r
https://golang.org/cl/9796043

11 years agoruntime: improve efence
Dmitriy Vyukov [Thu, 13 Mar 2014 15:04:00 +0000 (19:04 +0400)]
runtime: improve efence
Mark free memory blocks as unused.
On amd64 it allows the process to eat all 128 GB of heap
without killing the machine.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/74070043

11 years agodoc: update go1.3.txt for some performance changes
Dmitriy Vyukov [Thu, 13 Mar 2014 15:03:41 +0000 (19:03 +0400)]
doc: update go1.3.txt for some performance changes

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/75350043

11 years agoruntime: detect stack split after fork
Dmitriy Vyukov [Thu, 13 Mar 2014 13:41:08 +0000 (17:41 +0400)]
runtime: detect stack split after fork
This check would allowed to easily prevent issue 7511.
Update #7511

LGTM=rsc
R=rsc, aram
CC=golang-codereviews
https://golang.org/cl/75260043

11 years agoruntime: harden conditions when runtime panics on crash
Dmitriy Vyukov [Thu, 13 Mar 2014 09:25:59 +0000 (13:25 +0400)]
runtime: harden conditions when runtime panics on crash
This is especially important for SetPanicOnCrash,
but also useful for e.g. nil deref in mallocgc.
Panics on such crashes can't lead to anything useful,
only to deadlocks, hangs and obscure crashes.
This is a copy of broken but already LGTMed
https://golang.org/cl/68540043/

TBR=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/75320043

11 years agoruntime: fix stack size check
Dmitriy Vyukov [Thu, 13 Mar 2014 09:16:02 +0000 (13:16 +0400)]
runtime: fix stack size check
When we copy stack, we check only new size of the top segment.
This is incorrect, because we can have other segments below it.

LGTM=khr
R=golang-codereviews, khr
CC=golang-codereviews, rsc
https://golang.org/cl/73980045

11 years agoruntime: avoid runtime·cgocall in functions called by forkAndExecInChild
Aram Hăvărneanu [Thu, 13 Mar 2014 07:26:01 +0000 (18:26 +1100)]
runtime: avoid runtime·cgocall in functions called by forkAndExecInChild

Calling runtime·cgocall could trigger a GC in the child while
gclock was held by the parent.

Fixes #7511

LGTM=bradfitz, dvyukov, dave
R=golang-codereviews, bradfitz, dvyukov, dave
CC=golang-codereviews, rsc
https://golang.org/cl/75210044

11 years agocmd/gc: fix spurious type errors in walkselect.
Rémy Oudompheng [Thu, 13 Mar 2014 07:14:05 +0000 (08:14 +0100)]
cmd/gc: fix spurious type errors in walkselect.

The lowering to runtime calls introduces hidden pointers to the
arguments of select clauses. When implicit conversions were
involved it could end up with incompatible pointers. Since the
pointed-to types have the same representation, we can introduce a
forced conversion.

Fixes #6847.

LGTM=rsc
R=rsc, iant, khr
CC=golang-codereviews
https://golang.org/cl/72380043

11 years agocmd/6g: fix stack zeroing preamble on amd64p32.
Rémy Oudompheng [Thu, 13 Mar 2014 07:12:38 +0000 (08:12 +0100)]
cmd/6g: fix stack zeroing preamble on amd64p32.

It was using a REP STOSQ but putting in CX the number of 32-bit
words to clear.

LGTM=dave
R=rsc, dave
CC=golang-codereviews
https://golang.org/cl/75240043

11 years agonet: fix TCP keepalive on dragonfly
Mikio Hara [Thu, 13 Mar 2014 05:45:50 +0000 (14:45 +0900)]
net: fix TCP keepalive on dragonfly

Fixes #7528.

LGTM=jsing
R=jsing
CC=golang-codereviews
https://golang.org/cl/75140045

11 years agocmd/go: use correct libraries during gccgo link
Michael Hudson-Doyle [Thu, 13 Mar 2014 03:05:54 +0000 (23:05 -0400)]
cmd/go: use correct libraries during gccgo link

Under some circumstances, gccgoToolchain's ld can pass the path of
build outputs that have been deleted to the link command.

Fixes #7303.

LGTM=rsc
R=golang-codereviews, dave, michael.hudson, rsc
CC=golang-codereviews
https://golang.org/cl/61970044

11 years agoruntime: call symtabinit earlier
Anthony Martin [Thu, 13 Mar 2014 02:42:58 +0000 (19:42 -0700)]
runtime: call symtabinit earlier

Otherwise, we won't get a stack trace in some of the early init.

Here's one example:

        http://build.golang.org/log/a96d10f6aee1fa3e3ae51f41da46d414a7ab02de

After walking the stack by hand in acid, I was able to determine
that the stackalloc inside mpreinit was causing the throw.

LGTM=rsc
R=rsc, dvyukov
CC=golang-codereviews
https://golang.org/cl/72450044

11 years agocmd/gc: make the fpu handle all exceptions on Plan 9
Anthony Martin [Thu, 13 Mar 2014 02:41:36 +0000 (19:41 -0700)]
cmd/gc: make the fpu handle all exceptions on Plan 9

The compilers expect to not be interrupted by floating
point exceptions. On Plan 9, every process starts with
interrupts enabled for invalid operation, stack overflow,
and divide by zero exceptions.

LGTM=rsc
R=rsc, 0intro
CC=golang-codereviews
https://golang.org/cl/72750043

11 years agoos: relax the way we kill processes on Plan 9
Anthony Martin [Thu, 13 Mar 2014 01:12:56 +0000 (18:12 -0700)]
os: relax the way we kill processes on Plan 9

Previously, we wrote "kill" to the process control file
to kill a program. This is problematic because it doesn't
let the program gracefully exit.

This matters especially if the process we're killing is a
Go program. On Unix, sending SIGKILL to a Go program will
automatically kill all runtime threads. On Plan 9, there
are no threads so when the program wants to exit it has to
somehow signal all of the runtime processes. It can't do
this if we mercilessly kill it by writing to it's control
file.

Instead, we now send it a note to invoke it's note handler
and let it perform any cleanup before exiting.

LGTM=rsc
R=rsc, 0intro
CC=golang-codereviews
https://golang.org/cl/74440044

11 years agoruntime: use unoptimized memmove and memclr on Plan 9
Anthony Martin [Thu, 13 Mar 2014 01:12:25 +0000 (18:12 -0700)]
runtime: use unoptimized memmove and memclr on Plan 9

On Plan 9, the kernel disallows the use of floating point
instructions while handling a note. Previously, we worked
around this by using a simple loop in place of memmove.

When I added that work-around, I verified that all paths
from the note handler didn't end up calling memmove. Now
that memclr is using SSE instructions, the same process
will have to be done again.

Instead of doing that, however, this CL just punts and
uses unoptimized functions everywhere on Plan 9.

LGTM=rsc
R=rsc, 0intro
CC=golang-codereviews
https://golang.org/cl/73830044

11 years agocmd/ld: give acid a fighting chance at unwinding the stack
Anthony Martin [Thu, 13 Mar 2014 01:10:31 +0000 (18:10 -0700)]
cmd/ld: give acid a fighting chance at unwinding the stack

Acid can't produce a stack trace without .frame symbols.

Of course, it can only unwind through linear stacks but
this is still better than nothing. (I wrote an acid func
to do the full unwind a long time ago but lost it and
haven't worked up the courage to write it again).

Note that these will only be present in the native symbol
table for Plan 9 binaries.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/72450045

11 years agodoc: update go1.3.txt for regexp change
Brad Fitzpatrick [Wed, 12 Mar 2014 21:23:40 +0000 (14:23 -0700)]
doc: update go1.3.txt for regexp change

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/72640043

11 years agoruntime: fix missing nacl/386 symbol
Dave Cheney [Wed, 12 Mar 2014 20:58:42 +0000 (07:58 +1100)]
runtime: fix missing nacl/386 symbol

syscall.naclWrite was missing from sys_nacl_386.s

This gets ./make.bash passing, but doesn't pass validation. I'm not sure if this is the fault of this change, or validation was broken anyway.

LGTM=rsc
R=minux.ma, rsc
CC=golang-codereviews
https://golang.org/cl/74510043

11 years agodoc/go1.3.txt: add notes about copying stacks, win2k support
Russ Cox [Wed, 12 Mar 2014 20:32:35 +0000 (16:32 -0400)]
doc/go1.3.txt: add notes about copying stacks, win2k support

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/74800043