Problembeschreibung

Auf einem Computer, auf dem Microsoft.NET Framework 3.5 Servicepack 1 (SP1) ausgeführt wird, kann der Just-in-Time (JIT) Compiler und Native Image Generator (Ngen.exe), mit dem die Datei Mscorjit.dll inkorrekten Code generieren. Eine 32-Bit-verwaltete C++-Anwendung kann daher zu falschen Ergebnissen führen.

Dieses Problem tritt auf, wenn Folgendes zutrifft:

  • Die Struktur oder Klasse im Quellcode verfügt über weniger als vier skalare Sorten und keine verwalteten Objektverweisen.

  • Verwenden Sie die Anweisung cpblk oder die Anweisung initblk.

Hinweis Dieses Problem tritt nicht in 64-Bit-Anwendung.

Ursache

Dieses Problem tritt aufgrund einer Regression in.NET Framework 3.5 SP1.

Problemlösung

Hotfix-Informationen

Ein unterstützter Hotfix ist von Microsoft erhältlich. Dieser Hotfix soll nur der Behebung des Problems dienen, das in diesem Artikel beschrieben wird. Verwenden Sie diesen Hotfix nur auf Systemen, bei denen dieses spezielle Problem auftritt. Dieser Hotfix sollte weiteren Tests unterzogen werden. 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.

Um diesen Hotfix aus der MSDN Code Gallery herunterzuladen, besuchen Sie folgende Microsoft-Website:

http://code.msdn.microsoft.com/KB957542
Hinweis Der MSDN Code Gallery zeigt die Sprachen an, für die der Hotfix verfügbar ist. Die aufgeführten Sprache nicht angezeigt wird, ist der Code Gallery-Ressourcenseite nicht für diese Sprache steht.


Hinweis Falls weitere Probleme auftreten oder andere Schritte zur Problembehandlung erforderlich sind, müssen Sie möglicherweise eine separate Serviceanfrage erstellen. Die normalen Supportkosten gelten für zusätzliche Supportfragen und Probleme, die nicht diesem speziellen Hotfix zugeordnet werden können. Für eine vollständige Liste der Telefonnummern des Microsoft Customer Service and Support, oder um eine separate Serviceanfrage zu erstellen, gehen Sie auf folgende Microsoft-Website:

http://support.microsoft.com/contactus/?ws=supportHinweis Wenn Sie 32-Bit-Anwendung auf einem 64-Bit-Plattform ausgeführt, wenden Sie den Hotfix für die 64-Bit-Version zur Behebung dieses Problems.

Voraussetzungen

Sie müssen.NET Framework 3.5 SP1 installiert, um diesen Hotfix anwenden.

Neustartanforderung

Möglicherweise den Computer neu starten, wenn alle aktualisierten Dateien verwendet werden.

Informationen zu ersetzten Hotfixes

Dieser Hotfix ersetzt keine anderen Hotfixes.

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.

Windows 2000, Windows XP und Windows Server 2003 X86 Versionen

Dateiname

Dateiversion

Dateigröße

Datum

Zeit

Mscordacwks.dll

2.0.50727.3068

992,264

16-Sep-2008

13:13

Mscorjit.dll

2.0.50727.3068

367,104

16-Sep-2008

13:13

Mscorlib.dll

2.0.50727.3068

4,546,560

16-Sep-2008

13:13

Mscorwks.dll

2.0.50727.3068

5,815,808

16-Sep-2008

13:13

Windows 2000, Windows XP und Windows Server 2003 X64 Versionen

Dateiname

Dateiversion

Dateigröße

Datum

Zeit

Plattform

Mscordacwks.dll

2.0.50727.3068

992,264

16-Sep-2008

13:13

x86

Mscorjit.dll

2.0.50727.3068

367,104

16-Sep-2008

13:13

x86

Mscorlib.dll

2.0.50727.3068

4,546,560

16-Sep-2008

13:13

x86

Mscorwks.dll

2.0.50727.3068

5,815,808

16-Sep-2008

13:13

x86

Mscordacwks.dll

2.0.50727.3068

1,767,944

16-Sep-2008

10:33

x64

Mscorjit.dll

2.0.50727.3068

1,580,032

16-Sep-2008

10:33

x64

Mscorlib.dll

2.0.50727.3068

4,562,944

16-Sep-2008

10:33

x64

Mscorwks.dll

2.0.50727.3068

10,079,744

16-Sep-2008

10:33

x64

Windows 2000, Windows XP und Windows Server 2003 IA-64-Versionen

Dateiname

Dateiversion

Dateigröße

Datum

