1
0
mirror of https://github.com/golang/go synced 2024-11-12 01:10:21 -07:00
Commit Graph

30985 Commits

Author SHA1 Message Date
Nodir Turakulov
37dbc7b49c html/template: escape JS in application/json script tag
Since ffd1c781b7 HTML templates check
MIME type in the "type" attribute of "script" tag to decide if contents
should be escaped as JavaScript. The whitelist of MIME types did not
include application/json. Include it in this CL.

Fixes #18159

Change-Id: I17a8a38f2b7789b4b7e941d14279de222eaf2b6a
Reviewed-on: https://go-review.googlesource.com/33899
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-12-04 02:33:58 +00:00
Brad Fitzpatrick
d29f72f472 cmd/dist: remove special test timeout scale for Windows
In https://golang.org/cl/33804 I screwed up a GOOS == "windows"
check into a bogus comparison against GOARCH == "windows".

But turns out the builders are happy anyway, so remove the windows
special case.

Change-Id: I820b1d49d5b3e8cbffe4516fc39f514326dc39f8
Reviewed-on: https://go-review.googlesource.com/33893
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Minux Ma <minux@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-12-03 17:28:26 +00:00
Brad Fitzpatrick
93726522ef runtime: skip GDB tests on mips64
Updates #18173

Change-Id: I4c667c89ba3bf16433a4cef7cb01054f1798667d
Reviewed-on: https://go-review.googlesource.com/33892
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-12-03 17:25:26 +00:00
Josh Bleecher Snyder
e7a0df35b3 cmd/go: add missing newline at end of error message
Change-Id: I9277e869e171d9e051ff9a70ac578b8127fa74f8
Reviewed-on: https://go-review.googlesource.com/33897
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-03 01:43:17 +00:00
Ian Lance Taylor
6270c5ac28 test: add test case for which gccgo generated incorrect GC info
Change-Id: I5e33db9e63f70706882b85ab124a48509797b05a
Reviewed-on: https://go-review.googlesource.com/33790
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-02 21:29:37 +00:00
Filippo Valsorda
5c9035acc1 doc: fix grammar in go1.8.html > crypto/tls
Change-Id: If8200e54b3650f789c5312f10cce32201a199b80
Reviewed-on: https://go-review.googlesource.com/33775
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-02 19:19:03 +00:00
Ian Lance Taylor
130ad87ab7 cmd/link: don't overalign ELF reloc sections
Internal linking on an ELF system creates two reloc sections, which
must be adjacent. The default is to base section alignment on the
section size, but doing that for ELF reloc sections can introduce a
gap. Set the reloc section alignment explicitly to avoid that.

Fixes #18044.

Change-Id: I8ccc131e60937d30c5f715a34c7803258833fc2f
Reviewed-on: https://go-review.googlesource.com/33872
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-12-02 07:13:18 +00:00
Brad Fitzpatrick
9e0f3a1459 doc: correct the number of changes to the language in go1.8.html
And link it.

Change-Id: Ic0105468435299fb1638f86522f4f3ce417ec1c2
Reviewed-on: https://go-review.googlesource.com/33871
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-12-02 06:53:49 +00:00
Robert Griesemer
c676b0f9cf cmd/compile/internal/syntax: remove dead type declaration
Change-Id: I8a3ce0fa513ff943009c5669531132cd23ecf155
Reviewed-on: https://go-review.googlesource.com/33870
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-12-02 06:17:44 +00:00
Shenghou Ma
bcacb6d3f4 vendor/golang_org/x/crypto/chacha20poly1305: revendor to pick up fix for #18154
Fixes #18154.

Change-Id: I1836b63a380b7fc2f9965e909859b1a89a3ae5d5
Reviewed-on: https://go-review.googlesource.com/33856
Run-TryBot: Minux Ma <minux@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-02 06:00:05 +00:00
Kevin Burke
64969c8ef5 doc: update suggested Go installation version
Previously the docs suggested downloading 1.7.2 (no good) or 1.7.3 (has
security flaw).

Change-Id: Ifabe85908df8d6591c0957ef4bb1b800fc145793
Reviewed-on: https://go-review.googlesource.com/33808
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-02 03:31:49 +00:00
Ian Lance Taylor
f52e20582a doc: CL 32796 was reverted, so remove it from go1.8.html
Reversion CL was 33770.

