RFR (S) 8223762: Shenandoah: overflows in calculations involving heap capacity

Aleksey Shipilev shade at redhat.com
Mon May 13 10:30:41 UTC 2019


Bug:
  https://bugs.openjdk.java.net/browse/JDK-8223762

Heap capacity is in size_t. Which means expressions involving it are subject to overflow if done
without care. Consider the x86_32 case with max_capacity = 1G and ShenandoahMinFreeThreshold >= 5.
this overflows this expression here on 32-bit platforms:
   size_t min_threshold = ShenandoahMinFreeThreshold * heap->max_capacity() / 100;

This readily happens on x86_32 and wreck up heuristics calculations.

Fix:
  http://cr.openjdk.java.net/~shade/8223762/webrev.01/

Testing: hotspot_gc_shenandoah (x86_64, x86_32), plus ad-hoc x86_32 tests

-- 
Thanks,
-Aleksey




More information about the shenandoah-dev mailing list