-
Notifications
You must be signed in to change notification settings - Fork 212
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
Nondeterministic SwingSet historical inaccuracy in CI #4617
Comments
@warner will this mean nondeterminism between validators on the chain? |
note to self: the test was added to fix #3726, so the problem may resemble something from there |
One test failure looked like:
in https://github.com/Agoric/agoric-sdk/runs/5277256769?check_suite_focus=true |
Huh, that's not even comms ( |
This seems to be another instance of #3240. If I run just The comms test creates the first swingset, lets the bootstrap run, records the state, runs a second message, records the activity hash, then terminates the swingset. Then it launches a second swingset from the recorded state, runs the same message as before, and compares the activity hash. In both passes, the second message causes a In my failing case, a slog trace of the first pass shows that imported object being collected during the
but in the second pass, it was not:
I think that running both test functions in parallel, on V8, on Node 14, caused the finalizers to not fire during In CI, I think the misbehavior occurred during the replay of the earlier ( The fix, until we figure out the root cause behind #3240, is to find all unit tests that are (sensitive to transcript divergence OR sensitive to activity hash) and change them all to either 1: use For this case, I'm going to change |
We don't understand the root cause, but our `gcAndFinalize()` doesn't always work when 1: run on Node.js (not xsnap) and 2: AVA allows tests to run in parallel. The problem happens somewhat more frequently on 14.x, at least in CI. These two tests exercise transcript replay (which needs GC to happen the same way for both the original delivery and the replay), and compare the activityHash (which, of course, is sensitive to all syscalls made, including GC syscalls). They sometimes failed in CI. We don't fully understand why gcAndFinalize doesn't work, but serializing the tests (with test.serial) seems to address the problem. refs #3240 closes #4617
Describe the bug
At a5de8dd, the following SwingSet error occurred in CI but did not reappear after re-running the workflow.
The text was updated successfully, but these errors were encountered: