-
Notifications
You must be signed in to change notification settings - Fork 4.6k
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
[ppc64le] System.Collections.Concurrent.Tests timeout #71079
Comments
Tagging subscribers to this area: @dotnet/area-system-collections Issue DetailsDescription
Reproduction StepsRun test suite as normal Expected behaviorDon't time out Actual behaviorTimes out Regression?No response Known WorkaroundsNo response Configurationgit master on ppc64el (community port) Other informationNo response
|
Yes I can reproduce issue. This testcase few time works on ppc64le and few time fails. Here are results when it passed successfully
|
We could reproduce this on Power by implementing a small test program. The test program tries to simultaneously push and pop items to ConcurrentStack. Only first item gets pushed onto stack and then nothing happens. This is the reason that this test case is timing out on CICD pipeline. We are debugging this to find out the root cause and probably something is going wrong in generating power assembly code for OP_ATOMIC_CAS_I8 opcode. |
We debugged this and find out that this is related to a call to GC.GetTotalAllocatedBytes(precise: true); from the test case Concurrent_Push_TryPop_WithSuspensions witin ConcurrentStackTests.cs file then the test case passes. This is due to the fact that Consumer thread is waiting for GC to complete but GC is not able to complete. Below is the stack trace for GC thread:
Backtrace stopped: previous frame inner to this frame (corrupt stack?) |
On enabling debug code for thread suspensions, we found that it isn't actually using signals to interrupt the other threads, but rather it uses the cooperative method. This works by the JIT inserting "safe points" into every JITed method, which regularly check a flag to see whether the thread was requested to suspend itself. The opcode that handles this on power OP_GC_SAFE_POINT does nothing! |
It looks like an empty placeholder |
Yes, we are working on implementing the OP_GC_SAFE_POINT opcode for ppc64le |
@directhex |
@alhad-deshpande @directhex : Is there any more work remaining here or can this be closed ? |
As I understand it, we should be good to close this
…Sent from my iPhone
On Aug 3, 2022, at 10:44 AM, Sam Patel ***@***.***> wrote:
@alhad-deshpande @directhex : Is there any more work remaining here or can this be closed ?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.
|
Closing the issue - please reach out if issue isn't resolved. |
@SamMonoRT |
Description
Reproduction Steps
Run test suite as normal
Configuration
git master on ppc64el (community port)
The text was updated successfully, but these errors were encountered: