-
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
Identification of JIT generated functions by their address #105712
Comments
Tagging subscribers to this area: @tommcdon |
Hi @yegor-pelykh, just to clarify, is what you're seeing in your callstack a bunch of frames corresponding to managed code, and then some frames that dont seem to have any useful information besides an address?
If that is the case, then I do agree that its missing symbol information, but I don't know if there is any other telltale sign to figure out the source of the frames with missing symbol information. Are you building everything in debug configuration? How are you grabbing the callstack? I don't really know if there is any other way to sleuth those frames besides ensuring that you're building with debug configuration to generate symbols and that whichever thing you're using to grab callstacks loads those symbols. |
Hi @mdh1418. Thanks for the answer!
That's exactly what I'm talking about. This is a debug configuration. Symbols were also initialized. There are no recognition problems with any other frames. What is even more interesting is that if you look at these same addresses from under WinDbg with the SOS add-on, these addresses are recognized as IL Stub, and, it seems, belong to the main running module of the application. And this is strange to me, since SOS can understand which module they belong to, and also name the symbols. Could you look at such addresses in more detail, especially how this is implemented in SOS, and also make some changes to the Profiler API capabilities to be able to determine the info for these addresses? Please. |
Hi @yegor-pelykh, I'm noticing that runtime/src/coreclr/vm/proftoeeinterfaceimpl.cpp Line 6233 in 9a31a5b
Could you elaborate on how you're grabbing the mixed mode call stack with a profiler and do you mainly need the IL Stubs information to trace back to unmanaged code? |
This issue has been marked |
This issue has been automatically marked |
I use the Profiler API to get a mixed mode call stack.
The problem is that for some of the native frames of the resulting stack (related to the managed -> unmanaged transition, hidden behind the
DllImport
) are completely unknown - it is impossible to get symbolic information for them, even just the module to which the return address belongs.GetFunctionFromIP
for the address of this frame returnsE_FAIL
, which means that the function is unmanaged.As I understand, this is a JIT generated piece of code.
But how can I know this for sure, to determine this for any other such piece of code from any call stack?
And I'd like to get the module to which this piece of code belongs, as well as some text description (let's say the "name" of the function).
Please, could you help me?
The text was updated successfully, but these errors were encountered: