[release/9.0-staging] DATAS BGC thread synchronization fix by Maoni0 · Pull Request #110174 · dotnet/runtime (original) (raw)
Backport of #109804 to release/9.0-staging
Customer Impact
- Customer reported
- Found internally
Original issue: #109804. Customers discovered a hang because one of the BGC threads had disappeared which shouldn't have happened - this is due to a BGC thread that was not needed during a previous BGC (because DATAS only needed a subset of BGC threads for that BGC to run) ran at a time when settings.concurrent was FALSE so it exited.
Regression
- Yes
- No
Testing
I have added stress code in GC (under STRESS_DYNAMIC_HEAP_COUNT) to make the repro quite easy.
Risk
Low. This has gone through extensive testing on both Windows and Linux.