dart-lang / sdk

The Dart SDK, including the VM, dart2js, core libraries, and more.
https://dart.dev
BSD 3-Clause "New" or "Revised" License
9.94k stars 1.53k forks source link

Flaky crash in hot-reload tests #40030

Open mkustermann opened 4 years ago

mkustermann commented 4 years ago

From this log:


/======================================================================================\
| standalone_2/io/stdout_stderr_non_blocking_test broke (Pass -> Crash, expected Pass) |
\======================================================================================/

--- Command "vm" (took 04.000165s):
DART_CONFIGURATION=ReleaseX64 out/ReleaseX64/dart --hot-reload-rollback-test-mode --ignore-unrecognized-flags --packages=/b/s/w/ir/cache/builder/sdk/.packages /b/s/w/ir/cache/builder/sdk/tests/standalone_2/io/stdout_stderr_non_blocking_test.dart

exit code:
-6

stdout:
Hello
Hello
Hello
Hello
Hello
Hello

stderr:
Hello
Hello
Hello
Hello
Hello
Hello

--- Re-run this test:
python tools/test.py -n dartk-reload-rollback-linux-release-x64 standalone_2/io/stdout_stderr_non_blocking_test

There seem to be core dumps available, see the 'isolate out' directories in the build: Three of them have a coredump.

/cc @rmacnak-google

rmacnak-google commented 4 years ago

gdb seems to have trouble unwinding the stack in this core dump, but if I've done it right manually, we have hit

RELEASE_ASSERT(!FLAG_enable_isolate_groups) in IsolateGroup::ReloadSources

and then failed Profiler::DumpStackTrace. gdb does report the flag as true, though we don't expect that in the JIT.

mkustermann commented 4 years ago

and then failed Profiler::DumpStackTrace. gdb does report the flag as true, though we don't expect that in the JIT.

Yes. The flag is false in JIT except for tests which explicitly opt-in and this is not one of them.