Commit Graph

10 Commits

Author SHA1 Message Date
Tess Strickland 2d865dc69b [vm] Fix non-symbolic stack traces with --lazy-async-stacks.
Symbolic and non-symbolic stack traces had separate ToCString
implementations with the same general structure, but those
implementations diverged enough to cause issues in certain async stack
modes. They are now merged, with the --dwarf-stack-traces-mode flag
checked where appropriate within the merged method.

Also, now non-symbolic stack traces do not include frames for Code with
invisible Function owners unless the flag --show-invisible-frames is
enabled. With this change, pkg/native_stack_traces no longer needs to
guess at which frames corresponding to Dart code should be treated as
internal.

Tested by adding --dwarf-stack-traces version of the tests
in runtime/tests/vm/dart/causal_stacks.

Fixes https://github.com/dart-lang/sdk/issues/41578

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-obfuscate-linux-release-x64-try
Change-Id: I41a887129616c88acd7729492addf7364d95df33
Bug: 41578
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/143816
Commit-Queue: Tess Strickland <sstrickl@google.com>
Reviewed-by: Clement Skau <cskau@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2020-04-23 09:31:08 +00:00
Teagan Strickland 08fb915522 [gardening] Clean up code and address bit-rotted asserts.
Fixes https://github.com/dart-lang/sdk/issues/41325

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-nnbd-linux-release-x64-try
Change-Id: Ib91c745282ecae619beea92a0262ecc72e7aaf86
Fixed: 41325
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/142377
Commit-Queue: Tess Strickland <sstrickl@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2020-04-15 14:23:23 +00:00
Teagan Strickland afed0f59e3 [native_stack_traces] Allow static symbol offsets as locations.
Static symbol offsets from Dart stack traces can now be used directly
as locations for the find command.

Change-Id: Ie2971099cbc33b871f8e0e213865854b5ee6890b
Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-linux-product-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/142362
Commit-Queue: Tess Strickland <sstrickl@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2020-04-06 13:11:41 +00:00
Teagan Strickland a5bfae7dc1 [pkg/native_stack_traces] Use dynamic symbol info when available.
This allows for the translation of partial stack traces that do not
include the instructions header line.

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-linux-release-simarm_x64-try,vm-kernel-precomp-mac-release-simarm64-try,vm-kernel-precomp-win-release-x64-try
Change-Id: I5b490c99cb844d37c63943e780f3a5613faac119
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140285
Commit-Queue: Teagan Strickland <sstrickl@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2020-03-25 12:02:55 +00:00
Teagan Strickland ba8baa46b4 [pkg/native_stack_traces] Return stub call information when appropriate.
Now when -v/--verbose is used, we will also print call information
when those calls appear in stubs that do not correspond to Dart code.
The returned information contains the name of the stub (the name of
the static symbol in the ELF file generated for the stub) as well as
the offset of the frame PC within the stub payload.

This change also adds a flag --dump-debug-file-contents that
outputs the parsed information from the file passed via -d/--debug.

Change-Id: Ic52dd6825f2f3564efa3c2c12b46a8bef23d56bc
Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-linux-release-simarm_x64-try,vm-kernel-precomp-mac-release-simarm64-try,vm-kernel-precomp-win-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139280
Commit-Queue: Teagan Strickland <sstrickl@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2020-03-20 11:26:02 +00:00
Teagan Strickland cf2b697a16 [vm/compiler] Fix address sizes in DWARF generator.
Fixes https://github.com/dart-lang/sdk/issues/40855

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-linux-release-simarm_x64-try,vm-kernel-precomp-mac-release-simarm64-try,vm-kernel-precomp-win-release-x64-try
Change-Id: Id60d82d931a3087408f62b0fa1381b0f20c11f68
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/137971
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Teagan Strickland <sstrickl@google.com>
2020-03-03 12:36:50 +00:00
Teagan Strickland 53d546d979 [pkg/native_stack_traces] Find instruction sections via dynamic symbols.
The Dart VM uses two dynamic symbols, _kDartVmSnapshotInstructions and
_kDartIsolateSnapshotInstructions, to store the virtual addresses of the
start of these sections. By using these symbols to find the sections,
we don't bake in the assumption that the two sections appear as distinct
.text segments or an assumption about the order in which they appear.

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-mac-release-simarm64-try,vm-kernel-precomp-win-release-x64-try
Change-Id: I02c4d61a1cf743e2455252df16a47dbb5c718195
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/134165
Commit-Queue: Teagan Strickland <sstrickl@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2020-02-07 11:34:59 +00:00
Teagan Strickland 2b27386c13 [pkg/native_stack_traces] Adding static method Dwarf.fromBuffer.
Change-Id: I341e89eb6471aca872a6672e5b5b7101d069bb24
Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-mac-release-simarm64-try,vm-kernel-precomp-win-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/133720
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2020-02-07 11:34:59 +00:00
Teagan Strickland a4aaaf05eb [vm] Cleanups in the native_stack_traces package.
Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-mac-release-simarm64-try,vm-kernel-precomp-win-release-x64-try
Change-Id: I285aada8ee46b2caf212957dfc400f00d4aa25b5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/133066
Commit-Queue: Teagan Strickland <sstrickl@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2020-01-24 11:40:59 +00:00
Teagan Strickland a003d5e69a [vm] Refactor debug info handling code into a new package.
Change-Id: Iaf944564ebbe4bdcc215166f784e949362583a69
Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-android-release-arm_x64-try,vm-kernel-precomp-mac-release-simarm64-try,vm-kernel-precomp-win-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/132281
Commit-Queue: Teagan Strickland <sstrickl@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2020-01-23 10:14:17 +00:00