Change-Id: I119f26796bb2b66d302e132dd118847ac3bd6633
Reviewed-on: https://go-review.googlesource.com/33807
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-12-02 00:26:16 +00:00
Brad Fitzpatrick
4bc7b5aeba net/http: revert change making NewRequest set ContentLength -1
The introduction of NoBody and related body-peeking bug fixes also
added a "cleanup" of sorts to make NewRequest set the returned
Requests's ContentLength to -1 when it didn't know it.

Using -1 to mean unknown is what the documentation says, but then
people apparently(?) depended on it being zero so they could do this:

    req, _ := http.NewRequest("POST", url, someNonNilReaderWithUnkownSize)
    req.Body = nil
    res, err := http.DefaultClient.Do(req)

... and expect it to work.

After https://golang.org/cl/31445 the contrived(?) code above stopped
working, since Body was nil and ContentLength was -1, which has been
disallowed since Go 1.0.

So this restores the old behavior of NewRequest, not setting it to -1.
That part of the fix isn't required as of https://golang.org/cl/31726
(which added NoBody)

I still don't know whether this bug is hypothetical or actually
affected people in practice.

Let's assume it's real for now.

Fixes #18117

Change-Id: I42400856ee92a1a4999b5b4668bef97d885fbb53
Reviewed-on: https://go-review.googlesource.com/33801
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-12-01 23:49:35 +00:00
Brad Fitzpatrick
7736cbafd9 cmd/dist: adjust default timeout scale for mips
Per recommendation from imgtec.com folk.

Change-Id: I9b6f30572f257acce59842ac55362f52fe36c5ab
Reviewed-on: https://go-review.googlesource.com/33804
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-12-01 23:46:14 +00:00
Ian Lance Taylor
fd483b6f62 cmd/go: check MustHaveExternalNetwork before go get tests
Also change a couple of `go get` tests to use MustHaveExternalNetwork
rather than checking testing.Short.

Change-Id: I98ccc05b8b0354f1b7486e28dac5f8341c342a07
Reviewed-on: https://go-review.googlesource.com/33802
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-01 23:42:04 +00:00
Matthew Dempsky
e3a1d0cb7c cmd/internal/obj: rename obj.go to line.go
This file is entirely about the implementation of LineHist, and I can
never remember which generic filename in cmd/internal/obj has it.
Rename to line.go to match the already existing line_test.go.

Change-Id: Id01f3339dc550c9759569d5610d808b17bca44d0
Reviewed-on: https://go-review.googlesource.com/33803
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-01 23:11:15 +00:00
Daniel Theophanes
ae9712c766 database/sql: ensure Commit and Rollback return ErrTxDone
Ensure documented behavior of returning ErrTxDone if the Tx has
already been committed or rolled back.

Fixes #18147

Change-Id: I07dc75bef4dbd4dd88dd252c96dc8ab99f28c00e
Reviewed-on: https://go-review.googlesource.com/33793
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-01 22:20:31 +00:00
Robert Griesemer
2d136ae82e cmd/compile: correctly parse //line filename:line where filename contains ':'
This was a regression from 1.7. See the issue for details.

Fixes #18149.

Change-Id: Ic8f5a35d14edf9254b1275400316cff7aff32a27
Reviewed-on: https://go-review.googlesource.com/33799
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-12-01 22:01:33 +00:00
Chris Broadfoot
751c8903d2 doc: fix typo in go1.8.html
Change-Id: I853da2666ed2b5f8b80bd9438f8c352f233b9c89
Reviewed-on: https://go-review.googlesource.com/33800
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-01 21:32:50 +00:00
Brad Fitzpatrick
1102c70bc4 net/http: teach NewRequest that NoBody has ContentLength zero
NoBody is new in Go 1.8.

Found while investigating #18117

Change-Id: I6bda030f358e2270f090d108cb3a89c8a2665fcb
Reviewed-on: https://go-review.googlesource.com/33714
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-12-01 20:36:18 +00:00
Chris Broadfoot
2cfb6d5442 doc: document go1.7.4 and go1.6.4
Change-Id: I0728afe6a1d1e0aee4701e51a5548fa9fd637b66
Reviewed-on: https://go-review.googlesource.com/33795
Reviewed-by: Russ Cox <rsc@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-01 20:17:21 +00:00
Chris Broadfoot
b42d4a8b0e doc: document go1.7.3 and add note to go1.7.2 that it should not be used
Change-Id: I3dd1513e927733ce5c63928da772cb81760ba869
Reviewed-on: https://go-review.googlesource.com/31442
Reviewed-by: Andrew Gerrand <adg@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-on: https://go-review.googlesource.com/33794
2016-12-01 20:08:56 +00:00
Elias Naur
63a7ee7823 net: fix writev tests on Android
Change-Id: Iacced25363f54ee2cc1e00a71605dba7fb447162
Reviewed-on: https://go-review.googlesource.com/33772
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-01 19:58:54 +00:00
Keith Randall
c96e94e69d cmd/compile: generate frame pointers for otherwise frameless functions
func f() {
    g()
}

