Friday, August 25, 2023

Eine auf .NET Framework 2.0 basierende Anwendung, die auf die x64-Plattform abzielt, stürzt aufgrund einer nicht erfassten ThreadAbortException-Ausnahme ab – Microsoft-Support

Stellen Sie sich das folgende Szenario für eine auf Microsoft .NET Framework 2.0 basierende Anwendung vor:

  • Die Anwendung zielt auf eine x64-Plattform oder eine beliebige CPU ab.

  • Wenn Sie das entsprechende Projekt erstellen, geben Sie das Flag /o+ in der Befehlszeile von csc.exe an. Oder Sie wählen das Flag „Code optimieren" im Abschnitt „Erstellen" der Seite „Projekteigenschaften" in Visual Studio aus.

  • Die Quelldatei im Projekt enthält einen Try/Catch-Block innerhalb einer Schleife. Zwischen dem Ende des Catch-Blocks und dem Ende der Schleife befindet sich kein Ausführungscode. Nach dem Catch-Block wird eine ThreadAbortException-Ausnahme ausgelöst.

  • Die Quelldatei enthält Catch-Blöcke in einer höheren Funktionsebene, die darauf abzielen, die ThreadAbortException-Ausnahme abzufangen.

  • Sie führen die Anwendung aus.

In diesem Szenario wird die Ausnahme nicht abgefangen und die Anwendung stürzt unerwartet ab.

Symptome

Hotfix-Informationen

Ein unterstützter Hotfix ist jetzt von Microsoft verfügbar. Es soll jedoch nur das in diesem Artikel beschriebene Problem beheben. Wenden Sie es nur auf Systeme an, bei denen dieses spezielle Problem auftritt. Dieser Hotfix wird möglicherweise weiteren Tests unterzogen. Wenn Sie von diesem Problem nicht schwerwiegend betroffen sind, empfehlen wir Ihnen daher, auf das nächste Software-Update zu warten, das diesen Hotfix enthält.

Um dieses Problem sofort zu beheben, wenden Sie sich an den Microsoft-Kundendienst, um den Hotfix zu erhalten. Eine vollständige Liste der Telefonnummern des Microsoft-Kundensupports und Informationen zu den Supportkosten finden Sie auf der folgenden Microsoft-Website:

http://support.microsoft.com/contactus/?ws=support Hinweis In besonderen Fällen können die Gebühren, die normalerweise für Supportanrufe anfallen, storniert werden, wenn ein Microsoft-Supportmitarbeiter feststellt, dass ein bestimmtes Update Ihr Problem lösen wird. Für zusätzliche Supportfragen und Probleme, die für das jeweilige Update nicht in Frage kommen, fallen die üblichen Supportkosten an.

Voraussetzungen

Für die Installation dieses Hotfixes sind keine Voraussetzungen erforderlich.

Neustartanforderung

Sie müssen den Computer neu starten, nachdem Sie den Hotfix angewendet haben.

Informationen zum Hotfix-Ersatz

Dieser Hotfix ersetzt keine anderen Hotfixes.

Dateiinformationen

Die englische Version dieses Hotfixes verfügt über die Dateiattribute (oder spätere Dateiattribute), die in der folgenden Tabelle aufgeführt sind. Die Datums- und Uhrzeitangaben für diese Dateien werden in der koordinierten Weltzeit (UTC) angegeben. Wenn Sie die Dateiinformationen anzeigen, werden diese in die Ortszeit konvertiert. Um den Unterschied zwischen UTC und Ortszeit zu ermitteln, verwenden Sie die Registerkarte „Zeitzone " im Element „Datum und Uhrzeit" in der Systemsteuerung.

Für alle unterstützten x86-basierten Versionen von Windows 7

Dateiname

Dateiversion

Dateigröße

Datum

Zeit

Mscorlib.dll

2.0.50727.5020

4.550.656

10. Juni 2010

22:58

Mscordacwks.dll

2.0.50727.5020

995.672

10. Juni 2010

22:58

Mscorwks.dll

2.0.50727.5020

5.822.800

10. Juni 2010

22:58

Sos.dll

2.0.50727.5020

388.936

10. Juni 2010

22:58

Für alle unterstützten x64-basierten Versionen von Windows 7 und Windows Server 2008 R2

Dateiname

Dateiversion

Dateigröße

Datum

Zeit

Mscorlib.dll

2.0.50727.5020

4.567.040

10. Juni 2010

22:50

Mscordacwks.dll

2.0.50727.5020

1.757.528

10. Juni 2010

22:50

Mscorwks.dll

2.0.50727.5020

10.043.728

10. Juni 2010

22:50

Sos.dll

2.0.50727.5020

485.192

10. Juni 2010

22:50

Für alle unterstützten IA-64-basierten Versionen von Windows Server 2008 R2

Dateiname

Dateiversion

Dateigröße

Datum

Zeit

Mscorlib.dll

2.0.50727.5020

4.009.984

10. Juni 2010

22:49

Mscordacwks.dll

2.0.50727.5020

3.086.168

10. Juni 2010

22:49

Mscorwks.dll

2.0.50727.5020

20.187.472

10. Juni 2010

22:49

Sos.dll

2.0.50727.5020

872.776

10. Juni 2010

22:49

Um dieses Problem zu umgehen, fügen Sie Code zwischen dem Ende des Catch-Blocks und dem Ende der Schleife hinzu.

Um dieses Problem zu reproduzieren, kompilieren Sie den folgenden Beispielcode mit dem Befehl csc.exe /o+ und generieren Sie mithilfe von .NET Framework 2.0 eine Anwendung, die auf die x64-Plattform abzielt.

using System;
using System.Threading;

class P
{
private static void Foo()
{
while (true)
{
try
{
Thread.CurrentThread.Abort();
}
catch (Exception)
{
// throw;
Console.WriteLine("Inside catch");
}
}
}

public static void Main(string[] a)
{
try
{
Foo();
}
catch (System.Threading.ThreadAbortException)
{
System.Threading.Thread.ResetAbort();
}

Console.WriteLine("Done!");
}
}

Bevor Sie den Hotfix installieren, stürzt die Anwendung ab. Nachdem Sie den Hotfix installiert haben, erhalten Sie in der Konsole die folgende Ausgabe:


Auflösung

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Gilt für" aufgeführt sind.

Status

Für weitere Informationen zur Softwareupdate-Terminologie klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:

824684 Beschreibung der Standardterminologie, die zur Beschreibung von Microsoft-Softwareupdates verwendet wird

Mehr Informationen

No comments:

Post a Comment