runtime: Distributed transactions: AccessViolationException on arm64
Happens a lot – see last 30 days:
- 8/25 - 81x failures on net7.0-windows-Release-arm64-CoreCLR_release-Windows.10.Arm64.Open
- First failure on 8/12 in PR 1939026
- Impact: 6x failures per day - blocking CI
win-arm64 libraries random JitStress failure
D:\h\w\AFDD09E1\w\B09109AB\e>set COMPlus
COMPlus_JitStress=36f
COMPlus_TieredCompilation=0
D:\h\w\AFDD09E1\w\B09109AB\e>call RunTests.cmd --runtime-path D:\h\w\AFDD09E1\p
----- start Thu 08/18/2022 0:42:25.05 =============== To repro directly: =====================================================
pushd D:\h\w\AFDD09E1\w\B09109AB\e\
"D:\h\w\AFDD09E1\p\dotnet.exe" exec --runtimeconfig System.Transactions.Local.Tests.runtimeconfig.json --depsfile System.Transactions.Local.Tests.deps.json xunit.console.dll System.Transactions.Local.Tests.dll -xml testResults.xml -nologo -nocolor -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing
popd
===========================================================================================================
D:\h\w\AFDD09E1\w\B09109AB\e>"D:\h\w\AFDD09E1\p\dotnet.exe" exec --runtimeconfig System.Transactions.Local.Tests.runtimeconfig.json --depsfile System.Transactions.Local.Tests.deps.json xunit.console.dll System.Transactions.Local.Tests.dll -xml testResults.xml -nologo -nocolor -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing
Discovering: System.Transactions.Local.Tests (method display = ClassAndMethod, method display options = None)
Discovered: System.Transactions.Local.Tests (found 131 of 142 test cases)
Starting: System.Transactions.Local.Tests (parallel test collections = on, max threads = 8)
Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Repeat 2 times:
--------------------------------
at System.Transactions.DtcProxyShim.DtcInterfaces.IResourceManagerFactory2.CreateEx(System.Guid, System.String, System.Transactions.DtcProxyShim.DtcInterfaces.IResourceManagerSink, System.Guid, System.Object ByRef)
--------------------------------
at System.Transactions.DtcProxyShim.DtcProxyShimFactory+<>c__DisplayClass10_0.<ConnectToProxy>b__2()
at System.Transactions.DtcProxyShim.OletxHelper.Retry(System.Action)
at System.Transactions.DtcProxyShim.DtcProxyShimFactory.ConnectToProxy(System.String, System.Guid, System.Object, Boolean ByRef, Byte[] ByRef, System.Transactions.DtcProxyShim.ResourceManagerShim ByRef)
at System.Transactions.Oletx.DtcTransactionManager.Initialize()
at System.Transactions.Oletx.DtcTransactionManager.get_ProxyShimFactory()
at System.Transactions.Oletx.OletxTransactionManager.CreateTransaction(System.Transactions.TransactionOptions)
at System.Transactions.TransactionStatePromoted.EnterState(System.Transactions.InternalTransaction)
at System.Transactions.EnlistableStates.EnlistDurable(System.Transactions.InternalTransaction, System.Guid, System.Transactions.IEnlistmentNotification, System.Transactions.EnlistmentOptions, System.Transactions.Transaction)
at System.Transactions.Transaction.EnlistDurable(System.Guid, System.Transactions.IEnlistmentNotification, System.Transactions.EnlistmentOptions)
at System.Transactions.Tests.OleTxTests+OleTxFixture..ctor()
at System.RuntimeMethodHandle.InvokeMethod(System.Object, Void**, System.Signature, Boolean)
at System.Reflection.ConstructorInvoker.Invoke(System.Object, IntPtr*, System.Reflection.BindingFlags)
at System.Reflection.RuntimeConstructorInfo.Invoke(System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
at Xunit.Sdk.XunitTestClassRunner+<>c__DisplayClass10_0.<CreateClassFixture>b__3()
at Xunit.Sdk.ExceptionAggregator.Run(System.Action)
at Xunit.Sdk.XunitTestClassRunner+<CreateClassFixtureAsync>d__11.MoveNext()
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Xunit.Sdk.XunitTestClassRunner+<CreateClassFixtureAsync>d__11, xunit.execution.dotnet, Version=2.4.2.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](<CreateClassFixtureAsync>d__11 ByRef)
at Xunit.Sdk.XunitTestClassRunner.CreateClassFixtureAsync(System.Type)
at Xunit.Sdk.XunitTestClassRunner+<AfterTestClassStartingAsync>d__13.MoveNext()
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Xunit.Sdk.XunitTestClassRunner+<AfterTestClassStartingAsync>d__13, xunit.execution.dotnet, Version=2.4.2.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](<AfterTestClassStartingAsync>d__13 ByRef)
at Xunit.Sdk.XunitTestClassRunner.AfterTestClassStartingAsync()
at Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.4.2.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](<RunAsync>d__37<System.__Canon> ByRef)
at Xunit.Sdk.TestClassRunner`1[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunAsync()
at Xunit.Sdk.TestCollectionRunner`1+<RunTestClassesAsync>d__28[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Xunit.Sdk.TestCollectionRunner`1+<RunTestClassesAsync>d__28[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.4.2.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](<RunTestClassesAsync>d__28<System.__Canon> ByRef)
at Xunit.Sdk.TestCollectionRunner`1[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunTestClassesAsync()
at Xunit.Sdk.TestCollectionRunner`1+<RunAsync>d__27[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Xunit.Sdk.TestCollectionRunner`1+<RunAsync>d__27[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.4.2.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](<RunAsync>d__27<System.__Canon> ByRef)
at Xunit.Sdk.TestCollectionRunner`1[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunAsync()
at System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].InnerInvoke()
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef, System.Threading.Thread)
at System.Threading.Tasks.Task.ExecuteEntry()
at System.Threading.Tasks.SynchronizationContextTaskScheduler+<>c.<.cctor>b__8_0(System.Object)
at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(System.Threading.SendOrPostCallback, System.Object)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc()
at Xunit.Sdk.XunitWorkerThread+<>c.<QueueUserWorkItem>b__5_0(System.Object)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef, System.Threading.Thread)
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 20 (20 by maintainers)
Commits related to this issue
- Fix GUID interop in distributed transactions Fixes #74170 — committed to roji/runtime by roji 2 years ago
- Fix GUID interop in distributed transactions And disable tests on ARM for now. Works around #74170 — committed to roji/runtime by roji 2 years ago
- Fix GUID interop in distributed transactions And disable tests on ARM for now. Works around #74170 — committed to roji/runtime by roji 2 years ago
- Fix GUID interop in distributed transactions And disable tests on ARM for now. Works around #74170 — committed to roji/runtime by roji 2 years ago
- Fix GUID interop in distributed transactions And disable tests on ARM for now. Works around #74170 — committed to dotnet/runtime by roji 2 years ago
- Disable distributed transaction tests on ARM To unblock CI build failures, works around #74170 — committed to roji/runtime by roji 2 years ago
- Disable distributed transaction tests on ARM To unblock CI build failures, works around #74170 — committed to dotnet/runtime by roji 2 years ago
- Fix GUID interop in distributed transactions Related to #74170 — committed to roji/runtime by roji 2 years ago
- Disable distributed transaction tests on ARM (#74572) To unblock CI build failures, works around #74170 — committed to dotnet/runtime by roji 2 years ago
- Disable distributed transaction tests on ARM (#74573) To unblock CI build failures, works around #74170 Co-authored-by: Shay Rojansky <roji@roji.org> — committed to dotnet/runtime by github-actions[bot] 2 years ago
- Move distributed transaction test to OleTxTests NonMsdtcPromoterTests.PSPENonMsdtcGetPromoterTypeMSDTC was triggering an MSDTC distributed transaction on Windows, but without the proper checks/resili... — committed to roji/runtime by roji 2 years ago
- Move distributed transaction test to OleTxTests NonMsdtcPromoterTests.PSPENonMsdtcGetPromoterTypeMSDTC was triggering an MSDTC distributed transaction on Windows, but without the proper checks/resili... — committed to roji/runtime by roji 2 years ago
- Move distributed transaction test to OleTxTests NonMsdtcPromoterTests.PSPENonMsdtcGetPromoterTypeMSDTC was triggering an MSDTC distributed transaction on Windows, but without the proper checks/resili... — committed to roji/runtime by roji 2 years ago
- Move distributed transaction test to OleTxTests NonMsdtcPromoterTests.PSPENonMsdtcGetPromoterTypeMSDTC was triggering an MSDTC distributed transaction on Windows, but without the proper checks/resili... — committed to roji/runtime by roji 2 years ago
- Move distributed transaction test to OleTxTests NonMsdtcPromoterTests.PSPENonMsdtcGetPromoterTypeMSDTC was triggering an MSDTC distributed transaction on Windows, but without the proper checks/resili... — committed to dotnet/runtime by roji 2 years ago
- Move distributed transaction test to OleTxTests (#74747) NonMsdtcPromoterTests.PSPENonMsdtcGetPromoterTypeMSDTC was triggering an MSDTC distributed transaction on Windows, but without the proper ch... — committed to dotnet/runtime by roji 2 years ago
- Move distributed transaction test to OleTxTests (#74748) NonMsdtcPromoterTests.PSPENonMsdtcGetPromoterTypeMSDTC was triggering an MSDTC distributed transaction on Windows, but without the proper ch... — committed to dotnet/runtime by github-actions[bot] 2 years ago
- Fix the definition of IResourceManagerFactory2. According to [the docs](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms681318(v=vs.85)) and the Windows SDK headers, the Guid p... — committed to jkoritzinsky/runtime by jkoritzinsky 2 years ago
- Block distributed transaction usage on arm64 And fix GUID interop in distributed transactions See #74170 — committed to roji/runtime by roji 2 years ago
- Block distributed transaction usage on arm64 And fix GUID interop in distributed transactions See #74170 (cherry picked from commit fdfef131c9220aa67e82174b627f2395127816d0) — committed to dotnet/runtime by roji 2 years ago
I’m marking blocking-release so this stays on the radar.
@karelz thanks, I see the issue - this is a test that isn’t expected to contact MSDTC (System.Transactions.Tests.NonMsdtcPromoterTests.PSPENonMsdtcGetPromoterTypeMSDTC), and therefore isn’t in the test suite where I added the skipping for arm64. I’ll sort this out.
@roji I may have missed the by-ref for the
GUID
s in this case. In fact, now that I think about it that is the issue. I’d update the interfaces that take aGUID*
or aREFGUID
to be defined asin Guid
orref Guid
depending on the desired semantics.