-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
[mono][wasm] Assertion at mono/utils/lock-free-alloc.c:210, condition `!desc->in_use' not met #106007
Comments
I had forgotten to mention, it seems this issue has been happening for at least two months and was not caught (longer than our current pipeline retention so I can't pinpoint the exact commit that introduced this issue). I can see the issue occurred on a build on June 5th (db0eb5d), and there is a run that was manually retained on May 19th (5474ab5) that doesn't seem to have caught this issue, so I suspect it occurred between those two commits. Looking at the commit range I think it might be caused by this commit: 4219e45 |
Hmm... I think part of the work in 4219e45 was to sometimes return non-zeroed pages from the low-level allocator. So perhaps all that is missing is a runtime/src/mono/mono/utils/lock-free-alloc.c Lines 184 to 186 in 334d57e
@kg we should perhaps audit the other uses of |
The default is zeroed pages, but maybe I turned on nonzeroed in a place where I shouldn't, I don't remember. I'll take a look. |
It looks like this specific call site is actually allocating a big block of descriptors, so it should all be zeroed. Unlike alloc_sb which appears to be allocating space for objects with a header |
Description
In the dotnet-runtime-perf pipeline, the wasm BenchmarkDotNet tests are failing when running the
Perf_Timer.ShortScheduleAndDisposeWithFiringTimers
benchmark with the following stacktrace:Example CI showing failure: https://dev.azure.com/dnceng/internal/_build/results?buildId=2509023&view=logs&j=0f08c62b-ed4c-50b2-1260-59a23cc961c9&t=db1d6df3-8551-5183-6637-b677dadc9bee
Reproduction Steps
I was able to reproduce running the following in Ubuntu 20.04 WSL:
./build.sh mono+libs -os browser -c Release
./dotnet.sh build -p:TargetOS=browser -p:TargetArchitecture=wasm -c Release src/mono/wasm/Wasm.Build.Tests /t:InstallWorkloadUsingArtifacts
python3 scripts/benchmarks_ci.py -f net9.0 --dotnet-path /path/to/runtime/artifacts/bin/dotnet-latest --wasm --run-isolated --bdn-arguments="--anyCategories Libraries Runtime --category-exclusion-filter NoInterpreter NoWASM NoMono --logBuildOutput --wasmDataDir /path/to/runtime/src/mono/browser --filter *Perf_Timer.ShortScheduleAndDisposeWithFiringTimers* --wasmArgs \" --expose_wasm --module\""
.Please note that the dotnet-path and wasmDataDir arguments need to be rooted as it doesn't support
~
expansion.Expected behavior
The benchmark runs and collects performance results
Actual behavior
The benchmark fails to run and throws the assertion error
Regression?
No response
Known Workarounds
No response
Configuration
No response
Other information
No response
The text was updated successfully, but these errors were encountered: