Port x86 unwinder fix from .NET Framework (#19311)
authorJan Kotas <jkotas@microsoft.com>
Mon, 6 Aug 2018 22:43:30 +0000 (15:43 -0700)
committerGitHub <noreply@github.com>
Mon, 6 Aug 2018 22:43:30 +0000 (15:43 -0700)
We have not hit this case in CoreCLR yet, but there is a good chance that we will at some point.

src/vm/i386/gmsx86.cpp

index 64ac4a38ba25ef5dbdc3b14d53c2b5fc8076a4e5..53bd23fba24760e4ad2a1ff91e9ad268b73b7679 100644 (file)
@@ -126,7 +126,7 @@ static bool shouldEnterCall(PTR_BYTE ip) {
 
     int pushes = 0;
 
-    // we should start unbalenced pops within 48 instrs. If not, it is not a special epilog function
+    // we should start unbalanced pops within 48 instrs. If not, it is not a special epilog function
     // the only reason we need as many instructions as we have below is because  coreclr
     // gets instrumented for profiling, code coverage, BBT etc, and we want these things to
     // just work.
@@ -134,6 +134,7 @@ static bool shouldEnterCall(PTR_BYTE ip) {
         switch(*ip) {
             case 0xF2:              // repne
             case 0xF3:              // repe
+            case 0x90:              // nop
                 ip++;
                 break;