Symptomen
Neem het volgende scenario:
-
U kunt de optimalisatieoptie globale (/Og) inschakelen door een van de volgende opties:
-
/O1
-
/O2
-
/Ox
-
-
Bij het bouwen van een Microsoft Visual C++-bronbestand met behulp van Microsoft Visual Studio 2008 Service Pack 1 (SP1).
-
Het bronbestand roept de functie setjmp , de longjmp functie, of beide functies.
In dit scenario kan de compiler de dezelfde afstand van de stack voor het opslaan van verschillende lokale variabelen gebruiken. Daarom treedt onverwacht gedrag op wanneer u de gegenereerde toepassing uitvoert.
Oorzaak
Dit probleem treedt op omdat de optimizer geen rekening met de functie setjmp of longjmp gehouden . Dit zorgt ervoor dat de optimizer voor het berekenen van de levensduur van de lokale variabelen niet goed. Als een variabele wordt gewijzigd, kan een andere variabele onverwacht worden gewijzigd.
Oplossing
Informatie over de hotfix
Een ondersteunde hotfix is beschikbaar bij Microsoft. Deze hotfix is echter alleen bedoeld als oplossing voor het in dit artikel beschreven probleem. Voer deze hotfix alleen uit op systemen waarop de in dit artikel beschreven problemen zich voordoen. Deze hotfix moet wellicht extra worden getest. Als u geen ernstige hinder ondervindt van dit probleem, is het daarom raadzaam te wachten op de volgende update waarin deze hotfix is opgenomen. U lost dit probleem meteen contact op met Microsoft Customer Support Services om de hotfix te verkrijgen. Voor een volledige lijst met telefoonnummers van Microsoft Customer Service and Support of om een afzonderlijk serviceverzoek aan te maken, gaat u naar de volgende Microsoft-website:
http://support.microsoft.com/contactus/?ws=supportOpmerking In speciale gevallen kunnen kosten die normaal gesproken verbonden zijn aan ondersteuningsoproepen, worden geannuleerd als een medewerker van Microsoft Product Support Services van mening is dat een specifieke update de oplossing van uw probleem is. De normale ondersteuningskosten blijven gelden voor extra ondersteuningsvragen die niet in aanmerking voor de specifieke update in kwestie komen. Deze hotfix is opgenomen in de galerie van Microsoft Developer Network (MSDN)-Code kunt u downloaden vanaf de volgende Microsoft-website:
http://code.msdn.microsoft.com/KB2498381Opmerking De MSDN Code Gallery geeft de talen waarvoor de hotfix beschikbaar is. Als de taal die niet wordt weergegeven, is het omdat de pagina Galerie met Code bron niet beschikbaar voor die taal is. Of u kunt deze hotfix ook downloaden vanaf de volgende website van Microsoft Connect:
https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=34826
Speciale vereisten
Deze hotfix moet u Microsoft Visual Studio 2008 Service Pack 1 geïnstalleerd hebben.
Opstartinformatie
U beschikt niet over de computer opnieuw opstarten nadat u deze hotfix hebt geïnstalleerd nadat u alle exemplaren van Visual Studio hebt gestopt.
Informatie over het vervangen van hotfixes
Deze hotfix vervangt geen eerder uitgebrachte hotfix.
Bestandsgegevens
De algemene versie van deze hotfix installeert bestanden met de bestandskenmerken die in de volgende tabellen worden weergegeven. De datums en tijden voor deze bestanden worden weergegeven in Coordinated Universal Time (UTC). De datums en tijden voor deze bestanden op uw lokale computer worden weergegeven in uw lokale tijd samen met het huidige verschil met de zomertijd (DST). Bovendien kunnen de datums en tijden veranderen wanneer u bepaalde bewerkingen op de bestanden uitvoert.
Bestandsnaam |
Bestandsversie |
Bestandsgrootte |
Datum |
Tijd |
Platform |
---|---|---|---|---|---|
C2.dll |
15.0.30729.6147 |
2,283,840 |
25-Feb-2011 |
01:25 |
x86 |
C2.dll |
15.0.30729.6147 |
2,362,688 |
25-Feb-2011 |
01:25 |
x86 |
C2.dll |
15.0.30729.6147 |
2,493,248 |
25-Feb-2011 |
01:25 |
x86 |
C2.dll |
15.0.30729.6147 |
3,018,048 |
25-Feb-2011 |
01:25 |
x64 |
C2.dll |
15.0.30729.6147 |
7,263,040 |
25-Feb-2011 |
01:25 |
IA-64 |
Link.exe |
9.0.30729.6147 |
1,055,560 |
25-Feb-2011 |
01:25 |
x64 |
Link.exe |
9.0.30729.6147 |
2,135,368 |
25-Feb-2011 |
01:25 |
IA-64 |
Link.exe |
9.0.30729.6147 |
800,584 |
25-Feb-2011 |
01:25 |
x86 |
Workaround
Om dit probleem te omzeilen, vroeg in de functie lokale variabelen te initialiseren zodat de compiler op de hoogte van de levensduur van de variabelen.
Status
Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.
Meer informatie
Voor meer informatie over terminologie voor software-updates klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base weer te geven:
824684 Beschrijving van de standaardterminologie die wordt gebruikt voor het beschrijven van Microsoft-software-updates