summaryrefslogtreecommitdiff
path: root/src/gc
diff options
context:
space:
mode:
authorMaoni0 <maonis@microsoft.com>2016-06-08 12:22:46 -0700
committerMaoni0 <maonis@microsoft.com>2016-06-08 12:22:46 -0700
commitc09881cd371c143bad7c406f62c34bd4b4f6e635 (patch)
tree3e015c029f4670c936745f275246b94c3905e125 /src/gc
parent4ddb9f704404086024d106d9d0cb4098e942bf30 (diff)
downloadcoreclr-c09881cd371c143bad7c406f62c34bd4b4f6e635.tar.gz
coreclr-c09881cd371c143bad7c406f62c34bd4b4f6e635.tar.bz2
coreclr-c09881cd371c143bad7c406f62c34bd4b4f6e635.zip
need to account for server GC threads calling grow
Diffstat (limited to 'src/gc')
-rw-r--r--src/gc/gc.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/gc/gc.cpp b/src/gc/gc.cpp
index 1de3caf807..91d73f04ca 100644
--- a/src/gc/gc.cpp
+++ b/src/gc/gc.cpp
@@ -7219,7 +7219,9 @@ int gc_heap::grow_brick_card_tables (uint8_t* start,
// Suspending here allows copying dirty state from the old table into the new table, and not have to merge old
// table info lazily as done for card tables.
- BOOL is_runtime_suspended = IsSuspendEEThread();
+ // Either this thread was the thread that did the suspension which means we are suspended; or this is called
+ // from a GC thread which means we are in a blocking GC and also suspended.
+ BOOL is_runtime_suspended = IsSuspendEEThread() || IsGCSpecialThread();
if (!is_runtime_suspended)
{
// Note on points where the runtime is suspended anywhere in this function. Upon an attempt to suspend the