You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In #69202, we mark the IG as nogc only if we know that adjustments will be made to calculate offset to encode it for an instruction that I don't see here. Prior to #69202, we would mark IG as non-gc if destination is local stack (which is the case of IG05 and IG06). I Regardless, I will have investigate it further.
Activity
SingleAccretion commentedon May 22, 2022
This may also be the cause of multiple failures documented in #68986.
I looked at a very simple & nice Linux ARM64 dump from here.
In the test, we have a few block copies between on-stack structs:
Where
BigCopyis this:We crash just after these copies have been completed:
With an assert that tells us the object reference at
[fp,#72]is invalid.I think what's happening here is that we fail to report the registers used for copying (
x0andx1) to the GC.In the "baseline" (actually, my fork), we mark these copies as non-interruptible:
So this implicates #69202.
cc @kunalspathak
kunalspathak commentedon May 23, 2022
In #69202, we mark the IG as
nogconly if we know that adjustments will be made to calculate offset to encode it for an instruction that I don't see here. Prior to #69202, we would mark IG as non-gc if destination is local stack (which is the case ofIG05andIG06). I Regardless, I will have investigate it further.kunalspathak commentedon May 31, 2022
There was a scenario where I was not marking a region as non-interruptible in the copy block having gc refs. Fixed in #70053.