From: Jan Vorlicek Date: Sat, 17 Jun 2017 14:36:46 +0000 (+0200) Subject: Add regression test for issue dotnet/coreclr#12224 (dotnet/coreclr#12331) X-Git-Tag: submit/tizen/20210909.063632~11030^2~6925^2~397 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f7de006903ff66de0a0e247d905c453012288ed9;p=platform%2Fupstream%2Fdotnet%2Fruntime.git Add regression test for issue dotnet/coreclr#12224 (dotnet/coreclr#12331) This change adds regression test for EH getting stuck in an infinite loop when NullReferenceException happens inside a handler of another NullReferenceException. Commit migrated from https://github.com/dotnet/coreclr/commit/16d41f11e55d1e137cb799d7b1884e02df600c66 --- diff --git a/src/coreclr/tests/src/Regressions/coreclr/GitHub_12224/Test12224.csproj b/src/coreclr/tests/src/Regressions/coreclr/GitHub_12224/Test12224.csproj new file mode 100644 index 0000000..ae3c42c --- /dev/null +++ b/src/coreclr/tests/src/Regressions/coreclr/GitHub_12224/Test12224.csproj @@ -0,0 +1,39 @@ + + + + + Debug + AnyCPU + 2.0 + {9CBB2BDE-E9EF-4F0A-840C-0F80380D4513} + Exe + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + ..\..\ + true + BuildAndRun + 1 + + + + + + + + + False + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/coreclr/tests/src/Regressions/coreclr/GitHub_12224/test12224.cs b/src/coreclr/tests/src/Regressions/coreclr/GitHub_12224/test12224.cs new file mode 100644 index 0000000..8a3124c --- /dev/null +++ b/src/coreclr/tests/src/Regressions/coreclr/GitHub_12224/test12224.cs @@ -0,0 +1,43 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. +using System; +using System.Threading; + +public class Test12224 +{ + // Regression test for EH getting stuck in an infinite loop when NullReferenceException + // happens inside a handler of another NullReferenceException. + static void ExecuteTest(object context) + { + string s = null; + try + { + try + { + int x = s.Length; + } + catch (NullReferenceException) + { + int x = s.Length; + } + } + catch (NullReferenceException) + { + + } + } + + public static int Main() + { + Thread thread = new Thread(new ParameterizedThreadStart(Test12224.ExecuteTest)); + thread.IsBackground = true; + thread.Start(null); + + // Give the thread 30 seconds to complete (it should be immediate). If it fails + // to complete within that timeout, it has hung. + bool terminated = thread.Join(new TimeSpan(0, 0, 30)); + + return terminated ? 100 : -1; + } +}