Hey all, usually I’m the one doing support and… well I guess this still is- I ran into a very vey particular crash and I wanted to document it here for both Aron and the community. Don’t remember seeing this come up in a thread at all.
So I had the following code:
Draw.ingame.Label2D(transform.position + Vector3.up * 2.9f, fsmState, Color.red);
fsmState is a string given from NodeCanvas of just the name of the current node, ez pz. This line, on my machine, was crashing. When I changed it to literally anything else,it was perfectly fine, as below.
Draw.ingame.Label2D(transform.position + Vector3.up * 2.9f, "Literally Anything Else that's NOT the state" , Color.red);
And this worked fine too:
Debug.Log(fsmState);
Also also, I think this crash was only happening if I tried to play online using Unity Relay. My unit spawns pretty soon after Relay connects so maybe there was some complication there but not sure. At the end of the day I updated from Burst 1.8.24 to 1.8.25 and it’s working fine now. Here’s the patch notes for 1.8.25:
Fixed
- Fixed infinite loop and unbounded memory consumption when having a (possibly indirectly) recursive method with the
[MethodImpl(MethodImplOptions.AggressiveInlining)]attribute- Fixes an issue where
math.minandmath.maxwould do signed comparisons on unsigned integers when compiling withFloatMode.Fast.- Fixed a crash on some Android devices what would be triggered when “Enable ARMv9 Security Features” was enabled.
- Fixed a rare crash that could happen when the Burst package was unloaded.
- Fixed relocation error when stack protection was enabled on 32-bit Android.
Added
- Added LLVM 20 support
- Added guards to UWP ARM32 to be available only for versions lower than 6.3 PLAT-15016
FloatMode.Deterministicis now supported by Burst. Please refer to the documentation for details.
I bolded the text that I think may be related. When I put the crashing code into a try catch and printed the Exception… it didn’t work. It wouldn’t Debug.Log() the expection. But then the very next line of the code was the exception:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
This Exception was thrown from a job compiled with Burst, which has limited exception support.
0x00007ffe8ee4b16b (Unity) burst_abort
0x00007ffe7267d71e (78cecc78cab00f5a9f1c37676a3e2e8) burst_Abort_Trampoline
0x00007ffe7267c3ad (78cecc78cab00f5a9f1c37676a3e2e8) Unity.Jobs.IJobExtensions.JobStruct`1<Drawing.StreamSplitter>.Execute(ref Drawing.StreamSplitter data, System.IntPtr additionalPtr, System.IntPtr bufferRangePatchData, ref Unity.Jobs.LowLevel.Unsafe.JobRanges ranges, int jobIndex) -> void_1a17c9416545ae7079718413b8a5101d from UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null (at D:/Projects/Games/Project Reset/Library/PackageCache/com.unity.burst@f7a407abf4d5/.Runtime/unknown/unknown:0)
0x00007ffe7267b28d (78cecc78cab00f5a9f1c37676a3e2e8) d8d380b8cb045da83af9cdccefc96027
0x00007ffe8ee47916 (Unity) ExecuteJob
0x00007ffe8ee489ad (Unity) ForwardJobToManaged
0x00007ffe8ee44071 (Unity) ujob_execute_job
0x00007ffe8ee4357b (Unity) lane_guts
0x00007ffe8ee46c79 (Unity) worker_thread_routine
0x00007ffe8f028e3e (Unity) Thread::RunThreadWrapper
0x00007fffad7ae8d7 (KERNEL32) BaseThreadInitThunk
0x00007fffae74c53c (ntdll) RtlUserThreadStart
1.8.24 was marked as the dependency pulled in by ALINE though so I was hesitant to update it. But I did and it seems to be going good. Happy weekend all!