You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
0 commit comments