We mistakenly don't add a frame pointer for f.  This means f
isn't seen when walking the frame pointer linked list.  That
matters for kernel-gathered profiles, and is an impediment for
issues like #16638.

To fix, allocate a stack frame even for otherwise frameless functions
like f.  It is a bit tricky because we need to avoid some runtime
internals that really, really don't want one.

No test at the moment, as only kernel CPU profiles would catch it.
Tests will come with the implementation of #16638.

Fixes #18103

Change-Id: I411206cc9de4c8fdd265bee2e4fa61d161ad1847
Reviewed-on: https://go-review.googlesource.com/33754
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
2016-12-01 19:25:17 +00:00
Quentin Smith
7e5b2e0ec1 crypto/x509: read Darwin trust settings for root CAs
Darwin separately stores bits indicating whether a root certificate
should be trusted; this changes Go to read and use those when
initializing SystemCertPool.

Unfortunately, the trust API is very slow. To avoid a delay of up to
0.5s in initializing the system cert pool, we assume that
the trust settings found in kSecTrustSettingsDomainSystem will always
indicate trust. (That is, all root certs Apple distributes are trusted.)
This is not guaranteed by the API but is true in practice.

In the non-cgo codepath, we do not have that benefit, so we must check
the trust status of every certificate. This causes about 0.5s of delay
in initializing the SystemCertPool.

On OS X 10.11 and older, the "security" command requires a certificate
to be provided in a file and not on stdin, so the non-cgo codepath
creates temporary files for each certificate, further slowing initialization.

Updates #18141.

Change-Id: If681c514047afe5e1a68de6c9d40ceabbce54755
Reviewed-on: https://go-review.googlesource.com/33721
Run-TryBot: Quentin Smith <quentin@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
2016-12-01 19:24:34 +00:00
David Lazar
9fbfe7cca0 cmd/compile: do not inline functions marked cgo_unsafe_args
Now the net tests pass with -gcflags '-l=4'.

Fixes #18125.

Change-Id: I4e3a46eb0cb3a93b203e74f5bc99c5822331f535
Reviewed-on: https://go-review.googlesource.com/33722
Reviewed-by: Keith Randall <khr@golang.org>
2016-12-01 18:59:59 +00:00
Keith Randall
3c2e4ed8d3 cmd/objdump: copy gosym.PCValue into internal package
... so we don't have to export gosym.PCValue.

Change-Id: Ie8f196d5e5ab63e3e69d1d7b4bfbbf32b7b5e4f5
Reviewed-on: https://go-review.googlesource.com/33791
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-12-01 18:20:04 +00:00
Mohit Agarwal
612469ab0b cmd/go: hide the "TERM" environment variable from "go bug"
Fixes #18128

Change-Id: I5530c9d774a1e398cd759a05bbf308e6e42f0007
Reviewed-on: https://go-review.googlesource.com/33810
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-12-01 18:09:51 +00:00
Brad Fitzpatrick
208d4d2227 net/http: clarify Request.Context's lifetime
Reverts https://golang.org/cl/23672 and tweaks the text to clarify
HTTP/2 request cancelations also cancel the context (not just closing
the TCP conn).

Fixes #18143

Change-Id: I9f838e09b906d455c98f676e5bc5559f8f7ecb17
Reviewed-on: https://go-review.googlesource.com/33769
Reviewed-by: Chris Broadfoot <cbro@golang.org>
2016-12-01 17:42:25 +00:00
Daniel Theophanes
e5e0562774 database/sql: document expectations for named parameters
Require parameter names to not begin with a symbol.

Change-Id: I5dfe9d4e181f0daf71dad2f395aca41c68678cbe
Reviewed-on: https://go-review.googlesource.com/33493
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-12-01 16:52:12 +00:00
Austin Clements
ea1b90f855 runtime: fix incorrect comment about bitvector layout
Commit 303b69fe packed bitvectors more tightly, but missed a comment
describing their old layout. Update that comment.

