-
Notifications
You must be signed in to change notification settings - Fork 1.1k
IdempotencyTests is flaky on Windows #11885
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
Comments
I think this test has been flaky for quite some time (at least many weeks). I've been meaning to trace back and see when it started. I want to say it was sometime around when the "expand non-transparent macros after typer" PR was merged, but my memory may be faulty. |
Oh you're right, I didn't go back enough to see that, not @bishabosha's fault then :). /cc @nicolasstucki since he worked on both the PR you mentioned and idempotency tests. |
Here's an example of it failing during the nightly build of Feb 9 (the night after #9984 was merged): https://github.com/lampepfl/dotty/runs/1868294322?check_suite_focus=true#step:3:784 |
Incidentally I'll open a PR for #8734 sometime soon (maybe after the RC release is done), which will draw attention to these things right away. |
@griggt I confirm your observation. Here are the 3 failing tests I currently have on my Win10 machine :
PS. I build at the moment 16 snapshot distributions (tar.gz+zip) on a little used Win10 machine (~30 min build time each) : BellSoft 8+11, Corretto 8+11, DCEVM 11, OpenJ9 8+11, OpenJDK 8+11+17, RedHat 8+11, SapMachine 11+17 and Zulu 8+11. |
The discrepancy seems to be in the positions section: --- out/idempotency/posIdempotency1/debug-idemp/i6507b/tasty.txt 2021-03-25 12:16:34.354135344 -0700
+++ out/idempotency/posIdempotency2/debug-idemp/i6507b/tasty.txt 2021-03-25 12:16:53.166135344 -0700
@@ -264,7 +264,7 @@
436: STRINGconst 56 [tests/debug-idemp/i6507b.scala]
438:
- 291 position bytes:
+ 288 position bytes:
lines: 11
line sizes: 26, 0, 13, 79, 36, 56, 3, 0, 28, 1, 0
positions:
@@ -337,7 +337,7 @@
339: 197 .. 215
341: 193 .. 193
347: 183 .. 196
- 350: 200 .. 215
+ 350: 183 .. 183
353: 183 .. 196
357: 200 .. 215
364: 197 .. 215
The output files from this test run: i11885-output.zip |
Fix #11885: disable flaky idempotency test on Windows
Reopen, because #11944 is a temporary fix. |
@liufengyun Assuming the change to |
It's related to the parallelism in Pickler if !Pickler.ParallelPickling || ctx.settings.YtestPickler.value then force() The problem is that sometimes on Windows, it's slower -- and the later phase |
The cause of the problem is that we use parallelism in Pickler: if !Pickler.ParallelPickling || ctx.settings.YtestPickler.value then force() Sometimes on Windows, the futures run a little slower, and the later phase `Inlining` can change the positions of the trees to be pickled, thus non-determinism.
The cause of the problem is that we use parallelism in Pickler: if !Pickler.ParallelPickling || ctx.settings.YtestPickler.value then force() Sometimes on Windows, the futures run a little slower, and the later phase `Inlining` can change the positions of the trees to be pickled, thus non-determinism.
The cause of the problem is that we use parallelism in Pickler: if !Pickler.ParallelPickling || ctx.settings.YtestPickler.value then force() Sometimes on Windows, the futures run a little slower, and the later phase `Inlining` can change the positions of the trees to be pickled, thus non-determinism.
The cause of the problem is that we use parallelism in Pickler: if !Pickler.ParallelPickling || ctx.settings.YtestPickler.value then force() Sometimes on Windows, the futures run a little slower, and the later phase `Inlining` can change the positions of the trees to be pickled, thus non-determinism.
The cause of the problem is that we use parallelism in Pickler: if !Pickler.ParallelPickling || ctx.settings.YtestPickler.value then force() Sometimes on Windows, the futures run a little slower, and the later phase `Inlining` can change the positions of the trees to be pickled, thus non-determinism.
The cause of the problem is that we use parallelism in Pickler: if !Pickler.ParallelPickling || ctx.settings.YtestPickler.value then force() Sometimes on Windows, the futures run a little slower, and the later phase `Inlining` can change the positions of the trees to be pickled, thus non-determinism.
This flaky test just failed again. I thought it was disabled? https://github.com/lampepfl/dotty/runs/2360396782?check_suite_focus=true#step:4:594 |
It looks like the test filter does not work well due to the difference in path separators on Windows (#11950). I'll have a look. |
The cause of the problem is that we use parallelism in Pickler: if !Pickler.ParallelPickling || ctx.settings.YtestPickler.value then force() Sometimes on Windows, the futures run a little slower, and the later phase `Inlining` can change the positions of the trees to be pickled, thus non-determinism. For the Dotty project, the statistics is as follows: - Before: ntrees = 5331539 - After: ntrees = 5334075 Performance-wise, this should be better than synchronizing the pickling tasks.
Oh my, this flaky test just refuses to be suppressed... Failed again during the nightly build (https://github.com/lampepfl/dotty/runs/2396672099?check_suite_focus=true#step:4:595) and also earlier in the day (https://github.com/lampepfl/dotty/runs/2392818180?check_suite_focus=true#step:4:595) Maybe the exclude filter is missing |
Thanks for the good catch, somehow I thought it's a directory 😕 (#12164) |
The cause of the problem is that we use parallelism in Pickler: if !Pickler.ParallelPickling || ctx.settings.YtestPickler.value then force() Sometimes on Windows, the futures run a little slower, and the later phase `Inlining` can change the positions of the trees to be pickled, thus non-determinism. For the Dotty project, the statistics is as follows: - Before: ntrees = 5331539 - After: ntrees = 5334075 Performance-wise, this should be better than synchronizing the pickling tasks.
The cause of the problem is that we use parallelism in Pickler: if !Pickler.ParallelPickling || ctx.settings.YtestPickler.value then force() Sometimes on Windows, the futures run a little slower, and the later phase `Inlining` can change the positions of the trees to be pickled, thus non-determinism. For the Dotty project, the statistics is as follows: - Before: ntrees = 5331539 - After: ntrees = 5334075 Performance-wise, this should be better than synchronizing the pickling tasks.
Fix #11885: Always clone trees if position already set
Starting
with the merge of #11210(EDIT: actually long before that, see comments below), it looks like test_windows_full has been failing IdempotencyTests from time to time, from https://github.com/lampepfl/dotty/runs/2178741539:@bishabosha could you investigate this (I've forwarded you the access information for the Windows machine if you want to investigate there)? /cc @liufengyun
The text was updated successfully, but these errors were encountered: