Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
f5b9cd4
[7.0] Update backport template and servicing docs (#84005)
carlossanlop Mar 28, 2023
57d635b
Create action to check servicing label (#84041)
github-actions[bot] Mar 28, 2023
7786569
Fix piping in yml (#84042)
hoyosjs Mar 28, 2023
4c367c7
Update check-service-labels.yml (#84044)
hoyosjs Mar 28, 2023
8c9da40
[7.0] Avoid using spanish helix queues (#83747)
carlossanlop Mar 28, 2023
80d48e9
[release/7.0] Bump to new OSX 13 AppleTV queue (#83729)
steveisok Mar 29, 2023
74d0f47
[release/7.0] disable NTLM tests on RedHat.7 (#83602)
github-actions[bot] Mar 29, 2023
fb993f5
[release/7.0] Improve servicing docs for Microsoft.Windows.Compatibil…
carlossanlop Mar 29, 2023
1cee763
Fix Iran time zone test case (#84056)
carlossanlop Mar 29, 2023
721e656
Update check-service-labels to trigger on branch edit (#84106)
hoyosjs Mar 30, 2023
05038f9
[release/7.0][mono] Use unsigned char when computing UTF8 string hash…
lambdageek Mar 30, 2023
88b65f9
Ensure that default media type is used when 'null' is passed-in to St…
github-actions[bot] Mar 30, 2023
641393e
[release/7.0] [wasm] ManagedToNativeGenerator: Skip unmanaged dlls (#…
github-actions[bot] Mar 31, 2023
fa133ae
[release/7.0] Use CLOCK_BOOTTIME to calculate BootTime on linux (#675…
simonrozsival Mar 31, 2023
7cd68bc
[release/7.0] JIT: fix bug in cloning conditions for jagged array (#8…
AndyAyersMS Mar 31, 2023
001172f
[release/7.0] Ensure free buffer space when reading TLS messages (#83…
github-actions[bot] Apr 3, 2023
5301032
[release/7.0] SyntaxValueProvider: avoid performance issue with synta…
github-actions[bot] Apr 4, 2023
f8777ff
Fixing a bug that causes us to mistakenly demote a gen2 region to gen…
github-actions[bot] Apr 4, 2023
ed90f14
Fix special sweep issue for workstation (#83342)
github-actions[bot] Apr 4, 2023
eacc9be
[release/7.0] Fix encoding problem when publishing (#83577)
ilonatommy Apr 5, 2023
4a5620b
[release/7.0] [MONO][MARSHAL] Initialize ilgen with a flag (#83813)
github-actions[bot] Apr 5, 2023
0506145
[release/7.0-staging] Update dependencies from dotnet/linker dotnet/m…
dotnet-maestro[bot] Apr 6, 2023
c2d6594
[release/7.0] Fix pinned assembly version 7.0 (#84355)
ericstj Apr 6, 2023
694c2a0
Merge branch 'release/7.0-staging' into release70
carlossanlop Apr 7, 2023
cb70e92
Manually resolve spacing conflict in check-service-labels.yml
carlossanlop Apr 7, 2023
d71dd07
Merge branch 'release70' of github.com:carlossanlop/runtime into rele…
carlossanlop Apr 7, 2023
48abc27
Merge pull request #84459 from carlossanlop/release70
carlossanlop Apr 7, 2023
7e8c33e
Reverting: Set AssemblyName.ProcessorArchitecture for compatibility. …
VSadov Apr 7, 2023
50722b0
[release/7.0] Fix reserving executable memory as per allocation type …
github-actions[bot] Apr 10, 2023
8a0b03e
[release/7.0][Android] Free up more disk space on CI builds (#84567)
steveisok Apr 10, 2023
3947f8d
Update dependencies from https://github.com/dotnet/linker build 20230…
dotnet-maestro[bot] Apr 10, 2023
d566ecf
[7.0] Reset OOB packages from 7.0.5 (#84341)
carlossanlop Apr 11, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fixing a bug that causes us to mistakenly demote a gen2 region to gen0 (
#83341)

We are seeing a gen0 region that's almost fully occupied (< 24 bytes free) with one giant plug (ie, no free objects at all in the region).
This causes allocate_in_condemned_generations to go into an infinite loop because in ephemeral generations we expect short plugs,
ie, we should be able to allocate a min free object in front of each plug. And normally we can because when we allocate objects in gen0
we make sure to break up the allocation contexts with min free objects and when we compact into gen1 we form short plugs.

We are in this situation when all of the following conditions are true -

+ we did a gen2 compacting GC that generates a pinned plug in a gen2 region almost as big as the whole region. my guess for the reason why there's this giant pinned plug is because that gen2 region was already really compact so when we called allocate_in_condemned_generations on the non pinned plugs that are next to some pinned plugs in it we discovered we can't move the non pinned plugs anyway so we artificially pinned them and formed a giant pinned plug. and during this GC those objects were no longer pinned so we have one giant non pinned plug.
+ this gen2 region needs to be the last region with pinned plugs;
+ this gen2 region hasn't been consumed by allocate_in_condemned_generations yet so it was processed by process_remaining_regions;

Then in process_remaining_regions we'll set the plan_gen_num for that gen2 region to 0 because we are doing

set_region_plan_gen_num_sip (current_region, current_plan_gen_num);

instead of going through the demotion logic to decide whether we should demote this region or not.

Co-authored-by: Maoni0 <[email protected]>
  • Loading branch information
github-actions[bot] and Maoni0 authored Apr 4, 2023
commit f8777ff3eb2f70de65c347c63fe236b4c07b808d
3 changes: 2 additions & 1 deletion src/coreclr/gc/gc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28792,7 +28792,8 @@ void gc_heap::process_remaining_regions (int current_plan_gen_num, generation* c
return;
}

set_region_plan_gen_num_sip (current_region, current_plan_gen_num);
decide_on_demotion_pin_surv (current_region);

if (!heap_segment_swept_in_plan (current_region))
{
heap_segment_plan_allocated (current_region) = generation_allocation_pointer (consing_gen);
Expand Down