On Mon, 2 Sep 2024 11:59:01 GMT, Jorn Vernee <jver...@openjdk.org> wrote:
> I understand that adding the UpcallStub type to the SA agent code makes the > WrongTypeException go away, and then we run into an assertion failure because > the frame size is zero? Yes. > Note how there is also special handling for (JNI) entry frames in the SA. Do you mean `JavaCallWrapper` (`X86Frame::senderForEntryFrame` in SA) ? > I'm guessing because we end up walking the native frames until we get back to > Java, and the native frames are simply ignored. I'm not sure if that will > always work for arbitrary native code though. > > I think the right fix here is to implement handling for upcall stub frames in > the SA agent, since that's also how entry frames are handled. I don't think > setting the frame size in hotspot is actually needed if we do that. If we add some frame info (return address and FP) like `JavaCallWrapper` to `UpcallStub` and process it in SA, we do not need frame size of `UpcallStub` as you said. But I think it should be fixed in all of upcall implementation. `UpcallStub` is "Stub", so it compliant native calling convention. Thus I believe native frame unwinder like `X86Frame` should always work if frame size is set in `UpcallStub`. We need to fix all of upcall implementation in both case, and zero frame size is not nature. In addition adding frame size is simpler than add special handling for `UpcallStub` and SA. Thus I give +1 to add frame size to `UpcallStub`. ------------- PR Comment: https://git.openjdk.org/jdk/pull/20789#issuecomment-2324921013