Jaka jest przyczyna tego FatalExecutionEngineError w .NET 4.5 beta? [Zamknięte]

Poniższy przykładowy kod wystąpił naturalnie. Nagle mój kod jest bardzo nieprzyjemnie brzmiącyFatalExecutionEngineError wyjątek. Spędziłem dobre 30 minut próbując wyizolować i zminimalizować próbkę sprawcy. Skompiluj to za pomocą programu Visual Studio 2012 jako aplikacji konsoli:

class A<T>
{
    static A() { }

    public A() { string.Format("{0}", string.Empty); }
}

class B
{
    static void Main() { new A<object>(); }
}

Powinien wywołać ten błąd w środowisku .NET 4 i 4.5:

Czy jest to znany błąd, jaka jest przyczyna i co mogę zrobić, aby go złagodzić? Moja obecna praca polega na tym, aby nie używaćstring.Empty, ale czy ja szczeka złe drzewo? Zmiana czegokolwiek w tym kodzie sprawia, że ​​działa tak, jak można się spodziewać - na przykład usunięcie pustego konstruktora statycznegoAlub zmiana parametru typu zobject doint.

Próbowałem tego kodu na moim laptopie i nie narzekał. Jednak wypróbowałem moją aplikację główną i również zawiesił się na laptopie. Musiałem coś zniekształcić, zmniejszając problem, zobaczę, czy uda mi się dowiedzieć, co to było.

Mój laptop rozbił się z tym samym kodem, co wyżej, z frameworkiem 4.0, ale główne awarie nawet z 4.5. Oba systemy używają VS'12 z najnowszymi aktualizacjami (lipiec?).

Więcej informacji:

Kod IL (skompilowany Debug / Any CPU / 4.0 / VS2010 (nie to, że IDE powinno mieć znaczenie?)):http://codepad.org/boZDd98ENie widziałem VS 2010 z 4.0. Nie zawiesza się z / bez optymalizacji, inny docelowy procesor, dołączony / nie podłączony debugger itp. -Tim MedoraAwarie w 2010 r., Jeśli używam AnyCPU, jest w porządku w x86. Awarie w dodatku SP1 dla programu Visual Studio 2010, przy użyciu Platform Target = AnyCPU, ale dobrze z Platform Target = x86. Ta maszyna ma zainstalowanego VS2012RC, a także 4.5, co może zastąpić miejsce. Użyj AnyCPU i TargetPlatform = 3.5, a następnie nie ulegnie awarii, więc wygląda na regresję w Framework.-ColinsmithNie można odtworzyć na x86, x64 lub AnyCPU w VS2010 z 4.0. -FujiWystępuje tylko dla x64, (2012rc, Fx4,5) -Henk HoltermanVS2012 RC na Win8 RP. Początkowo nie widzę tego MDA podczas celowania w .NET 4.5. Po przełączeniu na targetowanie .NET 4.0 pojawiło się MDA. Następnie po powrocie do .NET 4.5 pozostaje MDA. -Wayne

questionAnswers(3)

yourAnswerToTheQuestion