--- old/src/hotspot/share/gc/shared/cardTableBarrierSet.cpp 2019-02-25 16:56:59.747142017 -0500 +++ new/src/hotspot/share/gc/shared/cardTableBarrierSet.cpp 2019-02-25 16:56:59.331120083 -0500 @@ -194,11 +194,13 @@ #endif } -void CardTableBarrierSet::on_thread_detach(JavaThread* thread) { +void CardTableBarrierSet::on_thread_detach(Thread* thread) { // The deferred store barriers must all have been flushed to the // card-table (or other remembered set structure) before GC starts // processing the card-table (or other remembered set). - flush_deferred_card_mark_barrier(thread); + if (thread->is_Java_thread()) { // Only relevant for Java threads. + flush_deferred_card_mark_barrier((JavaThread*)thread); + } } bool CardTableBarrierSet::card_mark_must_follow_store() const {