RFR: 8361363: ShenandoahAsserts::print_obj() does not work for forwarded objects and UseCompactObjectHeaders
Roman Kennke
rkennke at openjdk.org
Tue Jul 8 08:51:47 UTC 2025
On Thu, 3 Jul 2025 14:22:32 GMT, Thomas Stuefe <stuefe at openjdk.org> wrote:
> `ShenandoahAsserts::print_obj()` does not work for COH if the object is forwarded, since the mark word is overwritten with a forwarding pointer.
>
> Depending on the size of the non-null bits of the forwardee (whether it spills into the nKlass bits), nKlass is either zero or garbage. So we get either an "assert(!is_null(v)) failed: narrow klass value can never be zero", or a SIGSEGV.
>
> Fix is trivial: don't use obj->klass() directly but get it from ShenandoahForwarding.
Good! Thank you!
-------------
Marked as reviewed by rkennke (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/26117#pullrequestreview-2996617172
More information about the shenandoah-dev
mailing list