X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Ftests%2Ffinalizer-exception.cs;h=71f4b4cc20933647e7fcc1df7d36407ec6261ae7;hb=ac1d494270ac25b3fd885ef7d8b52cb27109861d;hp=f11a1dcdeffd2ce3eb23d16d088a431977b999aa;hpb=b86af4848657c5fa6041d0eefa47ac004dc54442;p=mono.git diff --git a/mono/tests/finalizer-exception.cs b/mono/tests/finalizer-exception.cs index f11a1dcdeff..71f4b4cc209 100644 --- a/mono/tests/finalizer-exception.cs +++ b/mono/tests/finalizer-exception.cs @@ -2,10 +2,13 @@ using System; using System.Threading; public class FinalizerException { + ~FinalizerException () { throw new Exception (); } + static IntPtr aptr; + /* * We allocate the exception object deep down the stack so * that it doesn't get pinned. @@ -13,8 +16,10 @@ public class FinalizerException { public static unsafe void MakeException (int depth) { // Avoid tail calls int* values = stackalloc int [20]; + aptr = new IntPtr (values); if (depth <= 0) { - new FinalizerException (); + for (int i = 0; i < 10; i++) + new FinalizerException (); return; } MakeException (depth - 1); @@ -26,7 +31,9 @@ public class FinalizerException { Environment.Exit (0); }; - MakeException (1024); + var t = new Thread (delegate () { MakeException (1024); }); + t.Start (); + t.Join (); GC.Collect (); GC.WaitForPendingFinalizers ();