Visual C++ 2010 Win32-basierte Anwendung abstürzen oder Funktion Fehler können auftreten, wenn das Projekt mit _fastcall und eine Compileroption Optimierung kompiliert


Problembeschreibung


Betrachten Sie das folgende Szenario:
  • Sie erstellen eine Microsoft Visual C++ 2010 Win32-Projekt.
  • Sie verwenden das Schlüsselwort _fastcall einige Funktionen des Projekts. Oder die Eigenschaft Aufrufkonvention für das Projekt auf _fastcallfestgelegt.
  • Sie können eine Optimierung Compileroptionen in Microsoft Visual Studio 2010. Aktivieren Sie beispielsweise das Geschwindigkeit maximieren (/ O2) Optimierung (Compileroption).

    Hinweis Wenn eine Compileroption Optimierung aktiviert ist, ist das Feature zurück Wert Optimierung (RVO) in Visual Studio 2010 aktiviert.
  • Kompilieren Sie das Projekt, und führen Sie die Anwendung.
In diesem Szenario kann die Anwendung abstürzen oder andere Funktion Fehler auftreten.

Angenommen, stürzt die Anwendung durch eine Zugriffsverletzungsausnahme.

Ursache


Dieses Problem tritt auf, weil beim Kompilieren der Anwendung mit _fastcall bei aktiviertem Feature RVO falscher Code generiert wird. Falsche Code überschreibt Speicher nach dem Zufallsprinzip. Daher können verschiedene Funktion Fehler auftreten.

Problemlösung


Hotfix-Informationen

Ein unterstützter Hotfix ist inzwischen von Microsoft erhältlich. Es soll jedoch nur das Problem beheben, das in diesem Artikel beschrieben wird. Wenden Sie es nur auf Systeme an, bei denen dieses spezielle Problem auftritt. Dieser Hotfix wird möglicherweise noch getestet. Wenn Ihr System durch dieses Problem nicht schwerwiegend beeinträchtigt ist, empfehlen wir sie, auf das nächste Softwareupdate zu warten, das diesen Hotfix enthält.

Wenn dieses Problem sofort beheben möchten, wenden Sie sich an Microsoft Support Services, um den Hotfix zu erhalten. Eine vollständige Liste der Telefonnummern des Microsoft Product Support Services und Informationen zu den Supportkosten finden Sie auf der folgenden Microsoft-Website:Hinweis In bestimmten Fällen können Gebühren, die normalerweise für Support-Anrufe anfallen abgebrochen werden, wenn ein Microsoft-Supportmitarbeiter feststellt, dass ein bestimmtes Update Ihr Problem behebt. Die normalen Supportkosten gilt für zusätzliche Supportfragen und Probleme, die nicht für das betreffende Update qualifizieren.



Voraussetzungen

Um diesen Hotfix anwenden zu können, müssen Sie Microsoft Visual Studio 2010 installiert haben.

Neustartanforderung

Sie müssen keinen Neustart des Computers nach Installation des Hotfixes durchführen.

Informationen zu ersetzten Hotfixes

Dieser Hotfix ersetzt keinen anderen Hotfix.

Dateiinformationen

Die englische Version dieses Hotfixes weist Dateiattribute (oder spätere Attribute), die in der folgenden Tabelle aufgelistet sind. Die Datums- und Uhrzeitangaben für diese Dateien sind in Coordinated Universal Time (UTC) aufgelistet. Wenn Sie die Dateiinformationen anzeigen, werden sie in die lokale Zeit konvertiert. Um die Differenz zwischen UTC und der Ortszeit zu finden, verwenden Sie die Registerkarte Zeitzone unter Datum und Uhrzeit in der Systemsteuerung.


Für alle unterstützten Versionen von Visual Studio 2010
DateinameDateiversionDateigrößeDatumZeitPlattform
C2.dll16.0.30319.3792,508,60825-Oct-201008:42x86
C2.dll16.0.30319.3792,588,99225-Oct-201008:42x86
C2.dll16.0.30319.3792,629,44025-Oct-201008:42x86
C2.dll16.0.30319.3792,975,55225-Oct-201008:42x64
C2.dll16.0.30319.3797,351,61625-Oct-201008:42IA-64

Status


Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Eigenschaften“ aufgeführt sind.