-
Notifications
You must be signed in to change notification settings - Fork 5k
EE calls ICorJitInfo::setBoundaries()
with invalid sourceType
#52624
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
Comments
FYI @AndyAyersMS |
The jit currently uses the top to bits of the IL offset to represent calls and stack empty points... Lines 316 to 350 in 8695eed
So other kinds of boundaries aren't tracked by the jit. If we need to track other boundaries we'll need to find some new way to store this information as we probably can't reliably steal any more bits. A general mechanism would be to use this field as an index into a table that carries the extra info, instead of representing it directly. We could still have special index values for common cases like no IL offset. The table could be memoizing since this information tends to be immutable (thus there'd be a 1-1 mapping between indices and the values of the table entries). This work would entail an initial refactoring of the jit to properly abstract access to this data before we started extending it out. It would likely be worthwhile because we soon will need to be able to track IL offsets within inlinees and so will need some sort of extendable representation. |
@jakobbotsch some thoughts on a more flexible representation for the IL offset. Also note we currently keep track of the "inline context" per statement; that might be another thing we refactor into this external table (so it has an embedded representation of the inline nesting, say). |
Assigining @jakobbotsch for his input.
|
Moving to future since it is unlikely to happen in .NET 6. |
I'm currently working on refactoring the debug info, we should be able to handle this once that is done. |
Will this happen? I'll close the issue otherwise |
This relates to the EE ryuJIT debug interface and the ability to request sequence points for a debugger.
I've implemented
ICorJitInfo::getBoundaries()
to return an array of sequence points that I'm interested in with the IL mappings:The source types are https://github.com/dotnet/runtime/blob/main/src/coreclr/inc/cordebuginfo.h#L41-L50 :
I would expect the call back to have
ICorJitInfo::SEQUENCE_POINT
as the enum for thesourceType
struct for the sequence points I requested, but instead they have the value0
(maps toSOURCE_INVALID
):This is generated by,
void CodeGen::genIPmappingGen()
which looks to callCompiler::eeSetLIinfo()
I can't see a condition under which it would correctly assign the SEQUENCE_POINT value?
This looks like a bug in that condition.
If it is, I'd be happy to submit a PR to fix.
category:cq
theme:jit-ee-interface
skill-level:beginner
cost:small
impact:small
The text was updated successfully, but these errors were encountered: