- 18 May, 2016 21 commits
-
-
Keith Randall authored
Introduce a KeepAlive op which makes sure that its argument is kept live until the KeepAlive. Use KeepAlive to mark pointer input arguments as live after each function call and at each return. We do this change only for pointer arguments. Those are the critical ones to handle because they might have finalizers. Doing compound arguments (slices, structs, ...) is more complicated because we would need to track field liveness individually (we do that for auto variables now, but inputs requires extra trickery). Turn off the automatic marking of args as live. That way, when args are explicitly nulled, plive will know that the original argument is dead. The KeepAlive op will be the eventual implementation of runtime.KeepAlive. Fixes #15277 Change-Id: I5f223e65d99c9f8342c03fbb1512c4d363e903e5 Reviewed-on: https://go-review.googlesource.com/22365Reviewed-by: David Chase <drchase@google.com> Reviewed-by: Russ Cox <rsc@golang.org>
-
Andrew Gerrand authored
Fixes #15399 Change-Id: I5b9645cb9ddede6981ce0a005e0c6fdd8a751c6f Reviewed-on: https://go-review.googlesource.com/22824Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Minux Ma <minux@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-
Brad Fitzpatrick authored
Fixes #10069 Change-Id: I3819ff597d5a0c8e785403bf9d65a054f50655a6 Reviewed-on: https://go-review.googlesource.com/23207Reviewed-by: Russ Cox <rsc@golang.org>
-
Brad Fitzpatrick authored
Updates x/net/http2/hpack to rev 6050c111 for: http2/hpack: forbid excess and invalid padding in hpack decoder https://golang.org/cl/23067 Updates #15614 Change-Id: I3fbf9b265bfa5e49e6aa97d8c34e08214cfcc49a Reviewed-on: https://go-review.googlesource.com/23208Reviewed-by: Carl Mastrangelo <notcarl@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Brad Fitzpatrick authored
Updates x/net/http2 to 3b99394 for golang.org/cl/23205 And associated tests. Fixes #12580 Change-Id: I1f4b59267b453d241f2afaa315b7fe10d477e52d Reviewed-on: https://go-review.googlesource.com/23206Reviewed-by: Andrew Gerrand <adg@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Brad Fitzpatrick authored
In https://golang.org/3210, Transport errors occurring before receiving response headers were wrapped in another error type to indicate to the retry logic elsewhere that the request might be re-tryable. But a check for err == io.EOF was missed, which then became false once io.EOF was wrapped in the beforeRespHeaderError type. The beforeRespHeaderError was too fragile. Remove it. I tried to fix it in an earlier version of this CL and just broke different things instead. Also remove the "markBroken" method. It's redundant and confusing. Also, rename the checkTransportResend method to shouldRetryRequest and make it return a bool instead of an error. This also helps readability. Now the code recognizes the two main reasons we'd want to retry a request: because we never wrote the request in the first place (so: count the number of bytes we've written), or because the server hung up on us before we received response headers for an idempotent request. As an added bonus, this could make POST requests safely re-tryable since we know we haven't written anything yet. But it's too late in Go 1.7 to enable that, so we'll do that later (filed #15723). This also adds a new internal (package http) test, since testing this blackbox at higher levels in transport_test wasn't possible. Fixes #15446 Change-Id: I2c1dc03b1f1ebdf3f04eba81792bd5c4fb6b6b66 Reviewed-on: https://go-review.googlesource.com/23160Reviewed-by: Andrew Gerrand <adg@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Ilya Tocar authored
Similar to crc32 slicing by 8. This also fixes a Crc64KB benchmark actually using 1024 bytes. Crc64/ISO64KB-4 147µs ± 0% 37µs ± 0% -75.05% (p=0.000 n=18+18) Crc64/ISO4KB-4 9.19µs ± 0% 2.33µs ± 0% -74.70% (p=0.000 n=19+20) Crc64/ISO1KB-4 2.31µs ± 0% 0.60µs ± 0% -73.81% (p=0.000 n=19+15) Crc64/ECMA64KB-4 147µs ± 0% 37µs ± 0% -75.05% (p=0.000 n=20+20) Crc64/Random64KB-4 147µs ± 0% 41µs ± 0% -72.17% (p=0.000 n=20+18) Crc64/Random16KB-4 36.7µs ± 0% 36.5µs ± 0% -0.54% (p=0.000 n=18+19) name old speed new speed delta Crc64/ISO64KB-4 446MB/s ± 0% 1788MB/s ± 0% +300.72% (p=0.000 n=18+18) Crc64/ISO4KB-4 446MB/s ± 0% 1761MB/s ± 0% +295.20% (p=0.000 n=18+20) Crc64/ISO1KB-4 444MB/s ± 0% 1694MB/s ± 0% +281.46% (p=0.000 n=19+20) Crc64/ECMA64KB-4 446MB/s ± 0% 1788MB/s ± 0% +300.77% (p=0.000 n=20+20) Crc64/Random64KB-4 446MB/s ± 0% 1603MB/s ± 0% +259.32% (p=0.000 n=20+18) Crc64/Random16KB-4 446MB/s ± 0% 448MB/s ± 0% +0.54% (p=0.000 n=18+20) Change-Id: I1c7621d836c486d6bfc41dbe1ec2ff9ab11aedfc Reviewed-on: https://go-review.googlesource.com/22222 Run-TryBot: Ilya Tocar <ilya.tocar@intel.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-
Lee Hinman authored
in root_cgo_darwin.go only certificates from the System Domain were being used in FetchPEMRoots. This patch adds support for getting certificates from all three domains (System, Admin, User). Also it will only read trusted certificates from those Keychains. Because it is possible to trust a non Root certificate, this patch also adds a checks to see if the Subject and Issuer name are the same. Fixes #14514 Change-Id: Ia03936d7a61d1e24e99f31c92f9927ae48b2b494 Reviewed-on: https://go-review.googlesource.com/20351Reviewed-by: Russ Cox <rsc@golang.org>
-
Adam Langley authored
The fact that crypto/ecdsa.Verify didn't reject negative inputs was a mistake on my part: I had unsigned numbers on the brain. However, it doesn't generally cause problems. (ModInverse results in zero, which results in x being zero, which is rejected.) The amd64 P-256 code will crash when given a large, negative input. This fixes both crypto/ecdsa to reject these values and also the P-256 code to ignore the sign of inputs. Change-Id: I6370ed7ca8125e53225866f55b616a4022b818f8 Reviewed-on: https://go-review.googlesource.com/22093 Run-TryBot: Adam Langley <agl@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Monty Taylor authored
Go is being proposed as an officially supported language for elements of OpenStack: https://review.openstack.org/#/c/312267/ As such, repos that exist in OpenStack's git infrastructure are likely to become places from which people might want to go get things. Allow optional .git suffixes to allow writing code that depends on git.openstack.org repos that will work with older go versions while we wait for this support to roll out. Change-Id: Ia64bdb1dafea33b1c3770803230d30ec1059df22 Reviewed-on: https://go-review.googlesource.com/23135Reviewed-by: Russ Cox <rsc@golang.org>
-
David Chase authored
sparseSet and sparseMap only need 32 bit integers in their arrays, since a sparseEntry key is also limited to 32 bits. This appears to reduce the space allocated for at least one pathological compilation by 1%, perhaps more. Not necessarily for 1.7, but it saves a little and is very low-risk. Change-Id: Icf1185859e9f5fe1261a206b441e02c34f7d02fd Reviewed-on: https://go-review.googlesource.com/22972 Run-TryBot: David Chase <drchase@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-
Cuihtlauac ALVARADO authored
On some systems, gdb is set to: "startup-with-shell on". This breaks runtime_test. This just make sure gdb does not start by spawning a shell. Fixes #15354 Change-Id: Ia040931c61dea22f4fdd79665ab9f84835ecaa70 Reviewed-on: https://go-review.googlesource.com/23142Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Matthew Dempsky authored
Previously statements like f(unsafe.Pointer(g()), int(h())) would be reordered into a sequence of statements like autotmp_g := g() autotmp_h := h() f(unsafe.Pointer(autotmp_g), int(autotmp_h)) which can leave g's temporary value on the stack as a uintptr, rather than an unsafe.Pointer. Instead, recognize uintptr-to-unsafe.Pointer conversions when reordering function calls to instead produce: autotmp_g := unsafe.Pointer(g()) autotmp_h := h() f(autotmp_g, int(autotmp_h)) Fixes #15329. Change-Id: I2cdbd89d233d0d5c94791513a9fd5fd958d11ed5 Reviewed-on: https://go-review.googlesource.com/22273 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-
Ian Lance Taylor authored
Fixes #14656. Change-Id: I37a9aa51705ae18bd034f2cc6dbf06a55f969197 Reviewed-on: https://go-review.googlesource.com/23202Reviewed-by: Rob Pike <r@golang.org>
-
Mikio Hara authored
Change-Id: I7881e3353dc5cd9755a79ea0eab146c6a0a08306 Reviewed-on: https://go-review.googlesource.com/23195 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Mikio Hara authored
Looks like some version of Android still fails with "servname not supported for ai_socktype". It probably doesn't support ai_socktype=SOCK_STREAM. Updates #14576. Change-Id: I77ecff147d5b759e3281b3798c60f150a4aab811 Reviewed-on: https://go-review.googlesource.com/23194Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Brad Fitzpatrick authored
Fixes #14793 Change-Id: I408056d096cd6a999fa5e349704b5ea8e26d2e4e Reviewed-on: https://go-review.googlesource.com/23201Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Ian Lance Taylor authored
The signal might get delivered to a different thread, and that thread might not run again before the currently running thread returns and exits. Sleep to give the other thread time to pick up the signal and crash. Not tested for all cases, but, optimistically: Fixes #14063. Change-Id: Iff58669ac6185ad91cce85e0e86f17497a3659fd Reviewed-on: https://go-review.googlesource.com/23203 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Mikio Hara <mikioh.mikioh@gmail.com>
-
Emmanuel Odeke authored
Update the doc for CreateCertificateRequest to state that it creates a `new certificate request` instead of just a `new certificate` Fixes #14649. Change-Id: Ibbbcf91d74168998990990e78e5272a6cf294d51 Reviewed-on: https://go-review.googlesource.com/23204Reviewed-by: Russ Cox <rsc@golang.org>
-
Brad Fitzpatrick authored
Verify that for a server doing chunked encoding, with the final data and EOF arriving together, the client will reuse the connection even if it closes the body without seeing an EOF. The server sends at least one non-zero chunk and one zero chunk. This verifies that the client's bufio reading reads ahead and notes the EOF, so even if the JSON decoder doesn't read the EOF itself, as long as somebody sees it, a close won't forcible tear down the connection. This was true at least of https://golang.org/cl/21291 No code change. Test already passed (even with lots of runs, including in race mode with randomized goroutine scheduling). Updates #15703 Change-Id: I2140b3eec6b099b6b6e54f153fe271becac5d949 Reviewed-on: https://go-review.googlesource.com/23200 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>
-
James Chacon authored
racefini calls __tsan_fini which is C code and at the end of it invoked the standard C library exit(3) call. This has undefined behavior if invoked more than once. Specifically in C++ programs it caused static destructors to run twice. At least on glibc impls it also means the at_exit handlers list (where those are stored) also free's a list entry when it completes these. So invoking twice results in a double free at exit which trips debug memory allocation tracking. Fix all of this by using an atomic as a boolean barrier around calls to racefini being invoked > 1 time. Fixes #15578 Change-Id: I49222aa9b8ded77160931f46434c61a8379570fc Reviewed-on: https://go-review.googlesource.com/22882Reviewed-by: Dmitry Vyukov <dvyukov@google.com> Run-TryBot: Dmitry Vyukov <dvyukov@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
- 17 May, 2016 6 commits
-
-
Alessandro Arzilli authored
Fixes #15675 Change-Id: I8bad220988e5d690f20804db970b2db037c81187 Reviewed-on: https://go-review.googlesource.com/23086Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Mikio Hara authored
Fixes #14576. Change-Id: I760907c67c97cb827cf48ba7eb0bb2f4f8d4d790 Reviewed-on: https://go-review.googlesource.com/23111 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Colin Cross authored
The initial implementation of reflect.StructOf in https://golang.org/cl/9251 had a limitation that field names had to be ASCII, which was later lifted by https://golang.org/cl/21777. Remove the out-of-date documentation disallowing UTF-8 field names. Updates: #5748 Updates: #15064 Change-Id: I2c5bfea46bfd682449c6e847fc972a1a131f51b7 Reviewed-on: https://go-review.googlesource.com/23170Reviewed-by: David Crawshaw <crawshaw@golang.org>
-
Konstantin Shaposhnikov authored
os.SIGINT is not defined, os.Interrupt or syscall.SIGINT should be used. Change-Id: I39867726d28e179d1160a4fd353b7bea676c9dbb Reviewed-on: https://go-review.googlesource.com/23127Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Mikio Hara authored
Also replaces google.com with golang.org in package documentation. Updates #15228. Change-Id: I554fa960878fa44557a522635ed412d8d7548d3f Reviewed-on: https://go-review.googlesource.com/23126Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Mikio Hara authored
This change drops parseInterfaceTable which becomes unnecessary by the golang.org/x/net/route plumbing. Change-Id: I05f96e347de950bb1e9292bb3eeff01bb40e292f Reviewed-on: https://go-review.googlesource.com/23125 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
- 16 May, 2016 13 commits
-
-
Scott Bell authored
Fixes #15348 Change-Id: I9e0e1e3a26fa4cd697d2c613e6b4952188b7c7e1 Reviewed-on: https://go-review.googlesource.com/23150Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
andrew werner authored
before this change, when io.MultiReader was called many times but contain few underlying readers, calls to Read were unnecessarily expensive. Fixes #13558 Change-Id: I3ec4e88c7b50c075b148331fb1b7348a5840adbe Reviewed-on: https://go-review.googlesource.com/17873Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Simon Thulbourn authored
Adds a transparent sort to the mime/multipart package, which is only used in the CreatePart func. This will ensure the ordering of the MIMEHeader. The point of this change was to ensure the output would be consistent and something that could be depended on. Fixes #13522 Change-Id: I9584ef9dbe98ce97d536d897326914653f8d9ddf Reviewed-on: https://go-review.googlesource.com/17497Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Brad Fitzpatrick authored
Change-Id: I7627e480d5d2366cba223fd81635c4115649f752 Reviewed-on: https://go-review.googlesource.com/23154Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Ian Lance Taylor authored
Issue #15613 points out that the darwin builders have been getting regular failures in which a process that should exit with a SIGPIPE signal is instead exiting with exit status 2. The code calls runtime.raise. On most systems runtime.raise is the equivalent of pthread_kill(gettid(), sig); that is, it kills the thread with the signal, which should ensure that the program does not keep going. On darwin, however, runtime.raise is actually kill(getpid(), sig); that is, it sends a signal to the entire process. If the process decides to deliver the signal to a different thread, then it is possible that in some cases the thread that calls raise is able to execute the next system call before the signal is actually delivered. That would cause the observed error. I have not been able to recreate the problem myself, so I don't know whether this actually fixes it. But, optimistically: Fixed #15613. Change-Id: I60c0a9912aae2f46143ca1388fd85e9c3fa9df1f Reviewed-on: https://go-review.googlesource.com/23152 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Scott Bell authored
Fixes #15188 Change-Id: I0ab7791f7db499cef6bc52292d3d93ff4da7caff Reviewed-on: https://go-review.googlesource.com/23151Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
David Chase authored
This adds a sparse method for locating nearest ancestors in a dominator tree, and checks blocks with more than one predecessor for differences and inserts phi functions where there are. Uses reversed post order to cut number of passes, running it from first def to last use ("last use" for paramout and mem is end-of-program; last use for a phi input from a backedge is the source of the back edge) Includes a cutover from old algorithm to new to avoid paying large constant factor for small programs. This keeps normal builds running at about the same time, while not running over-long on large machine-generated inputs. Add "phase" flags for ssa/build -- ssa/build/stats prints number of blocks, values (before and after linking references and inserting phis, so expansion can be measured), and their product; the product governs the cutover, where a good value seems to be somewhere between 1 and 5 million. Among the files compiled by make.bash, this is the shape of the tail of the distribution for #blocks, #vars, and their product: #blocks #vars product max 6171 28180 173,898,780 99.9% 1641 6548 10,401,878 99% 463 1909 873,721 95% 152 639 95,235 90% 84 359 30,021 The old algorithm is indeed usually fastest, for 99%ile values of usually. The fix to LookupVarOutgoing ( https://go-review.googlesource.com/#/c/22790/ ) deals with some of the same problems addressed by this CL, but on at least one bug ( #15537 ) this change is still a significant help. With this CL: /tmp/gopath$ rm -rf pkg bin /tmp/gopath$ time go get -v -gcflags -memprofile=y.mprof \ github.com/gogo/protobuf/test/theproto3/combos/... ... real 4m35.200s user 13m16.644s sys 0m36.712s and pprof reports 3.4GB allocated in one of the larger profiles With tip: /tmp/gopath$ rm -rf pkg bin /tmp/gopath$ time go get -v -gcflags -memprofile=y.mprof \ github.com/gogo/protobuf/test/theproto3/combos/... ... real 10m36.569s user 25m52.286s sys 4m3.696s and pprof reports 8.3GB allocated in the same larger profile With this CL, most of the compilation time on the benchmarked input is spent in register/stack allocation (cumulative 53%) and in the sparse lookup algorithm itself (cumulative 20%). Fixes #15537. Change-Id: Ia0299dda6a291534d8b08e5f9883216ded677a00 Reviewed-on: https://go-review.googlesource.com/22342Reviewed-by: Keith Randall <khr@golang.org> Run-TryBot: David Chase <drchase@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Austin Clements authored
This should help with debugging failures. For #15138 and #15477. Change-Id: I77db2b6375d8b4403d3edf5527899d076291e02c Reviewed-on: https://go-review.googlesource.com/23134 Run-TryBot: Austin Clements <austin@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
-
Scott Bell authored
Fixes #15424 Change-Id: Ib9e97509f5ac239ee54fe6fe37152a7f5fc75087 Reviewed-on: https://go-review.googlesource.com/23109Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Austin Clements authored
The convention for writing something like "64 kB" is 64<<10, since this is easier to read than 1<<16. Update gcBitsChunkBytes to follow this convention. Change-Id: I5b5a3f726dcf482051ba5b1814db247ff3b8bb2f Reviewed-on: https://go-review.googlesource.com/23132Reviewed-by: Rick Hudson <rlh@golang.org>
-
Austin Clements authored
Change-Id: I5ebf93b60213c0138754fc20888ae5ce60237b8c Reviewed-on: https://go-review.googlesource.com/23131Reviewed-by: Rick Hudson <rlh@golang.org>
-
Dan Peterson authored
Make clear negotiation can happen via NPN or ALPN, similar to http.Transport.TLSNextProto and x/net/http2.NextProtoTLS. Change-Id: Ied00b842bc04e11159d6d2107beda921cefbc6ca Reviewed-on: https://go-review.googlesource.com/23108Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Artyom Pervukhin authored
If client does not provided User-Agent header, do not set default one used by net/http package when doing request to backend. Fixes #15524 Change-Id: I9a46bb3b7ec106bc7c3071e235b872d279994d67 Reviewed-on: https://go-review.googlesource.com/23089 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-