Zeit

Plattform

Mscordacwks.dll

2.0.50727.3068

992,264

16-Sep-2008

13:13

x86

Mscorjit.dll

2.0.50727.3068

367,104

16-Sep-2008

13:13

x86

Mscorlib.dll

2.0.50727.3068

4,546,560

16-Sep-2008

13:13

x86

Mscorwks.dll

2.0.50727.3068

5,815,808

16-Sep-2008

13:13

x86

Mscordacwks.dll

2.0.50727.3068

3,087,880

16-Sep-2008

10:44

IA-64

Mscorjit.dll

2.0.50727.3068

2,560,512

16-Sep-2008

10:44

IA-64

Mscorlib.dll

2.0.50727.3068

4,005,888

16-Sep-2008

10:44

IA-64

Mscorwks.dll

2.0.50727.3068

20,153,856

16-Sep-2008

10:44

IA-64

Windows Vista Service Pack 1 (SP1) und Windows Server 2008 X86 Versionen

Dateiname

Dateiversion

Dateigröße

Datum

Zeit

Plattform

Mscorlib.resources.dll

2.0.50727.3053

352,256

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

303,104

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

299,008

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

315,392

27-Jul-2008

17:58

x86

Mscorlib.resources.dll

2.0.50727.3053

425.984

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

307.200

27-Jul-2008

17:58

x86

Mscorlib.resources.dll

2.0.50727.3053

299,008

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

311,296

27-Jul-2008

17:58

x86

Mscorlib.resources.dll

2.0.50727.3053

331,776

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

315,392

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

307.200

27-Jul-2008

17:55

x86

Mscorlib.resources.dll

2.0.50727.3053

348,160

27-Jul-2008

17:58

x86

Mscorlib.resources.dll

2.0.50727.3053

319,488

27-Jul-2008

17:55

x86

Mscorlib.resources.dll

2.0.50727.3053

290,816

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

303,104

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

311,296

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

303,104

27-Jul-2008

17:55

x86

Mscorlib.resources.dll

2.0.50727.3053

307.200

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.1434

397,312

11-Jan-2008

22:59

x86

Mscorlib.resources.dll

2.0.50727.3053

299,008

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

299,008

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

278,528

27-Jul-2008

17:55

x86

Mscorlib.resources.dll

2.0.50727.3053

278,528

27-Jul-2008

17:55

x86

Big5.nlp

PC

66,728

18-Dec-2007

21:03

PC

Bopomofo.nlp

PC

82,172

18-Dec-2007

21:03

PC

Ksc.nlp

PC

116,756

18-Dec-2007

21:04

PC

Mscorlib.dll

2.0.50727.3068

4,546,560

01-Oct-2008

22:27

x86

Normidna.nlp

PC

59,342

18-Dec-2007

21:05

PC

Normnfc.nlp

PC

45,794

18-Dec-2007

21:05

PC

Normnfd.nlp

PC

39,284

18-Dec-2007

21:05

PC

Normnfkc.nlp

PC

66,384

18-Dec-2007

21:05

PC

Normnfkd.nlp

PC

60,294

18-Dec-2007

21:05

PC

Prc.nlp

PC

83,748

18-Dec-2007

21:05

PC

Prcp.nlp

PC

83,748

18-Dec-2007

21:05

PC

Sortkey.nlp

PC

262,148

18-Dec-2007

21:05

PC

Sorttbls.nlp

PC

20,320

18-Dec-2007

21:05

PC

Xjis.nlp

PC

28,288

18-Dec-2007

21:05

PC

Mscordacwks.dll

2.0.50727.3068

992,264

01-Oct-2008

22:27

x86

Mscorjit.dll

2.0.50727.3068

367,104

24-Sep-2008

22:21

x86

Mscorwks.dll

2.0.50727.3068

5,815,808

01-Oct-2008

22:27

x86

Windows Vista SP1 und Windows Server 2008 X64 Versionen

Dateiname

Dateiversion

Dateigröße

Datum

Zeit

Plattform

Big5.nlp

PC

66,728

18-Dec-2007

21:01

PC

Bopomofo.nlp

PC

82,172

18-Dec-2007

21:01

PC

Ksc.nlp

PC

116,756

18-Dec-2007

21:02

PC

Mscorlib.dll

2.0.50727.3068

4,562,944

01-Oct-2008

22:25

x64

Normidna.nlp

PC

59,342

18-Dec-2007

21:03

PC

Normnfc.nlp

PC

45,794

18-Dec-2007

21:03

PC

Normnfd.nlp

PC

39,284

18-Dec-2007

