-
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
EventListener doesn't support expose embedded structures on Runtime events #12678
Comments
Thanks for following-up on that topic @noahfalk! |
Validate the debug mappings generated by the JIT using the MethodILToNative event. Unfortunately we can not use EventListener as the event there does not contain the actual mappings (dotnet#12678) so this reuses some of the facilities from the tracing tests to use EventPipe and TraceEvent. This only adds the infrastructure and a small number of tests, but at least this should make it easier to add more tests in this area in the future. There are some more limitations, for example we cannot validate the CALL_INSTRUCTION mappings generated for the managed return value feature because the debugger filters them out of the table reported. I am hoping we can change these mappings to be included as normal in the future.
Validate the debug mappings generated by the JIT using the MethodILToNative event. Unfortunately we can not use EventListener as the event there does not contain the actual mappings (#12678) so this reuses some of the facilities from the tracing tests to use EventPipe and TraceEvent. This only adds the infrastructure and a small number of tests, but at least this should make it easier to add more tests in this area in the future. There are some more limitations, for example we cannot validate the CALL_INSTRUCTION mappings generated for the managed return value feature because the debugger filters them out of the table reported. I am hoping we can change these mappings to be included as normal in the future. The tests themselves are added by adding a method to tests.il with an ExpectedILMappings attribute that allows specifying a subset of IL offsets that we expect mappings to be generated for, with separate subsets under Debug and when optimizing. This was the best way I could think of to be able to refer to the right IL offsets.
Due to lack of recent activity, this issue has been marked as a candidate for backlog cleanup. It will be closed if no further activity occurs within 14 more days. Any new comment (by anyone, not necessarily the author) will undo this process. This process is part of our issue cleanup automation. |
This issue will now be closed since it had been marked |
Much thanks to @chrisnas who found this issue:
Investigating a bit I think at least the beginning of the missing support is here. This code parses the ETW manifest and produces C# code that will ultimately be the strongly-typed .NET event type that EventListener returns. This code skips the struct keyword entirely. Assuming we solved that aspect there is probably a second layer that occurs at runtime when EventListener needs to read the serialized data and populate it into the object model. Just having the fields declared doesn't necessarily mean that the translating code will write the appropriate values into them.
The text was updated successfully, but these errors were encountered: