-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Uh oh!
There was an error while loading. Please reload this page.
Conversation
…d_first_object when finding the start of objects for marking interior pointers.
…t in find_first_object when finding the start of objects for marking interior pointers." This reverts commit 9d53ff9.
- Insert allow_fgc() call in background_mark_simple - this fixes the cases where there are a ton of GC handles referencing simple objects not containing pointers. - Change PING_JIT_TIMEOUT constant from 10 milliseconds to 1 millisecond. This fixes the case where return address hijacking doesn't work quickly, because the hijacked thread doesn't return (e.g. because it's in a loop doing further calls). In this case we have to retry the hijack, and changing the timeout constant makes this happen more quickly.
the other fix that I mentioned that also affects suspension is in
however there is a subtle part of this fix which is if we do allow FGC we will need to get rid of this check in the else if statement:
because we'd hit the situation that's described in that big comment (essentially what it says is just that since now an FGC can happen it can allocate in free objects so we cannot skip). this change actually has no effect as FEATURE_USE_SOFTWARE_WRITE_WATCH_FOR_GC_HEAP is always defined. |
* Two simple fixes to suspension issues seen in GCPerfSim: - Insert allow_fgc() call in background_mark_simple - this fixes the cases where there are a ton of GC handles referencing simple objects not containing pointers. - Change PING_JIT_TIMEOUT constant from 10 milliseconds to 1 millisecond. This fixes the case where return address hijacking doesn't work quickly, because the hijacked thread doesn't return (e.g. because it's in a loop doing further calls). In this case we have to retry the hijack, and changing the timeout constant makes this happen more quickly. Commit migrated from dotnet/coreclr@fab7aa2
* Two simple fixes to suspension issues seen in GCPerfSim: - Insert allow_fgc() call in background_mark_simple - this fixes the cases where there are a ton of GC handles referencing simple objects not containing pointers. - Change PING_JIT_TIMEOUT constant from 10 milliseconds to 1 millisecond. This fixes the case where return address hijacking doesn't work quickly, because the hijacked thread doesn't return (e.g. because it's in a loop doing further calls). In this case we have to retry the hijack, and changing the timeout constant makes this happen more quickly. Commit migrated from dotnet/coreclr@fab7aa2
* Two simple fixes to suspension issues seen in GCPerfSim: - Insert allow_fgc() call in background_mark_simple - this fixes the cases where there are a ton of GC handles referencing simple objects not containing pointers. - Change PING_JIT_TIMEOUT constant from 10 milliseconds to 1 millisecond. This fixes the case where return address hijacking doesn't work quickly, because the hijacked thread doesn't return (e.g. because it's in a loop doing further calls). In this case we have to retry the hijack, and changing the timeout constant makes this happen more quickly. Commit migrated from dotnet/coreclr@fab7aa2
Two simple fixes to suspension issues seen in GCPerfSim:
Insert allow_fgc() call in background_mark_simple - this fixes the cases where there are a ton of GC handles referencing simple objects not containing pointers.
Change PING_JIT_TIMEOUT constant from 10 milliseconds to 1 millisecond. This fixes the case where return address hijacking doesn't work quickly, because the hijacked thread doesn't return (e.g. because it's in a loop doing further calls). In this case we have to retry the hijack, and changing the timeout constant makes this happen more quickly.