diff options
Diffstat (limited to 'tests/src/GC/Scenarios')
5 files changed, 25 insertions, 1 deletions
diff --git a/tests/src/GC/Scenarios/DoublinkList/dlcollect.cs b/tests/src/GC/Scenarios/DoublinkList/dlcollect.cs index a3a0c53dac..a17e95a270 100644 --- a/tests/src/GC/Scenarios/DoublinkList/dlcollect.cs +++ b/tests/src/GC/Scenarios/DoublinkList/dlcollect.cs @@ -77,6 +77,12 @@ namespace DoubLink { GC.WaitForPendingFinalizers(); + if (DLinkNode.FinalCount != iRep * iObj * 10) + { + // see github#4093 for the rationale for fail-fast in this test. + Environment.FailFast(string.Empty); + } + Console.WriteLine("{0} DLinkNodes finalized", DLinkNode.FinalCount); return (DLinkNode.FinalCount==iRep*iObj*10); } diff --git a/tests/src/GC/Scenarios/DoublinkList/dlstack.cs b/tests/src/GC/Scenarios/DoublinkList/dlstack.cs index 5aea9586c4..5e207bec52 100644 --- a/tests/src/GC/Scenarios/DoublinkList/dlstack.cs +++ b/tests/src/GC/Scenarios/DoublinkList/dlstack.cs @@ -85,6 +85,12 @@ namespace DoubLink { curTotalMemory = GC.GetTotalMemory(false); } + if (DLinkNode.FinalCount != iRep * iObj * 10) + { + // see github#4093 for the rationale for fail-fast in this test. + Environment.FailFast(string.Empty); + } + Console.WriteLine("{0} DLinkNodes finalized", DLinkNode.FinalCount); return (DLinkNode.FinalCount==iRep*iObj*10); diff --git a/tests/src/GC/Scenarios/DoublinkList/doublinkgen.cs b/tests/src/GC/Scenarios/DoublinkList/doublinkgen.cs index 9c5e4b6b04..76436ea7fe 100644 --- a/tests/src/GC/Scenarios/DoublinkList/doublinkgen.cs +++ b/tests/src/GC/Scenarios/DoublinkList/doublinkgen.cs @@ -71,6 +71,12 @@ namespace DoubLink { GC.WaitForPendingFinalizers(); GC.Collect(); + if (DLinkNode.FinalCount != iRep * iObj) + { + // see github#4093 for the rationale for fail-fast in this test. + Environment.FailFast(string.Empty); + } + Console.Write(DLinkNode.FinalCount); Console.WriteLine(" DLinkNodes finalized"); return (DLinkNode.FinalCount==iRep*iObj); diff --git a/tests/src/GC/Scenarios/FinalizeTimeout/FinalizeTimeout.cs b/tests/src/GC/Scenarios/FinalizeTimeout/FinalizeTimeout.cs index 0fda8172e4..60a6861734 100644 --- a/tests/src/GC/Scenarios/FinalizeTimeout/FinalizeTimeout.cs +++ b/tests/src/GC/Scenarios/FinalizeTimeout/FinalizeTimeout.cs @@ -17,6 +17,7 @@ public class FinalizeTimeout do { finalizableObject = new BlockingFinalizerOnShutdown(); + GC.KeepAlive(finalizableObject); } while (!BlockingFinalizerOnShutdown.finalizerCompletedOnce); // Start a bunch of threads that allocate continuously, to increase the chance that when Main returns, one of the @@ -42,12 +43,15 @@ public class FinalizeTimeout { byte[] b; while (true) + { b = new byte[1024]; + GC.KeepAlive(b); + } } private class BlockingFinalizerOnShutdown { - public static bool finalizerCompletedOnce = false; + public volatile static bool finalizerCompletedOnce = false; public bool isLastObject = false; ~BlockingFinalizerOnShutdown() @@ -68,6 +72,7 @@ public class FinalizeTimeout do { o = new object(); + GC.KeepAlive(o); } while ((++i & 0xff) != 0 || (elapsed = DateTime.Now - start) < timeout); Console.WriteLine("Finalizer end"); diff --git a/tests/src/GC/Scenarios/ServerModel/servermodel.csproj b/tests/src/GC/Scenarios/ServerModel/servermodel.csproj index 33fc4efbc8..dff52fc6ad 100644 --- a/tests/src/GC/Scenarios/ServerModel/servermodel.csproj +++ b/tests/src/GC/Scenarios/ServerModel/servermodel.csproj @@ -15,6 +15,7 @@ <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp> <CLRTestExecutionArguments>/numrequests:100</CLRTestExecutionArguments> <GCStressIncompatible>true</GCStressIncompatible> + <HeapVerifyIncompatible Condition="'$(Platform)' == 'x86'">true</HeapVerifyIncompatible> </PropertyGroup> <!-- Default configurations to help VS understand the configurations --> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |