You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It was checking DartDev::result_ was set to determine if
dartdev is done, however the intent of the code is to
only continue once we receive DartDev_Result_Exit from
dartdev (based on the fact that we only Notify in
ExitResultCallback).
This code was incorrect if we encounter a spurios wakeup:
we might reach RunExecResultCallback but only execute it
partially i.e. set result_ to DartDev_Result_RunExec but
only partially initialize argv_ and argc_, and not yet
initialize script_name_. However at this point we might
spuriously wakeup from our Wait in RunDartDev and think
that we can continue - which means we will hit a crash
once we try to use partially initialized information for
Process::Exec which would cause us to crash.
The bug was discovered based on stack traces provided by
Elliott Brooks (elliottbrooks) which occur on Dev Tools
CI.
TEST=too hard to reliably test this
Change-Id: Ied9cace6bec9505b51ac0142795708466d166f28
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/445180
Reviewed-by: Daco Harkes <[email protected]>
Commit-Queue: Slava Egorov <[email protected]>
0 commit comments