Sintomi
Considerare lo scenario descritto di seguito:
-
Si attiva l'opzione di ottimizzazione globale (/Og) attivando una delle opzioni seguenti:
-
/O1
-
/O2
-
/Ox
-
-
Per compilare un file di origine di Microsoft Visual C++, utilizzando Microsoft Visual Studio 2008 Service Pack 1 (SP1).
-
Il file di origine chiama la funzione setjmp , la funzione longjmp o entrambe le funzioni.
In questo scenario, il compilatore può utilizzare lo stesso offset dello stack per memorizzare le variabili locali diverse. Pertanto, un comportamento imprevisto può verificarsi quando si esegue l'applicazione generata.
Causa
Questo problema si verifica perché query optimizer non tiene conto per la funzione setjmp o longjmp . In questo modo l'utilità di ottimizzazione calcolare correttamente la durata delle variabili locali. Quando si modifica una variabile, un'altra variabile può essere modificata in modo imprevisto.
Risoluzione
Informazioni sull'hotfix
Un hotfix supportato è disponibile da Microsoft. Questo hotfix è tuttavia destinato esclusivamente alla risoluzione del problema descritto in questo articolo. Applicare questo hotfix solo ai sistemi in cui si verifica il problema descritto in questo articolo. Questo hotfix potrebbe essere sottoposto ad ulteriori test. Se il problema non causa gravi difficoltà, si consiglia di attendere il successivo aggiornamento software contenente tale hotfix. Per risolvere immediatamente questo problema, contattare il supporto tecnico clienti Microsoft per ottenere l'hotfix. Per un elenco completo dei numeri di telefono del servizio clienti Microsoft e supporto tecnico o per creare una richiesta di assistenza separata, visitare il seguente sito Web Microsoft:
http://support.microsoft.com/contactus/?ws=supportNota In casi particolari, le spese normalmente addebitate per le chiamate di supporto potrebbero essere annullate qualora un addetto al supporto Microsoft determina che uno specifico aggiornamento risolverà il problema. I costi di supporto normale verranno applicati per eventuali ulteriori domande e problemi che non dovessero rientrare nello specifico aggiornamento in questione. Per scaricare questo aggiornamento rapido dalla Microsoft Developer Network (MSDN) Code Gallery, visitare il seguente sito Web Microsoft:
http://code.msdn.microsoft.com/KB2498381Nota MSDN Code Gallery vengono visualizzate le lingue per cui è disponibile l'hotfix. Se non viene visualizzata la lingua elencata, è perché la pagina delle risorse di Code Gallery non è disponibile per tale lingua. In alternativa, è possibile scaricare questo aggiornamento rapido dal seguente sito Web Microsoft Connect:
https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=34826
Requisiti
Per applicare questo hotfix, è necessario disporre di Microsoft Visual Studio 2008 Service Pack 1 installato.
Informazioni sul riavvio
Non è necessario riavviare il computer dopo avere installato questo hotfix se è stato arrestato tutte le istanze di Visual Studio.
Informazioni sulla sostituzione degli hotfix
Questo hotfix non sostituisce alcun altro hotfix precedentemente rilasciato.
Informazioni sui file
La versione globale di questo hotfix installa file che hanno gli attributi elencati nella seguente tabella. Le date e gli orari per questi file sono elencati in formato UTC (Coordinated Universal Time). Le date e gli orari per questi file sul vostro computer locale sono espressi nel vostro orario locale e tengono anche conto dell'ora solare (DST). Inoltre, le date e le ore potrebbero cambiare con l'esecuzione di alcune operazioni sui file.
Nome file |
Versione file |
Dimensione del file |
Date |
Ora |
Piattaforma |
---|---|---|---|---|---|
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 |
Soluzione alternativa
Per risolvere questo problema, inizializzare le variabili locali all'inizio della funzione in modo che il compilatore può essere a conoscenza della durata delle variabili.
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".
Ulteriori informazioni
Per ulteriori informazioni sulla terminologia degli aggiornamenti software, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:
824684 Descrizione della terminologia standard utilizzata per descrivere gli aggiornamenti software Microsoft