We are seeing this pattern frequently on the end of our servers callstacks (We are working on a multiplayer FPS):
0x00007FF86545A470 (mono) mono_unity_gc_is_disabled
0x00007FF86545CC42 (mono) mono_unity_gc_is_disabled
0x00007FF865457DF8 (mono) mono_unity_gc_is_disabled
0x00007FF8654586C9 (mono) mono_unity_gc_is_disabled
0x00007FF865458844 (mono) mono_unity_gc_is_disabled
0x00007FF865457152 (mono) mono_unity_gc_is_disabled
0x00007FF86545746D (mono) mono_unity_gc_is_disabled
0x00007FF86545762B (mono) mono_unity_gc_is_disabled
0x00007FF86537AA0C (mono) mono_array_new_specific
----------
We are not managing the garbage collector ourselves, we are ~2GB below our server instance's RAM cap, and we are using an x86_64 executable.
This pattern is appearing during a variety of situations, from server initialization, to player connection, to writing text to a TMP object. The only thing these situations have in common is that we are allocating an array.
Why are we seeing this mono_unity_gc frame on the call stack when we aren't disabling the garbage collector? Is there something else disabling the garbage collector auto-magically that we should keep an eye out for? Why does the call stack frame repeat, and why is it repeating at different addresses? Is there some large recursive garbage collection function that we are getting stuck in? Or is there something funky with the code that writes or deduces the call stack information?
This pattern is appearing during a variety of situations, from server initialization, to player connection, to writing text to a TMP object. The only thing these situations have in common is that we are allocating an array.
Why are we seeing this mono_unity_gc frame on the call stack when we aren't disabling the garbage collector? Is there something else disabling the garbage collector auto-magically that we should keep an eye out for? Why does the call stack frame repeat, and why is it repeating at different addresses? Is there some large recursive garbage collection function that we are getting stuck in? Or is there something funky with the code that writes or deduces the call stack information?