* [flutter_runner] Make rd and rx uniform
Currently we pass paths for readonly files and pass
in fds for rx. Now passing in fds everywhere.
* pass full paths
- Don't use 'unhandled' as that implies fatality which this is not
- Don't mention shutdown because this is not necessarily an exception-after-shutdown issue
Follow-up issue filed https://github.com/flutter/flutter/issues/41506 to implement the unit test for this.
Explicitly set |Application|'s |flutter::Settings| |trace_skia| field to
false (it currently defaults to false), in order to slightly simplify
the enabling skia trace events workflow.
PT-145 #comment-patch
Change-Id: Ib40f9ed3dc6f824056465db2cd45309c78b7e3b4
Build rules still reference creating share snapshot data and instructions. This makes the engine to always pass them as empty to the dart vm. To be followed up with a change to alter the build rules to stop referencing the shared snapshots.
This is not being used currently and the fact that the runner will be built outside of the flutter tree means that the apps will not have much to gain via shared snapshots. The rationale behind this change is to partially make migrating the runner out of topaz tree easier.
Change-Id: Ibc4dd6a298d65082416af753522f5a17c88a750a
* [fidl][flutter_runner] Port Migrate to new fit::optional compatible APIs
Updated all call-sites.
See: https://fuchsia-review.googlesource.com/c/fuchsia/+/304389
FIDL-564 #comment
Change-Id: I831712ffd4a47b8fc9cf1fe237b709a1b983109f
* fix observatory port and re-sync cmx files
This re-enables unhandled Dart error handling in Flutter applications,
which was removed in a76b958.
The error handling as originally landed was unsafe. Specifically, in the
case where the unhandled error handler was triggered during shutdown,
there was a race condition which could cause a crash in the following
scenario:
1. Runner::OnApplicationTerminate() is triggered, which posts a task to
the application's platform thread will free the Application instance
and terminate the platform thread.
2. Before that task is serviced, the unhandled error handler is called
(by hooks.dart -> window.cc -> ui_dart_state.cc) on the UI thread.
3. The kill task is serviced and the Application dtor and Thread::Quit()
are called, terminating the platform thread.
4. The unhandled error handler attempts to post a task to the platform
thread, whose thread was killed in step 3. This triggers a crash.
Fixing this requires a mechanism for the message loop to know that the
associated thread has been terminated out from under it.
This patch adds mitigation for this scenario, but remains
non-threadsafe/racy. We pass the unhandled error handler a weak pointer
to the Application and check it before posting a task to the platform
thread. This has two issues:
1. WeakPtr isn't threadsafe, and assumes that all operations occur on a
single thread. We're checking its value (which is mutated on the
platform thread) on the UI thread without synchronization.
2. Even with a guarantee that the WeakPtr state were synchronized,
there's a window between when we check the weak pointer and when we
post to the platform thread in which application shutdown and thread
destruction may occur.
This unsafe mitigation is being landed in order to unblock a high
priority bug (FL-256) on a short schedule, and a proper refactoring will
be required to make this properly threadsafe.
Change-Id: If60d1d3ca5799d82597f8a3acc4ddd3871058972
Ported from Topaz tree.
This is the topaz counterpart to
https://fuchsia-review.googlesource.com/c/fuchsia/+/277254.
This is a backwards-incompatible ABI change that will be landed together
with that CL. All clients have been migrated to be compatible with the
new ABI.
Change-Id: I07bb460ce3c6971eb671874db1f90e8c4906e656
Ported from Topaz tree.