-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add profiler ELT test #39550
Add profiler ELT test #39550
Conversation
Tagging subscribers to this area: @tommcdon |
Thanks! This will be interesting when run conjunction with gc stress. Should happen in our overnight testing, once this is merged. |
2c192c2
to
d005b1c
Compare
There are some bugs in the runtime's slow path ELT assembly stubs on linux. Not surprising given that we haven't ever been testing them. I just pushed some changes to add more diagnostics, I am going to go through and root cause them. |
d874005
to
bdd8471
Compare
a83e7b1
to
4714690
Compare
@noahfalk the remaining failures are an infrastructure issue, this is ready to review now @AndyAyersMS do you or anyone else from the jit team want to take a look at the assembly stub changes I made? I found the following issues:
If there are other interesting corner cases to test, please let me know. |
cc @dotnet/jit-contrib |
@jashook this is the PR we talked about in standup, didn't realize you weren't part of the dotnet-diag group |
That is fixed now right or is there still an issue? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, though mostly I am relying on your test cases rather than my ability spot suspicious assembly code : )
As a broader issue if we've had these long standing bugs and nobody is complaining we should keep an eye out for feedback whether these APIs matter to the profiler authors. Its not clear to me that they do.
@@ -144,7 +144,7 @@ Stack for the above call will look as follows (stack growing downwards): | |||
Thread::VirtualUnwindCallFrame(&ctx); | |||
|
|||
// add the prespill register(r0-r3) size to get the stack pointer of previous function | |||
_ASSERTE(pData->profiledSp == (void*)(ctx.Sp - 4*4)); | |||
_ASSERTE(pData->profiledSp == (void*)(ctx.Sp - 4*4) || pData->profiledSp == (void*)(ctx.Sp - 6*4)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comment above the assert doesn't lead me to expect the 6 dword case, update the comment?
The CI legs marked as in progress are actually complete, going to merge. |
Fix the following issues: On amd64 linux we didn't save and restore the xmm registers, and didn't handle enregistered 16 bytes structs as return values On arm we didn't save and restore the floating point registers (I made the linux arm helpers match the windows arm helpers) On arm64 we didn't handle 16 byte enregistered structs as return values And add tests
As mentioned in #39335 we currently have no ELT hook coverage in the runtime repo.
cc @AndyAyersMS