-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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 runtime module address to SpecialDiagInfo block in createdump and fix missing DotNetRuntimeDebugHeader export #96121
Conversation
Tagging subscribers to this area: @tommcdon Issue DetailsCustomer ImpactThe missing DotNetRuntimeDebugHeader export break createdump finding the runtime module and the Native SOS finding the data contract table. This will allow the Native AOT SOS to find the module containing the runtime without searching every module in the system. TestingManual testing with Native AOT SOS. RiskLow. Only affects the internal Native AOT runtime thread id which is only used internal in a few places and by the Native AOT SOS. DetailsFix missing DotNetRuntimeDebugHeader export: Add ILC options: Change Native AOT build integration to always pass an export file to ILC and linker. Bump the Native AOT data contract sizes
|
Tagging subscribers to this area: @agocke, @MichalStrehovsky, @jkotas Issue DetailsCustomer ImpactThe missing DotNetRuntimeDebugHeader export break createdump finding the runtime module and the Native SOS finding the data contract table. This will allow the Native AOT SOS to find the module containing the runtime without searching every module in the system. TestingManual testing with Native AOT SOS. RiskLow. Only affects the internal Native AOT runtime thread id which is only used internal in a few places and by the Native AOT SOS. DetailsFix missing DotNetRuntimeDebugHeader export: Add ILC options: Change Native AOT build integration to always pass an export file to ILC and linker. Bump the Native AOT data contract sizes
|
Copy&paste from the other PR... This is changing the compiler and linker command lines. It has potential to break people with custom build integration. We do not document the AOT compiler command line args, but this is the first time we are changing the AOT compiler command line options in servicing. I would classify the risk as medium. |
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.
Thank you
The failure looks related:
This might be MAX_PATH related; the path to the def file is 262 characters. Interestingly the path to the object file would also be over MAX_PATH here but it might be it's taking different codepaths within link.exe (just speculating). |
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.
approved. we will take for consideration in 8.0.x
I'm not sure how to fix this failure. It didn't happen in main with this change. This change does create and pass a def file to the linker pretty always now. |
The test was renamed to have a shorter name in #92407. Rename it in this PR to fix the failure?. |
Fix missing DotNetRuntimeDebugHeader export: Add ILC options: --export-dynamic-symbol - Add dynamic export symbol to export file. Used to add DotNetRuntimeDebugHeader export. --export-unmanaged-entrypoints - controls whether the exported method definitions are exported Change Native AOT build integration to always pass an export file to ILC and linker. Bump the Native AOT data contract sizes
Is there anything else needed for this PR? |
Customer Impact
Without this PR the Native AOT SOS when it is released will not work for Linux and MacOS apps/crash dumps. This hasn’t been reported (but will be) by any customers yet since the Native AOT specific (closed source) SOS hasn’t been released yet. This is a regression from .NET 7. The DCR symbol exists in .NET 7 Native AOT apps. This change DOES NOT remove any ILC command line options only adds 2 new ones.
Part of this PR is single-file and Native AOT app-model SOS performance which for single-file has been reported by customers (I forgot to put issue #3737 in the PR text). The reason these are two are in the same PR is the missing DCR export symbol part is required for the performance half (for Native AOT).
This will allow the Native AOT SOS to find the module containing the runtime without searching every module in the system.
Testing
Manual testing with Native AOT SOS.
Risk
Medium. This is changing the compiler and linker command lines. It has potential to break people with custom build integration. We do not document the AOT compiler command line args, but this is the first time we are changing the AOT compiler command line options in servicing.
Details
Fix missing DotNetRuntimeDebugHeader export:
Add ILC options:
--export-dynamic-symbol - Add dynamic export symbol to export file. Used to add DotNetRuntimeDebugHeader export.
--export-unmanaged-entrypoints - controls whether the exported method definitions are exported
Change Native AOT build integration to always pass an export file to ILC and linker.
Bump the Native AOT data contract sizes