diff options
author | Fadi Hanna <fadim@microsoft.com> | 2017-12-01 01:10:45 +0300 |
---|---|---|
committer | Fadi Hanna <fadim@microsoft.com> | 2017-12-01 01:10:45 +0300 |
commit | 0cf9623634e48d28520f1df91d356ad5df8763c2 (patch) | |
tree | 6d6a627bddba55d6b82a127ae489521598631f85 /src/Native | |
parent | a0d449b381fd508331915dbcb1042345759218b5 (diff) |
Fix to a GC hole caused by hijacking 'finally' blocks.
The problem is that these finally blocks are called just like any managed call from the main body of the parent containing method, however there is no gcroots reporting at that callsite. The idea of not having gcroots reported at the callsite is because funclets should never really be hijacked in the first place.
The 'IsFunclet' detection logic on ProjectN is slightly different that on ProjectX: it checks the value of the funclet offset, which is not used by ProjectX. This fix stores a dummy value as a funclet offset (anything other than 0).
[tfs-changeset: 1682563]
Diffstat (limited to 'src/Native')
-rw-r--r-- | src/Native/Runtime/inc/gcinfo.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/Native/Runtime/inc/gcinfo.h b/src/Native/Runtime/inc/gcinfo.h index 405973aa4..8699fad3d 100644 --- a/src/Native/Runtime/inc/gcinfo.h +++ b/src/Native/Runtime/inc/gcinfo.h @@ -842,6 +842,11 @@ public: } #endif // _TARGET_AMD64_ + void SetFuncletOffset(UInt32 offset) + { + funcletOffset = offset; + } + // // GETTERS // |