Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
we are hitting this assert in gc_thread_function assert ((n_heaps <= heap_number) || !gc_t_join.joined()); during the init stage. this is because the main thread (that does the GC init) is calling change_heap_count which acts like h0's thread while h0's thread can be anywhere before waiting on ee_suspend_event. so we could be in this situation - 1) main thread calls GCHeap::Init and creates h0's GC thread 2) main thread calls gc_heap::change_heap_count and this will change n_heaps to 1, and after there's another join, when the main thread and all other heaps' GC threads have joined, it changes gc_t_join.joined_p to true 3) h0's thread runs and sees that n_heaps is 1, and gc_t_join.joined_p is true which triggers the assert. so this only happens during the init stage on h0's thread.
- Loading branch information