summaryrefslogtreecommitdiff
path: root/src/runtime/trace/trace_stack_test.go
Commit message (Collapse)AuthorAgeFilesLines
* all: don't call t.Fatal from a goroutineIan Lance Taylor2016-11-151-11/+12
| | | | | | | | | | Fixes #17900. Change-Id: I42cda6ac9cf48ed739d3a015a90b3cb15edf8ddf Reviewed-on: https://go-review.googlesource.com/33243 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
* runtime/trace: deflake TestTraceSymbolizeRuss Cox2016-10-281-2/+2
| | | | | | | | | | | | Waiting 2ms for all the kicked-off goroutines to run and block seems a little optimistic. No harm done by waiting for 200ms instead. Fixes #17238. Change-Id: I827532ea2f5f1f3ed04179f8957dd2c563946ed0 Reviewed-on: https://go-review.googlesource.com/32103 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* runtime/trace: test detection of broken timestampsDmitry Vyukov2016-04-241-4/+1
| | | | | | | | | | | | | | | | On some processors cputicks (used to generate trace timestamps) produce non-monotonic timestamps. It is important that the parser distinguishes logically inconsistent traces (e.g. missing, excessive or misordered events) from broken timestamps. The former is a bug in tracer, the latter is a machine issue. Test that (1) parser does not return a logical error in case of broken timestamps and (2) broken timestamps are eventually detected and reported. Change-Id: Ib4b1eb43ce128b268e754400ed8b5e8def04bd78 Reviewed-on: https://go-review.googlesource.com/21608 Reviewed-by: Austin Clements <austin@google.com>
* runtime: emit file:line info into tracesDmitry Vyukov2016-04-081-4/+3
| | | | | | | | | | | | This makes traces self-contained and simplifies trace workflow in modern cloud environments where it is simpler to reach a service via HTTP than to obtain the binary. Change-Id: I6ff3ca694dc698270f1e29da37d5efaf4e843a0d Reviewed-on: https://go-review.googlesource.com/21732 Run-TryBot: Dmitry Vyukov <dvyukov@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
* net: deduplicate TCP socket codeMikio Hara2016-03-031-1/+1
| | | | | | | | | | | | | | | | This change consolidates functions and methods related to TCPAddr, TCPConn and TCPListener for maintenance purpose, especially for documentation. Also refactors Dial error code paths. The followup changes will update comments and examples. Updates #10624. Change-Id: I3333ee218ebcd08928f9e2826cd1984d15ea153e Reviewed-on: https://go-review.googlesource.com/20009 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
* all: make copyright headers consistent with one space after periodBrad Fitzpatrick2016-03-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | This is a subset of https://golang.org/cl/20022 with only the copyright header lines, so the next CL will be smaller and more reviewable. Go policy has been single space after periods in comments for some time. The copyright header template at: https://golang.org/doc/contribute.html#copyright also uses a single space. Make them all consistent. Change-Id: Icc26c6b8495c3820da6b171ca96a74701b4a01b0 Reviewed-on: https://go-review.googlesource.com/20111 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
* runtime,internal/trace: map/slice literals janitoringDidier Spezia2015-09-111-77/+77
| | | | | | | | | | Simplify slice/map literal expressions. Caught with gofmt -d -s, fixed with gofmt -w -s Checked that the result can still be compiled with Go 1.4. Change-Id: I06bce110bb5f46ee2f45113681294475aa6968bc Reviewed-on: https://go-review.googlesource.com/13839 Reviewed-by: Andrew Gerrand <adg@golang.org>
* runtime/trace: test requires 'go tool addr2line'David Crawshaw2015-07-301-1/+1
| | | | | | | | | For the android/arm builder. Change-Id: Iad4881689223cd6479870da9541524a8cc458cce Reviewed-on: https://go-review.googlesource.com/12859 Reviewed-by: Andrew Gerrand <adg@golang.org> Run-TryBot: David Crawshaw <crawshaw@golang.org>
* runtime/trace: remove existing SkipsRuss Cox2015-07-291-1/+1
| | | | | | | | | | | | | | The skips added in CL 12579, based on incorrect time stamps, should be sufficient to identify and exclude all the time-related flakiness on these systems. If there is other flakiness, we want to find out. For #10512. Change-Id: I5b588ac1585b2e9d1d18143520d2d51686b563e3 Reviewed-on: https://go-review.googlesource.com/12746 Reviewed-by: Austin Clements <austin@google.com>
* runtime/trace: record event sequence numbers explicitlyRuss Cox2015-07-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Nearly all the flaky failures we've seen in trace tests have been due to the use of time stamps to determine relative event ordering. This is tricky for many reasons, including: - different cores might not have exactly synchronized clocks - VMs are worse than real hardware - non-x86 chips have different timer resolution than x86 chips - on fast systems two events can end up with the same time stamp Stop trying to make time reliable. It's clearly not going to be for Go 1.5. Instead, record an explicit event sequence number for ordering. Using our own counter solves all of the above problems. The trace still contains time stamps, of course. The sequence number is just used for ordering. Should alleviate #10554 somewhat. Then tickDiv can be chosen to be a useful time unit instead of having to be exact for ordering. Separating ordering and time stamps lets the trace parser diagnose systems where the time stamp order and actual order do not match for one reason or another. This CL adds that check to the end of trace.Parse, after all other sequence order-based checking. If that error is found, we skip the test instead of failing it. Putting the check in trace.Parse means that cmd/trace will pick up the same check, refusing to display a trace where the time stamps do not match actual ordering. Using net/http's BenchmarkClientServerParallel4 on various CPU counts, not tracing vs tracing: name old time/op new time/op delta ClientServerParallel4 50.4µs ± 4% 80.2µs ± 4% +59.06% (p=0.000 n=10+10) ClientServerParallel4-2 33.1µs ± 7% 57.8µs ± 5% +74.53% (p=0.000 n=10+10) ClientServerParallel4-4 18.5µs ± 4% 32.6µs ± 3% +75.77% (p=0.000 n=10+10) ClientServerParallel4-6 12.9µs ± 5% 24.4µs ± 2% +89.33% (p=0.000 n=10+10) ClientServerParallel4-8 11.4µs ± 6% 21.0µs ± 3% +83.40% (p=0.000 n=10+10) ClientServerParallel4-12 14.4µs ± 4% 23.8µs ± 4% +65.67% (p=0.000 n=10+10) Fixes #10512. Change-Id: I173eecf8191e86feefd728a5aad25bf1bc094b12 Reviewed-on: https://go-review.googlesource.com/12579 Reviewed-by: Austin Clements <austin@google.com>
* runtime/trace: fix TestTraceSymbolize networkingRuss Cox2015-07-231-4/+4
| | | | | | | | | | | | | | | | We use 127.0.0.1 instead of localhost in Go networking tests. The reporter of #11774 has localhost defined to be 120.192.83.162, for reasons unknown. Also, if TestTraceSymbolize calls Fatalf (for example because Listen fails) then we need to stop the trace for future tests to work. See failure log in #11774. Fixes #11774. Change-Id: Iceddb03a72d31e967acd2d559ecb78051f9c14b7 Reviewed-on: https://go-review.googlesource.com/12521 Reviewed-by: Rob Pike <r@golang.org>
* runtime/trace: add new packageDmitry Vyukov2015-07-221-0/+285
Move tracing functions from runtime/pprof to the new runtime/trace package. Fixes #9710 Change-Id: I718bcb2ae3e5959d9f72cab5e6708289e5c8ebd5 Reviewed-on: https://go-review.googlesource.com/12511 Reviewed-by: Russ Cox <rsc@golang.org>