Shenandoah +ExtendedDTraceProbes crash

Zhengyu Gu zgu at redhat.com
Mon Mar 12 13:30:02 UTC 2018


I have been tracking down the crash for a few days now, I think I found 
the problem, but have no clue how to fix it.

It looks like register rdi was messed up:
https://paste.fedoraproject.org/paste/S3VrZ2oma2Kkyxah2NEpfQ

L#218 overwrites rdi = 0x10, if next cmp takes branch to L#235,
it tries to save rdi to its original slot (which is 
ConcurrentHashTable's table field), for making call to 
runtime::dtrace_method_exit().

The crash will occur after that, when applying RB on table field at next 
load.

The corresponding LIR: 
https://paste.fedoraproject.org/paste/xDfdMGgCkbS0OZUqIBbFEQ

L#310526 is where rdi was overwritten for making runtime call, C1 seems 
to generate code to save rdi here ...

Compiler still beyond me, can some one take a look?

Thanks,

-Zhengyu






More information about the shenandoah-dev mailing list