Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Flaky crash 2863: error: expected: sticky_error_ == Error::null() #35590

alexmarkov opened this issue Jan 8, 2019 · 1 comment


None yet
2 participants
Copy link

commented Jan 8, 2019

VM sporadically crashes on a newly added test lib_2/isolate/kill_regexp_test in dartkb/mixed mode:

  FAILED: dartkb-vm debug_x64 lib_2/isolate/kill_regexp_test
  Expected: Pass
  Actual: Crash
  --- Command "vm_compile_to_kernel" (took 01.000508s):
  DART_CONFIGURATION=DebugX64 /b/s/w/ir/pkg/vm/tool/gen_kernel --no-aot --platform=out/DebugX64/vm_platform_strong.dill -o /b/s/w/ir/out/DebugX64/generated_compilations/dartkb/tests_lib_2_isolate_kill_regexp_test.dart_1/out.dill /b/s/w/ir/tests/lib_2/isolate/kill_regexp_test.dart --packages=/b/s/w/ir/.packages -Ddart.developer.causal_async_stacks=true --gen-bytecode --drop-ast --emit-bytecode-source-positions
  exit code:
  --- Command "vm" (took 04.000447s):
  DART_CONFIGURATION=DebugX64 out/DebugX64/dart --no_intrinsify --enable_interpreter --ignore-unrecognized-flags --packages=/b/s/w/ir/.packages /b/s/w/ir/out/DebugX64/generated_compilations/dartkb/tests_lib_2_isolate_kill_regexp_test.dart_1/out.dill
  exit code:
  killing isolate 0
  killing isolate 2
  killing isolate 1
  killing isolate 3
  killing isolate 11
  killing isolate 7
  killing isolate 4
  killing isolate 5
  killing isolate 18
  killing isolate 15
  killing isolate 8
  killing isolate 10
  killing isolate 13
  killing isolate 12
  killing isolate 6
  killing isolate 14
  killing isolate 19
  killing isolate 9
  killing isolate 16
  killing isolate 17
  ../../runtime/vm/ 2863: error: expected: sticky_error_ == Error::null()
  thread=17848, isolate=out.dill:isomain1()(0x55b4c5355200)
    [0x000055b4c097931c] dart::Profiler::DumpStackTrace(void*)
    [0x000055b4c097931c] dart::Profiler::DumpStackTrace(void*)
    [0x000055b4c0c2fb82] dart::Assert::Fail(char const*, ...)
    [0x000055b4c08712a8] Unknown symbol
    [0x000055b4c08a6cee] dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool)
    [0x000055b4c08a7916] dart::MessageHandler::TaskCallback()
    [0x000055b4c0a3998c] dart::ThreadPool::Worker::Loop()
    [0x000055b4c0a3946a] dart::ThreadPool::Worker::Main(unsigned long)
    [0x000055b4c0972fd5] Unknown symbol
  -- End of DumpStackTrace
  --- Re-run this test:
  python tools/ -n dartkb-mixed-linux-debug-x64 lib_2/isolate/kill_regexp_test

full log

When running locally, crash appeared once per 1000 runs.

/cc @crelier @rmacnak-google

dart-bot pushed a commit that referenced this issue Jan 8, 2019

[gardening] Mark test as flaky in dartkb mode
Issue: #35590
Change-Id: I95721a0a62a1e6201ffd4f7833eed089f915c2e5
Auto-Submit: Alexander Markov <>
Commit-Queue: Ryan Macnak <>
Reviewed-by: Ryan Macnak <>

This comment has been minimized.

@dart-bot dart-bot closed this in b10f179 Jan 17, 2019

dart-bot pushed a commit that referenced this issue Jan 18, 2019

Revert "[vm] Cleanup Dart_Get/Set/HasStickyError API and use isolate'…
…s sticky error only as a backup for thread's sticky error"

This reverts commit b10f179.

Reason for revert: failed service/* tests

Original change's description:
> [vm] Cleanup Dart_Get/Set/HasStickyError API and use isolate's sticky error only as a backup for thread's sticky error
> Both thread and isolate have sticky error fields. Dart API was using
> isolate's sticky error, while Dart code was using thread's sticky error.
> There was a one-way move of a thread's sticky error into isolate
> when thread was unscheduled.
> This causes a problem as error in the isolate may go unnoticed and
> repeated unscheduling/re-scheduling might end up overwriting the error
> in the isolate (which triggers the assertion).
> To solve this problem, this CL:
> * Cleans up Dart API which manipulates isolate's sticky error, so
>   isolate's sticky error is never set directly.
> * When sceduling an isolate to a thread, sticky error is moved back from
>   isolate (if any).
> With this changes, thread's sticky error is always used if thread is running,
> and isolate's sticky error is only used to hold sticky error while
> isolate has no thread.
> Fixes #35590
> Change-Id: I99b128cac363ca2df75f6e64c083b1ec36c866ce
> Reviewed-on:
> Reviewed-by: Ryan Macnak <>
> Commit-Queue: Alexander Markov <>,,,

Change-Id: I15874575b6b8ddca618741c59c21d4e692c4dcab
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-by: Alexander Markov <>
Commit-Queue: Alexander Markov <>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.