Conversation
…orting-for-filter-funclets
…orting-for-filter-funclets
I found the problem with filter funclets is that the untracked variables get reported both by the filter funclet and the enclosing method. While the compiler makes sure that the lifetimes of other variables get appropriately split and marked as pinned, this is not the case for untracked variables - here we simply need to suppress the reporting if we are indeed in a filter funclet. My fix simply figures out whether we are indeed in a filter, and if so, passes an appropriate flag to EnumerateLiveSlots. I suspect that UnixNativeCodeManager.cpp/.h will need a parallel fix, but lets first discuss whether my fix for Windows is in fact correct.
| ICodeManagerFlags flags = (ICodeManagerFlags)0; | ||
| if (pNativeMethodInfo->executionAborted) | ||
| flags = ICodeManagerFlags::ExecutionAborted; | ||
| if (IsFilter(pMethodInfo)) |
There was a problem hiding this comment.
Could you please make a matching fix in src\Native\Runtime\unix\UnixNativeCodeManager.cpp as well?
There was a problem hiding this comment.
Done, it seems the fix is exactly the same except for the mechanics of getting the unwind block flags.
| using System; | ||
|
|
||
| class Program | ||
| { |
There was a problem hiding this comment.
We tend to batch the different test cases that we found to be interesting together in "Simple" tests to make the smoke test runs short. Could you please add this to tests\src\Simple\Exceptions\Exceptions.cs instead?
|
Also, could you please sign .NET Foundation CLA at https://cla2.dotnetfoundation.org/ ? (It is necessary even if you are Microsoft employee because of .NET Foundation and Microsoft are different entities.) |
…orting-for-filter-funclets
|
@PeterSolMS, thanks for signing the contribution license agreement. We will now validate the agreement and then the pull request. |
I found the problem with filter funclets is that the untracked variables get reported both by the filter funclet and the enclosing method. While the compiler makes sure that the lifetimes of other variables get appropriately split and marked as pinned, this is not the case for untracked variables - here we simply need to suppress the reporting if we are indeed in a filter funclet. My fix simply figures out whether we are indeed in a filter, and if so, passes an appropriate flag to EnumerateLiveSlots. I did a parallel fix in UnixNativeCodeManager.cpp/.h.
|
Precise GC needs more fixes on Unix (#3310 has some). Could you please keep the conservative GC enabled for Unix - |
|
Unix builds are failing with |
|
Thanks Peter! |
No description provided.