21:03

PC

Normnfkc.nlp

PC

66,384

18-Dec-2007

21:03

PC

Normnfkd.nlp

PC

60,294

18-Dec-2007

21:03

PC

Prc.nlp

PC

83,748

18-Dec-2007

21:03

PC

Prcp.nlp

PC

83,748

18-Dec-2007

21:03

PC

Sortkey.nlp

PC

262,148

18-Dec-2007

21:03

PC

Sorttbls.nlp

PC

20,320

18-Dec-2007

21:03

PC

Xjis.nlp

PC

28,288

18-Dec-2007

21:03

PC

Mscordacwks.dll

2.0.50727.3068

1,767,944

01-Oct-2008

22:25

x64

Mscorjit.dll

2.0.50727.3068

1,580,032

24-Sep-2008

23:06

x64

Mscorwks.dll

2.0.50727.3068

10,079,744

01-Oct-2008

22:25

x64

Mscorlib.resources.dll

2.0.50727.3053

352,256

15-Sep-2008

22:26

x86

Mscorlib.resources.dll

2.0.50727.3053

303,104

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

299,008

15-Sep-2008

22:26

x86

Mscorlib.resources.dll

2.0.50727.3053

315,392

27-Jul-2008

18:02

x86

Mscorlib.resources.dll

2.0.50727.3053

425.984

15-Sep-2008

22:26

x86

Mscorlib.resources.dll

2.0.50727.3053

307.200

27-Jul-2008

18:02

x86

Mscorlib.resources.dll

2.0.50727.3053

299,008

15-Sep-2008

22:26

x86

Mscorlib.resources.dll

2.0.50727.3053

311,296

27-Jul-2008

18:02

x86

Mscorlib.resources.dll

2.0.50727.3053

331,776

15-Sep-2008

22:26

x86

Mscorlib.resources.dll

2.0.50727.3053

315,392

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

307.200

27-Jul-2008

17:56

x86

Mscorlib.resources.dll

2.0.50727.3053

348,160

27-Jul-2008

18:02

x86

Mscorlib.resources.dll

2.0.50727.3053

319,488

27-Jul-2008

17:56

x86

Mscorlib.resources.dll

2.0.50727.3053

290,816

15-Sep-2008

22:26

x86

Mscorlib.resources.dll

2.0.50727.3053

303,104

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

311,296

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

303,104

27-Jul-2008

17:56

x86

Mscorlib.resources.dll

2.0.50727.3053

307.200

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.1434

397,312

11-Jan-2008

22:59

x86

Mscorlib.resources.dll

2.0.50727.3053

299,008

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

299,008

15-Sep-2008

22:25

x86

Mscorlib.resources.dll

2.0.50727.3053

278,528

27-Jul-2008

17:56

x86

Mscorlib.resources.dll

2.0.50727.3053

278,528

27-Jul-2008

17:56

x86

Big5.nlp

PC

66,728

18-Dec-2007

21:03

PC

Bopomofo.nlp

PC

82,172

18-Dec-2007

21:03

PC

Ksc.nlp

PC

116,756

18-Dec-2007

21:04

PC

Mscorlib.dll

2.0.50727.3068

4,546,560

01-Oct-2008

22:27

x86

Normidna.nlp

PC

59,342

18-Dec-2007

21:05

PC

Normnfc.nlp

PC

45,794

18-Dec-2007

21:05

PC

Normnfd.nlp

PC

39,284

18-Dec-2007

21:05

PC

Normnfkc.nlp

PC

66,384

18-Dec-2007

21:05

PC

Normnfkd.nlp

PC

60,294

18-Dec-2007

21:05

PC

Prc.nlp

PC

83,748

18-Dec-2007

21:05

PC

Prcp.nlp

PC

83,748

18-Dec-2007

21:05

PC

Sortkey.nlp

PC

262,148

18-Dec-2007

21:05

PC

Sorttbls.nlp

PC

20,320

18-Dec-2007

21:05

PC

Xjis.nlp

PC

28,288

18-Dec-2007

21:05

PC

Mscordacwks.dll

2.0.50727.3068

992,264

01-Oct-2008

22:27

x86

Mscorjit.dll

2.0.50727.3068

367,104

24-Sep-2008

22:21

x86

Mscorwks.dll

2.0.50727.3068

5,815,808

01-Oct-2008

22:27

x86

Windows Vista SP1 und IA-64-Versionen von Windows Server 2008

Dateiname

Dateiversion

Dateigröße

Datum

Zeit

Plattform

Big5.nlp

PC

66,728

18-Dec-2007

