-
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
Update MicrosoftNETCoreCoreDisToolsVersion to 1.4.0 #96291
Update MicrosoftNETCoreCoreDisToolsVersion to 1.4.0 #96291
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue Detailsnull
|
/azp run runtime-coreclr outerloop, runtime-coreclr gcstress0x3-gcstress0xc, runtime-coreclr superpmi-diffs, runtime-coreclr r2r |
Azure Pipelines successfully started running 4 pipeline(s). |
cd11909
to
5d807c0
Compare
/azp run runtime-coreclr outerloop, runtime-coreclr gcstress0x3-gcstress0xc, runtime-coreclr superpmi-diffs, runtime-coreclr r2r |
Azure Pipelines successfully started running 4 pipeline(s). |
@janvorli Can you help me figure out how to debug a problem with this change? This PR updates coredistools.dll/so/dylib to a newly built version. This PR includes #96286, which has various related changes but doesn't bump the coredistools package version. That PR passes GCStress. This PR fails on linux x64 GCStress (maybe others), apparently during tests which are run out of process, so are spawned. Swapping in an older coredistools succeeds. For example (in my local WSL build/run):
The question is: how do I track down what is causing the 0x80004005 error? It seems I need to use lldb to get SOS functionality, and I'm not sure how to work with LLDB with multiple spawned processes as well as GCStress (so lots of "illegal" instructions). It seems that Any suggestions? |
@BruceForstall I've just found that starting with LLDB 14, there is a setting to debug child processes - at fork, the debugger switches to the spawned process and continues debugging it. You can use the following LLDB command However, when debugging stuff in child process, I usually try to figure out the command line to run the child standalone so that I don't have to do anything special. There is also an env variable |
@BruceForstall I have tried to build your branch and build the tests with env var |
@janvorli Thanks! I'll go build with |
I've also noticed that the issue occured on the first SIGILL, there were SIGSEGVs before that and they were processed ok. So just using |
It seems that the problem is actually that we only handle the STATUS_PRIVILEGED_INSTRUCTION as the GC stress instrumentation instruction exceptions. But the SIGILL generates STATUS_ILLEGAL_INSTRUCTION, which we don't process in any way, which explains the behavior.
My guess is that the "lock" is not expected there and may somehow stem from incorrect disassembly of the previous instruction when we instrument it. |
Hmm, I guess this makes it clear:
Seems like we have skipped the lock and instrumented just the |
Ah, interesting. The change here is that I've rebuilt coredistools with a current LLVM. That's the disassembler we're using for instrumenting during GCStress. Perhaps it has a bug disassembling "lock", or perhaps the VM needs to handle "lock" differently with the new disassembler? |
One or the other may be true. Depends on whether the change in the coredistool / LLVM was intentional or not. |
5d807c0
to
235df7e
Compare
/azp run runtime-coreclr outerloop, runtime-coreclr gcstress0x3-gcstress0xc, runtime-coreclr superpmi-diffs, runtime-coreclr r2r |
Azure Pipelines successfully started running 4 pipeline(s). |
@janvorli Thanks again for your help investigating. There was code in coredistools to specially handle x86 prefixes, to work around an LLVM bug that didn't treat the prefixes as part of the prefixed instruction. I removed this code because it was written 7-8 years ago, and various information on the internet made it sound like the LLVM bug had been fixed. Apparently it has not been fixed, at least for In any case, I restored the removed code and everything looks good now. |
235df7e
to
5628601
Compare
@jakobbotsch @kunalspathak @dotnet/jit-contrib PTAL |
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
No description provided.