Change-Id: I095ccb01f245197054252545f37b40605a550dec
Reviewed-on: https://go-review.googlesource.com/33718
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-12-01 16:42:47 +00:00
Brad Fitzpatrick
8a103bd4ce doc: remove space in "Go 1. 8"
And reflow paragraph while I'm at it.

Change-Id: Ia13bb364783790fbd9f8b69ef268f8a4b71679cb
Reviewed-on: https://go-review.googlesource.com/33767
Reviewed-by: Chris Broadfoot <cbro@golang.org>
2016-12-01 16:30:38 +00:00
Brad Fitzpatrick
583b72dea1 doc: clarify zip behavior in go1.8.html
Updates #17929

Change-Id: I03b8847384c6cd8c43fe8bf2d75cd26db7063b8b
Reviewed-on: https://go-review.googlesource.com/33762
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2016-12-01 16:19:34 +00:00
Daniel Theophanes
85bcf7f59d doc: update go1.8 release notes to say NamedArg not NamedParam
Fixes #18135

Change-Id: I54ef9d6fc804d0fb77b729a04367a138e40f9ddf
Reviewed-on: https://go-review.googlesource.com/33766
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-01 15:58:59 +00:00
Elias Naur
0b2daa5650 Revert "runtime: handle SIGPIPE in c-archive and c-shared programs"
This reverts commit d24b57a6a1.

Reason for revert: Further complications arised (issue 18100). We'll try again in Go 1.9.

Change-Id: I5ca93d2643a4be877dd9c2d8df3359718440f02f
Reviewed-on: https://go-review.googlesource.com/33770
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Minux Ma <minux@golang.org>
Run-TryBot: Minux Ma <minux@golang.org>
2016-12-01 11:23:17 +00:00
Shenghou Ma
16c33992e0 doc/go1.8.html: announce 1.8 will be the last to support linux/arm prior to ARMv6K
Updates #17082.

Change-Id: I0bf330d1a1ebb7e31e42d03287160b474522c332
Reviewed-on: https://go-review.googlesource.com/33455
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-01 07:17:51 +00:00
Shenghou Ma
3a369a0f59 cmd/dist: add -check-armv6k command to check for ARMv6K
so that our release note can reference a simple command to check if
the processor implements ARMv6K or not.

Updates #17082.

Change-Id: I9ca52051e5517394a7cd6b778fb822c3ee435f84
Reviewed-on: https://go-review.googlesource.com/33686
Run-TryBot: Minux Ma <minux@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-01 07:17:38 +00:00
Brad Fitzpatrick
9ea306a10c sort: add Slice example
Change-Id: I34ba4eaf1d232b639998ad3bbb0d075dd097722b
Reviewed-on: https://go-review.googlesource.com/33763
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Dominik Honnef <dominik@honnef.co>
2016-12-01 05:43:05 +00:00
Chris Broadfoot
41908a5453 api: promote next.txt to go1.8.txt, update go tool
Change-Id: I37f2893ce14009efe095aac3bc811d650c66bf2a
Reviewed-on: https://go-review.googlesource.com/33761
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-01 02:54:21 +00:00
Chris Broadfoot
f1a8a63dab api: update next.txt (remove database/sql.NamedParam)
Updates #18099

Change-Id: I16b4b2dd881d63cbb406d14a4fd960f0a777a452
Reviewed-on: https://go-review.googlesource.com/33760
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-01 02:41:50 +00:00
Ian Lance Taylor
d4b704e110 cmd/cgo: fix cgo checking when fetching errno value
Fixes #18126.

Change-Id: I7ae090945ef203673b06eb94817cc5c894b5eadc
Reviewed-on: https://go-review.googlesource.com/33752
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-01 02:13:50 +00:00
Brad Fitzpatrick
e207032589 doc: go1.8.html review feedback
TBR=See https://golang.org/cl/33244

Updates #17929

Change-Id: Ic6d449e7822daa70f3fe17e942e9d29233547019
Reviewed-on: https://go-review.googlesource.com/33759
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-01 02:00:09 +00:00
Brad Fitzpatrick
b43384e871 encoding/binary: document the new bool support
Updates #16856

Change-Id: I57af6b0c0d5ecdaf19cf6f969b05ec9ec03058f1
Reviewed-on: https://go-review.googlesource.com/33756
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-12-01 00:51:24 +00:00
Russ Cox
5dd4d6edb8 cmd/go: document GOPATH default exception
Doesn't get defaulted if $HOME/go is a GOROOT.

