Search Unity

Bug Burst.Compiler.IL.CompilerException: Error while verifying module: Operand is null

Discussion in 'Burst' started by DreamingImLatios, Mar 17, 2022.

  1. DreamingImLatios

    DreamingImLatios

    Joined:
    Jun 3, 2017
    Posts:
    4,270
    Just updated LSSS to the latest DOTS moving from 2020.1.9f1 to 2020.3.30f1.

    My custom physics code seems to have tripped up Burst again. This time, it only triggers when safety checks are enabled.

    Link to the project (the last two commits are the migration process, so HEAD and HEAD~2 are the versions to compare): https://github.com/Dreaming381/lsss-wip/tree/ae879dabdc0b0fb42934db3a211b91aa8036b62f

    Full error:
    Code (CSharp):
    1. Burst internal compiler error: Burst.Compiler.IL.CompilerException: Error while verifying module: Operand is null
    2.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_0024.structret, i32 %13), !dbg !814
    3. Operand is null
    4.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %17), !dbg !5141
    5. Operand is null
    6.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %37), !dbg !5143
    7. Operand is null
    8.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %17), !dbg !5837
    9. Operand is null
    10.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %37), !dbg !5839
    11. Operand is null
    12.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %17), !dbg !6698
    13. Operand is null
    14.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %37), !dbg !6700
    15. Operand is null
    16.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %17), !dbg !7118
    17. Operand is null
    18.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %37), !dbg !7120
    19. Operand is null
    20.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_0024.structret, i32 %13), !dbg !8240
    21. Operand is null
    22.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_0024.structret, i32 %13), !dbg !8732
    23. Operand is null
    24.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %17), !dbg !8841
    25. Operand is null
    26.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %37), !dbg !8843
    27. Operand is null
    28.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_0024.structret, i32 %13), !dbg !8888
    29. Operand is null
    30.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %17), !dbg !9254
    31. Operand is null
    32.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %37), !dbg !9256
    33. Operand is null
    34.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_0024.structret, i32 %13), !dbg !9365
    35. Operand is null
    36.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_0024.structret, i32 %13), !dbg !9409
    37. Operand is null
    38.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %17), !dbg !9563
    39. Operand is null
    40.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %37), !dbg !9565
    41. Operand is null
    42.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %17), !dbg !9627
    43. Operand is null
    44.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %37), !dbg !9629
    45. Operand is null
    46.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_0024.structret, i32 %13), !dbg !9997
    47. Operand is null
    48.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_0024.structret, i32 %13), !dbg !10065
    49. Operand is null
    50.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %17), !dbg !11051
    51. Operand is null
    52.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %37), !dbg !11053
    53. Operand is null
    54.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_0024.structret, i32 %13), !dbg !11131
    55. Operand is null
    56.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %17), !dbg !11246
    57. Operand is null
    58.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_002c.structret, i32 %37), !dbg !11248
    59. Operand is null
    60.   call x86_vectorcallcc void @"Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>.get_Item(Unity.Collections.NativeArray`1<Latios.Psyshock.ColliderBody>* this, int index) -> Latios.Psyshock.ColliderBody_20a9cc183c0d7a6a08efa9ab541a2018"(<null operand!>, %Latios.Psyshock.ColliderBody* noalias nocapture nonnull sret(%Latios.Psyshock.ColliderBody) dereferenceable(104) %var.IL_0024.structret, i32 %13), !dbg !11341
    61.  
    62.   at Burst.Compiler.IL.NativeCompiler.Compile (Burst.Compiler.IL.CompilerStatistics stats) [0x001ad] in <82ff3fab825146d49212a1a38b312652>:0
    63.   at Burst.Compiler.IL.Server.LibraryCompiler.CompileImpl (Burst.Compiler.IL.Server.CompileLibraryJob request, Burst.Compiler.IL.Server.CompilerServerJobExecutionContext executionContext, Burst.Compiler.IL.Server.Caching.LibraryCacheEntry cacheEntry, System.Collections.Generic.List`1[T] disassembly, System.Collections.Generic.List`1[T] diagnosticMessages, System.Collections.Generic.List`1[T] logMessages, System.Collections.Generic.HashSet`1[T] opCodesUsed, Burst.Compiler.IL.CompilerStatistics timings, Burst.Compiler.IL.Server.InterpretDelegate& interpretDelegate) [0x00478] in <82ff3fab825146d49212a1a38b312652>:0
    64.   at Burst.Compiler.IL.Server.LibraryCompiler.Compile (Burst.Compiler.IL.Server.CompileLibraryJob request, Burst.Compiler.IL.Server.CompilerServerJobExecutionContext executionContext) [0x002aa] in <82ff3fab825146d49212a1a38b312652>:0
    65.  
    66. While compiling job:
    67. Unity.Jobs.IJobForExtensions+ForJobStruct`1[[Latios.Psyshock.FindPairsConfig`1+FindPairsInternal+LayerSelfPart2_WithSafety[[Lsss.ShipVsExplosionDamageSystem+DamageHitShipsProcessor, Lsss, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], Latios.Psyshock, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Latios.Psyshock.FindPairsConfig`1+FindPairsInternal+LayerSelfPart2_WithSafety[[Lsss.ShipVsExplosionDamageSystem+DamageHitShipsProcessor, Lsss, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]&, Latios.Psyshock, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
    68. Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[[Latios.Psyshock.FindPairsConfig`1+FindPairsInternal+LayerLayerPart2_WithSafety[[Lsss.AiShipRadarScanSystem+ScanEnemiesProcessor, Lsss, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], Latios.Psyshock, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Latios.Psyshock.FindPairsConfig`1+FindPairsInternal+LayerLayerPart2_WithSafety[[Lsss.AiShipRadarScanSystem+ScanEnemiesProcessor, Lsss, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]&, Latios.Psyshock, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, U<message truncated>
    Happens in both 1.6.4 and 1.7.0.

    Let me know if you need more info or if there is anything I should try!
     
    elliotc-unity likes this.
  2. DreamingImLatios

    DreamingImLatios

    Joined:
    Jun 3, 2017
    Posts:
    4,270
  3. sheredom

    sheredom

    Unity Technologies

    Joined:
    Jul 15, 2019
    Posts:
    300
    Thanks for digging! I got to pulling your project and got some editor errors with conflicts on cecil I think, then had to context switch. I'll try repro again soon though (maybe I need to remove the custom cecil in your manifest, not sure!)
     
  4. DreamingImLatios

    DreamingImLatios

    Joined:
    Jun 3, 2017
    Posts:
    4,270
    Thanks for attempting to look at it. Any custom cecil is leftover from a long time ago and should be removed. I thought I removed it, but now I am wondering if Unity still has a hidden reference somewhere.