commit | ab6eb9332fb2db1c76deaaa7c8f265f56f793364 | [log] [tgz] |
---|---|---|
author | Martin Kustermann <kustermann@google.com> | Fri Oct 19 19:35:25 2018 +0000 |
committer | commit-bot@chromium.org <commit-bot@chromium.org> | Fri Oct 19 19:35:25 2018 +0000 |
tree | 4e624d7c7a21c43808dd8180e63dbfba9088b414 | |
parent | 45f9462398ae7d2e80acd79d3f9c32c7ca6f6f97 [diff] |
[VM] Fix flaky crash when unwinding the mutator stack during GC The mutator thread structure is kept alive until the death of the isolate. Yet the mutator thread does not have to be scheduled all the time. A native call, for example, can suspend the isolate via Dart_ExitIsolate to perform other work. This particular flaky crash had precisely this problem: The mutator thread suspended itself with an IsolateSaver scope (which uses Dart_ExitIsolate) and invoked Dart_NewNativePort. While at the same time the background compiler for that isolate triggered an oldspace allocation, which triggered a marking task. The marker task needs to traverses the mutator stack and hits a frame with a deoptimization marker, which causes it to access the mutator thread's isolate pointer, which was incorrectly NULL. Fixes https://github.com/dart-lang/sdk/issues/34748 Fixes https://github.com/dart-lang/sdk/issues/34323 Change-Id: I80440856f72b3c194a516084ddc254b2e56740d8 Reviewed-on: https://dart-review.googlesource.com/c/80860 Reviewed-by: Vyacheslav Egorov <vegorov@google.com> Commit-Queue: Martin Kustermann <kustermann@google.com>
Dart is an open-source, scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps.
Visit the dartlang.org to learn more about the language, tools, getting started, and more.
Browse pub.dartlang.org for more packages and libraries contributed by the community and the Dart team.
If you want to build Dart yourself, here is a guide to getting the source, preparing your machine to build the SDK, and building.
There are more documents on our wiki.
The easiest way to contribute to Dart is to file issues.
You can also contribute patches, as described in Contributing.