Change-Id: I6ac8211a74029e4ad70a50f6e7884a039a27ab05
Reviewed-on: https://go-review.googlesource.com/33720
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-11-30 22:31:18 +00:00
Russ Cox
74628a8b9f doc, cmd/go: adjust documentation for default GOPATH
Replaces CL 33356.

Fixes #17262.

Change-Id: Idfb2343e90771775e51a66c63760f458737a288c
Reviewed-on: https://go-review.googlesource.com/33730
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-11-30 21:40:00 +00:00
David Lazar
5d1b53a944 cmd/compile: generate code that type checks when inlining variadic functions
This fixes a bug in -l=3 or higher.

To inline a variadic function, the compiler generates code that constructs
a slice of arguments for the variadic parameter. Consider the function

  func Foo(xs ...string)

and the call Foo("hello", "world"). To inline the call to Foo, the
compiler used to generate

  xs := [2]string{"hello", "world"}[:]

which doesn't type check:

  invalid operation [2]string literal[:] (slice of unaddressable value).

Now, the compiler generates

  xs := []string{"hello", "world"}

which does type check.

Fixes #18116.

Change-Id: I0ee531ef2e6cc276db6fb12602b25a46d6d5db21
Reviewed-on: https://go-review.googlesource.com/33671
Reviewed-by: Keith Randall <khr@golang.org>
2016-11-30 19:46:00 +00:00
Brad Fitzpatrick
01dda42252 doc: document default GOPATH in go1.8.html
And fix a bad link.

TBR=See https://golang.org/cl/33244

Updates #17929

Change-Id: Ib16cf55cdc4a5340f2f4f96ad5934a9fe7d49d75
Reviewed-on: https://go-review.googlesource.com/33716
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-11-30 19:26:45 +00:00
Daniel Theophanes
2a64ebfc6d database/sql: deflake query cancel tests
Rather then using a sleep in the fake DB, go to a channel
select and wait for the context to be done.

Fixes #18115

Change-Id: I6bc3a29db58c568d0a7ea06c2a354c18c9e798b2
Reviewed-on: https://go-review.googlesource.com/33712
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-11-30 18:40:03 +00:00
Austin Clements
f6bff1d587 runtime: fix undead arguments in cgocall
From the garbage collector's perspective, time can move backwards in
cgocall. However, in the midst of this time warp, the pointer
arguments to cgocall can go from dead back to live. If a stack growth
happens while they're dead and then a GC happens when they become live
again, GC can crash with a bad heap pointer.

Specifically, the sequence that leads to a panic is:

1. cgocall calls entersyscall, which saves the PC and SP of its call
site in cgocall. Call this PC/SP "X". At "X" both pointer arguments
are live.

2. cgocall calls asmcgocall. Call the PC/SP of this call "Y". At "Y"
neither pointer argument is live.

3. asmcgocall calls the C code, which eventually calls back into the
Go code.

4. cgocallbackg remembers the saved PC/SP "X" in some local variables,
calls exitsyscall, and then calls cgocallbackg1.

5. The Go code causes a stack growth. This stack unwind sees PC/SP "Y"
in the cgocall frame. Since the arguments are dead at "Y", they are
not adjusted.

6. The Go code returns to cgocallbackg1, which calls reentersyscall
with the recorded saved PC/SP "X", so "X" gets stashed back into
gp.syscallpc/sp.

7. GC scans the stack. It sees there's a saved syscall PC/SP, so it
starts the traceback at PC/SP "X". At "X" the arguments are considered
live, so it scans them, but since they weren't adjusted, the pointers
are bad, so it panics.

This issue started as of commit ca4089ad, when the compiler stopped
marking arguments as live for the whole function.

Since this is a variable liveness issue, fix it by adding KeepAlive
calls that keep the arguments live across this whole time warp.

The existing issue7978 test has all of the infrastructure for testing
this except that it's currently up to chance whether a stack growth
happens in the callback (it currently only happens on the
linux-amd64-noopt builder, for example). Update this test to force a
stack growth, which causes it to fail reliably without this fix.

Fixes #17785.

Change-Id: If706963819ee7814e6705693247bcb97a6f7adb8
Reviewed-on: https://go-review.googlesource.com/33710
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
2016-11-30 17:09:17 +00:00
Austin Clements
3f0f24df7b runtime: use standard comment style in cgocall
Change-Id: I9f2c2da4aa512729ae40562b06601da95ba50d6f
Reviewed-on: https://go-review.googlesource.com/33689
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
2016-11-30 17:09:06 +00:00