21:06

PC

Bopomofo.nlp

PC

82,172

18-Dec-2007

21:06

PC

Ksc.nlp

PC

116,756

18-Dec-2007

21:06

PC

Mscorlib.dll

2.0.50727.3068

4,005,888

01-Oct-2008

22:26

IA-64

Normidna.nlp

PC

59,342

18-Dec-2007

21:08

PC

Normnfc.nlp

PC

45,794

18-Dec-2007

21:08

PC

Normnfd.nlp

PC

39,284

18-Dec-2007

21:08

PC

Normnfkc.nlp

PC

66,384

18-Dec-2007

21:08

PC

Normnfkd.nlp

PC

60,294

18-Dec-2007

21:08

PC

Prc.nlp

PC

83,748

18-Dec-2007

21:08

PC

Prcp.nlp

PC

83,748

18-Dec-2007

21:08

PC

Sortkey.nlp

PC

262,148

18-Dec-2007

21:08

PC

Sorttbls.nlp

PC

20,320

18-Dec-2007

21:08

PC

Xjis.nlp

PC

28,288

18-Dec-2007

21:08

PC

Mscordacwks.dll

2.0.50727.3068

3,087,880

01-Oct-2008

22:26

IA-64

Mscorjit.dll

2.0.50727.3068

2,560,512

24-Sep-2008

23:14

IA-64

Mscorwks.dll

2.0.50727.3068

20,153,856

01-Oct-2008

22:26

IA-64

Mscorlib.resources.dll

2.0.50727.3053

315,392

27-Jul-2008

17:58

x86

Mscorlib.resources.dll

2.0.50727.3053

311,296

27-Jul-2008

17:58

x86

Mscorlib.resources.dll

2.0.50727.3053

348,160

27-Jul-2008

17:58

x86

Mscorlib.resources.dll

2.0.50727.3053

319,488

27-Jul-2008

17:58

x86

Mscorlib.resources.dll

2.0.50727.3053

278,528

27-Jul-2008

17:58

x86

Mscorlib.resources.dll

2.0.50727.3053

278,528

27-Jul-2008

17:59

x86

Big5.nlp

PC

66,728

18-Dec-2007

21:03

PC

Bopomofo.nlp

PC

82,172

18-Dec-2007

21:03

PC

Ksc.nlp

PC

116,756

18-Dec-2007

21:04

PC

Mscorlib.dll

2.0.50727.3068

4,546,560

01-Oct-2008

22:27

x86

Normidna.nlp

PC

59,342

18-Dec-2007

21:05

PC

Normnfc.nlp

PC

45,794

18-Dec-2007

21:05

PC

Normnfd.nlp

PC

39,284

18-Dec-2007

21:05

PC

Normnfkc.nlp

PC

66,384

18-Dec-2007

21:05

PC

Normnfkd.nlp

PC

60,294

18-Dec-2007

21:05

PC

Prc.nlp

PC

83,748

18-Dec-2007

21:05

PC

Prcp.nlp

PC

83,748

18-Dec-2007

21:05

PC

Sortkey.nlp

PC

262,148

18-Dec-2007

21:05

PC

Sorttbls.nlp

PC

20,320

18-Dec-2007

21:05

PC

Xjis.nlp

PC

28,288

18-Dec-2007

21:05

PC

Mscordacwks.dll

2.0.50727.3068

992,264

01-Oct-2008

22:27

x86

Mscorjit.dll

2.0.50727.3068

367,104

24-Sep-2008

22:21

x86

Mscorwks.dll

2.0.50727.3068

5,815,808

01-Oct-2008

22:27

x86

PROBLEMUMGEHUNG

Um dieses Problem zu umgehen, verwenden Sie eine der folgenden Methoden.

Methode 1

Wenn der Anwendungscode den Beispielcode im Abschnitt "Weitere Informationen ähnelt" finden Sie die folgende Codezeile.

#define GETVECTOR3D(vec3d) (*reinterpret_cast<AcGeVector3d*>(&((vec3d).m_x))

Ändern Sie diese Codezeile wie folgt.

#define GETVECTOR3D(vec3d) (*reinterpret_cast<AcGeVector3d*>(&((vec3d)))

Methode 2

Bereitstellen einer INI-Datei. Hierzu erstellen Sie eine Datei mit dem folgenden Code.

[.NET Framework Debugging Control]AllowOptimize=0

INI-Datei problematisch Moduls identisch, nicht aber die Erweiterung DLL anstelle der INI-Erweiterung. Beispielsweise den Beispielcode im Abschnitt "Weitere Informationen" Dateinamen Sie die INI-Datei den Bug.ini. Legen Sie die Bug.ini-Datei im gleichen Verzeichnis wie die Datei Bug.dll.

