There was a high contention while shrinking with multiple workers at the same time. This locks shrinking to the same worker which solved the test. Fixes https://github.com/crytic/echidna/issues/1105.
Changes and implications:
Only the worker which solved a test will shrink the test. Worker number is displayed in the UI while shrinking.
If there is shrinking work, do it until the shrink limit and then go back to fuzzing. Fuzzing will be put on pause when all workers are shrinking.
Test limit is unevenly distributed. When worker shrinks it doesn't work on its portion of test limit. This will be fixed in another PR.
Refactored selectMainContract, mkTests and mkSignatureMap out of loadSpecified. This allows for more granular control to easier construct Env. Moved world to the Env and tests can be created before Env.
Merged Campaign.updateTest and Test.updateOpenTest into Campaign.updateOpenTest.
There was a high contention while shrinking with multiple workers at the same time. This locks shrinking to the same worker which solved the test. Fixes https://github.com/crytic/echidna/issues/1105.
Changes and implications:
selectMainContract
,mkTests
andmkSignatureMap
out ofloadSpecified
. This allows for more granular control to easier constructEnv
. Movedworld
to theEnv
and tests can be created beforeEnv
.Campaign.updateTest
andTest.updateOpenTest
intoCampaign.updateOpenTest
.TODO: Look into reintroducing multicore shrinking with better synchronization (https://github.com/crytic/echidna/issues/1249).