Mercurial > hg > truffle
comparison src/share/vm/runtime/thread.hpp @ 441:da9cb4e97a5f
6770608: G1: Mutator thread can flush barrier and satb queues during safepoint
6660573: G1: BigApps Failure : guarantee(satb_mq_set.completed_buffers_num() == 0,"invariant")
Summary: When exiting a mutator thread is removed from the thread list before it has a chance to flush its SATB and barrier queues. If GC happens at this moment the objects that are refererred from these queues can be moved, which will case a crash. The fix is simply to flush the buffers before removing a thread from the list.
Reviewed-by: jcoomes, tonyp
author | iveresov |
---|---|
date | Fri, 14 Nov 2008 14:23:05 -0800 |
parents | 37f87013dfd8 |
children | ad8c8ca4ab0f |
comparison
equal
deleted
inserted
replaced
440:96c6da8f095c | 441:da9cb4e97a5f |
---|---|
791 static SATBMarkQueueSet _satb_mark_queue_set; | 791 static SATBMarkQueueSet _satb_mark_queue_set; |
792 | 792 |
793 DirtyCardQueue _dirty_card_queue; // Thread-local log for dirty cards. | 793 DirtyCardQueue _dirty_card_queue; // Thread-local log for dirty cards. |
794 // Set of all such queues. | 794 // Set of all such queues. |
795 static DirtyCardQueueSet _dirty_card_queue_set; | 795 static DirtyCardQueueSet _dirty_card_queue_set; |
796 | |
797 void flush_barrier_queues(); | |
796 #endif // !SERIALGC | 798 #endif // !SERIALGC |
797 | 799 |
798 friend class VMThread; | 800 friend class VMThread; |
799 friend class ThreadWaitTransition; | 801 friend class ThreadWaitTransition; |
800 friend class VM_Exit; | 802 friend class VM_Exit; |