Hinweis Der Nachteil dieser Methode ist die potenzielle Auswirkung auf die Leistung für Optimierungen. Wenn Sie Native Image Generator (Ngen.exe) verwenden, um das Modul vorkompilieren, gilt diese Methode nicht.

Methode 3

Zuweisen Sie selektiv die Option NoOptimization MethodImplOptions -Enumeration problematischen Methoden mithilfe der MethodImplAttribute -Klasse.

Hinweis Diese Methode deaktiviert Optimierungen des JIT-Compilers und Native Image Generator (Ngen.exe) auf pro-Methode. Wie viel die Leistung beeinträchtigt wird hängt, die Methode.

Status

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

Weitere Informationen

Schritte zum Reproduzieren des Problems

  1. Erstellen Sie eine C++-Anwendung, die auf.NET Framework 3.5 SP1.

  2. CPP-Datei zum Projekt hinzufügen und fügen Sie folgenden Code in der Datei Bug.cpp dieser den Dateinamen der Datei Bug.cpp.

    #using <mscorlib.dll>#include <stdlib.h>
    class AcGeVector3d
    {
    double x, y, z;
    public:
    __forceinline AcGeVector3d(const AcGeVector3d& src): x(src.x),y(src.y),z(src.z)
    {
    }
    __forceinline AcGeVector3d(double xx, double yy, double zz) : x(xx),y(yy),z(zz)
    {
    }
    __forceinline AcGeVector3d operator / (double val) const
    {
    return AcGeVector3d (x/val, y/val, z/val);
    }
    };
    #define GETVECTOR3D(vec3d) (*reinterpret_cast<AcGeVector3d*>(&((vec3d).m_x)))
    namespace Geometry
    {
    [System::Runtime::InteropServices::StructLayout(System::Runtime::InteropServices::LayoutKind::Sequential)]
    public value class Vector3d
    {
    internal:
    double m_x, m_y, m_z;
    Vector3d(const AcGeVector3d* obj)
    {
    GETVECTOR3D(*this) = *obj;
    }
    public:
    Vector3d(double x, double y, double z):m_x(x),m_y(y), m_z(z) {}
    Vector3d DivideBy(double value)
    {
    return Vector3d(&GETVECTOR3D(*this).operator /(value));
    }
    virtual System::String^ ToString() override
    {
    return System::String::Format("{0}, {1}, {2}", m_x, m_y, m_z);
    }
    };
    }

  3. Führen Sie zum Erstellen der Datei Bug.cpp den folgenden Befehl ein:

    CL/CLR/GL/O2 bug.cpp Link/dll /out:bug.dll

  4. Erstellen Sie ein neues Microsoft Visual C#-Projekt als das Clientprojekt verwendet werden.

  5. Dateinamen Sie die Datei den Test.cs, und fügen Sie folgenden Code in die Datei Test.cs.

    using Geometry;namespace Test
    {
    class Tester
    {
    static void Main()
    {
    Vector3d v = new Vector3d(200, 200, 0);
    v = v.DivideBy(150);
    System.Console.WriteLine("{0}", v);
    }
    }
    }

  6. Kompilieren Sie die Datei Test.cs führen Sie den folgenden Befehl ein:

    csc /r:bug.dll test.cs

  7. Führen Sie den folgenden Befehl, um die Einbettung des Manifests in die Datei Test.exe:

    MT.exe - Nologo-manifest bug.dll.manifest-outputresource:test.exe;1

  8. Führen Sie die Datei Test.exe.

Beachten Sie, dass das Ergebnis wie folgt:

1.33333333333333, 1.333333333333, 0Allerdings ist das erwartete Ergebnis wie folgt:

1.33333333333333, 0, 0

Referenzen

Um weitere Informationen zur Terminologie für Softwareupdates zu erhalten, klicken Sie auf die folgende Artikelnummer, um den Artikel der Microsoft Knowledge Base anzuzeigen:

824684 Erläuterung von der standardmäßigen Standardbegriffen bei Microsoft Softwareupdates

Benötigen Sie weitere Hilfe?

Ihre Office-Fähigkeiten erweitern
Schulungen erkunden
Neue Funktionen als Erster erhalten
Microsoft Insider beitreten

War diese Information hilfreich?

Wie zufrieden sind Sie mit der Sprachqualität?
Was hat Ihre Erfahrung beeinflusst?

Vielen Dank für Ihr Feedback!

×