aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/debuglog_test.go
AgeCommit message (Collapse)Author
2024-07-30runtime: make TestDebugLogInterleaving much more robustAustin Clements
The current test often doesn't actually generate enough interleaving to result in multiple log shards. This CL rewrites this test to forcibly create at least 10 log shards with interleaved log messages. It also tests dlog's robustness to being held across M and P switches. Change-Id: Ia913b17c0392384ff679832047f359945669bb15 Reviewed-on: https://go-review.googlesource.com/c/go/+/600699 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Carlos Amedee <carlos@golang.org> Auto-Submit: Austin Clements <austin@google.com>
2024-07-30runtime: delete TestDebugLogBuildAustin Clements
Now that we're actually testing debuglog in the regular build configuration, it's far less important that we take the time to rebuild with the debuglog tag. Change-Id: I62bfd494ccb99087f35851c4476238b39ef40dec Reviewed-on: https://go-review.googlesource.com/c/go/+/600698 Reviewed-by: Carlos Amedee <carlos@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-07-30runtime: run debuglog tests when debuglog tag is *not* setAustin Clements
Currently, the debuglog tests only run when the debuglog build tag is set because, until the last few CLs, all of debuglog was compiled away without that build tag. This causes two annoying problems: 1. The tests basically never run, because we don't regularly test this configuration. 2. If you do turn on the debuglog build tag, it's probably because you're adding debuglogs into the runtime, which are very likely to mess up these tests, so you wind up disabling the tests and they, again, don't get coverage. Now we've set things up so the debuglog implementation is always accessible, if you ask nicely enough. So we can switch these tests to run when the tag is *not* set, and turn off when the tag *is* set (and you're probably adding actual log statements). Change-Id: Ib68d7a5022d4f5db96e9c7c8010cbef21d11fe11 Reviewed-on: https://go-review.googlesource.com/c/go/+/600697 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Carlos Amedee <carlos@golang.org>
2022-10-18runtime: avoid unsafe.{Slice,String} in debuglogMichael Pratt
CL 428157 and CL 428759 switched debuglog to using unsafe.String and unsafe.Slice, which broke the build with -tags=debuglog because this is a no write barrier context, but runtime.unsafeString and unsafeSlice can panic, which includes write barriers. We could add a panicCheck1 path to these functions to reallow write barriers, but it is a big mess to pass around the caller PC, particularly since the compiler generates calls. It is much simpler to just avoid unsafe.String and Slice. Also add a basic test to build the runtime with -tags=debuglog to help avoid future regressions. For #54854. Change-Id: I702418b986fbf189664e9aa4f40bc7de4d9e7781 Reviewed-on: https://go-review.googlesource.com/c/go/+/443380 Run-TryBot: Michael Pratt <mpratt@google.com> Auto-Submit: Michael Pratt <mpratt@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Michael Knyszek <mknyszek@google.com>
2022-09-07runtime: use strings.Buildercuiweixie
Change-Id: I9274d36ca983fdf59088b71a97b139ea262370dd Reviewed-on: https://go-review.googlesource.com/c/go/+/428276 Run-TryBot: Michael Pratt <mpratt@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Michael Knyszek <mknyszek@google.com> Reviewed-by: Michael Pratt <mpratt@google.com>
2019-04-04runtime: ring buffer for binary debug loggingAustin Clements
This adds an internal runtime debug log. It uses per-M time-stamped ring buffers of binary log records. On panic, these buffers are collected, interleaved, and printed. The entry-point to the debug log is a new "dlog" function. dlog is designed so it can be used even from very constrained corners of the runtime such as signal handlers or inside the write barrier. The facility is only enabled if the debuglog build tag is set. Otherwise, it compiles away to a no-op implementation. The debug log format is also designed so it would be reasonable to decode from a core dump, though this hasn't been implemented. Change-Id: I6e2737c286358e97a0d8091826498070b95b66a3 Reviewed-on: https://go-review.googlesource.com/c/go/+/157997 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Michael Knyszek <mknyszek@google.com>