-
Notifications
You must be signed in to change notification settings - Fork 5.4k
Closed
Labels
Milestone
Description
we have hit the sgen proble when gc collection, the whole call stack show below :
> mono-2.0-sgen.dll!copy_object_no_checks(_MonoObject * obj, _SgenGrayQueue * queue) Line 69 C
[Inline Frame] mono-2.0-sgen.dll!major_copy_or_mark_object_with_evacuation(_MonoObject * * obj, _MonoObject *) Line 86 C
mono-2.0-sgen.dll!major_scan_object_with_evacuation(_MonoObject * full_object, unsigned __int64 desc, _SgenGrayQueue * queue) Line 64 C
[Inline Frame] mono-2.0-sgen.dll!SGEN_LOAD_VTABLE_UNCHECKED(_MonoObject *) Line 23 C
[Inline Frame] mono-2.0-sgen.dll!sgen_safe_object_get_size(_MonoObject *) Line 757 C
mono-2.0-sgen.dll!sgen_cardtable_scan_object(_MonoObject * obj, unsigned __int64 block_obj_size, unsigned char * cards, ScanCopyContext ctx) Line 594 C
mono-2.0-sgen.dll!scan_card_table_for_block(_MSBlockInfo * block, CardTableScanType scan_type, ScanCopyContext ctx) Line 2625 C
mono-2.0-sgen.dll!major_scan_card_table(CardTableScanType scan_type, ScanCopyContext ctx, int job_index, int job_split_count, int block_count) Line 2667 C
mono-2.0-sgen.dll!job_scan_major_mod_union_card_table(void * worker_data_untyped, _SgenThreadPoolJob * job) Line 1483 C
mono-2.0-sgen.dll!sgen_workers_enqueue_job(int generation, _SgenThreadPoolJob * job, int enqueue) Line 185 C
mono-2.0-sgen.dll!major_copy_or_mark_from_roots(_SgenGrayQueue * gc_thread_gray_queue, unsigned __int64 * old_next_pin_slot, CopyOrMarkFromRootsMode mode, SgenObjectOperations * object_ops_nopar, SgenObjectOperations * object_ops_par) Line 2107 C
mono-2.0-sgen.dll!major_finish_collection(_SgenGrayQueue * gc_thread_gray_queue, const char * reason, int is_overflow, unsigned __int64 old_next_pin_slot, int forced) Line 2212 C
[Inline Frame] mono-2.0-sgen.dll!major_finish_concurrent_collection(int) Line 2460 C
mono-2.0-sgen.dll!sgen_perform_collection_inner(unsigned __int64 requested_size, int generation_to_collect, const char * reason, int forced_serial, int stw) Line 2549 C
[Inline Frame] mono-2.0-sgen.dll!sgen_perform_collection(unsigned __int64) Line 2636 C
mono-2.0-sgen.dll!sgen_ensure_free_space(unsigned __int64 size, int generation) Line 2511 C
mono-2.0-sgen.dll!sgen_alloc_obj_nolock(MonoVTable * vtable, unsigned __int64 size) Line 241 C
mono-2.0-sgen.dll!mono_gc_alloc_vector(MonoVTable * vtable, unsigned __int64 size, unsigned __int64 max_length) Line 1317 C
the vt is nullptr
static MONO_NEVER_INLINE GCObject *
copy_object_no_checks (GCObject *obj, SgenGrayQueue *queue)
{
GCVTable vt = SGEN_LOAD_VTABLE_UNCHECKED (obj);
gboolean has_references = SGEN_VTABLE_HAS_REFERENCES (vt);
how can I figure out the reason about it, can you give some advice or tricks to find what's wrong with it.
Reactions are currently unavailable