From e83b0e9c8470234f7b69f5b68f8c0d4fa6b912b2 Mon Sep 17 00:00:00 2001 From: Maoni0 Date: Tue, 27 Sep 2022 23:54:55 -0700 Subject: [PATCH] fix div by zero --- src/coreclr/gc/gc.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/coreclr/gc/gc.cpp b/src/coreclr/gc/gc.cpp index e7ea0c268fcc96..dc1e5deda8b111 100644 --- a/src/coreclr/gc/gc.cpp +++ b/src/coreclr/gc/gc.cpp @@ -3171,7 +3171,8 @@ gc_heap::dt_high_frag_p (gc_tuning_point tp, #ifndef MULTIPLE_HEAPS if (gen_number == max_generation) { - float frag_ratio = (float)(dd_fragmentation (dynamic_data_of (max_generation))) / (float)generation_size (max_generation); + size_t maxgen_size = generation_size (max_generation); + float frag_ratio = (maxgen_size ? ((float)dd_fragmentation (dynamic_data_of (max_generation)) / (float)maxgen_size) : 0.0f); if (frag_ratio > 0.65) { dprintf (GTC_LOG, ("g2 FR: %d%%", (int)(frag_ratio*100))); @@ -3183,7 +3184,8 @@ gc_heap::dt_high_frag_p (gc_tuning_point tp, ret = (fr > dd_fragmentation_limit(dd)); if (ret) { - fragmentation_burden = (float)fr / generation_size (gen_number); + size_t gen_size = generation_size (gen_number); + fragmentation_burden = (gen_size ? ((float)fr / (float)gen_size) : 0.0f); ret = (fragmentation_burden > dd_v_fragmentation_burden_limit (dd)); } dprintf (GTC_LOG, ("h%d: gen%d, frag is %Id, alloc effi: %d%%, unusable frag is %Id, ratio is %d",