Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We have updated the language to the Editor Terms based on feedback from our employees and community. Learn more.
    Dismiss Notice

IOS build CRASHES ON UNITYFRAMEWORK::EXECUTEJOB()

Discussion in 'Scripting' started by Czzzzech, Feb 29, 2020.

  1. Czzzzech

    Czzzzech

    Joined:
    Feb 3, 2020
    Posts:
    3
    Hi all. My project works perfectly on all platforms and MacOS Editor, but on iOS device crashes.

    I think its something about this bug:
    https://issuetracker.unity3d.com/is...s-dot-cpp-381-13-opt-when-running-as-a-client

    But i'm not sure. Any suggestion will be very helpful.

    Unity: 2019.3.1f1
    burst: 1.2.3
    transport: preview.0 - 0.2.3
    entities: 0.5.0-preview.17
    jobs: 0.2.3-preview.9
    iPad 6th generation
    iOS: 13.3.1

    XCode, Log from thread:
    Code (CSharp):
    1. thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
    2. frame #0: 0x0000000000000000
    3. frame #1: 0x000000010685bbdc UnityFramework`___lldb_unnamed_symbol72$$UnityFramework + 356
    4. frame #2: 0x000000010685ba28 UnityFramework`___lldb_unnamed_symbol71$$UnityFramework + 1940
    5. frame #3: 0x000000010685a618 UnityFramework`___lldb_unnamed_symbol70$$UnityFramework + 21916
    6. frame #4: 0x0000000105b07b74 UnityFramework`ExecuteJob(ManagedJobData*, void (*)(void*, void*, void*, void*, int), int, unsigned char*) + 224
    7. frame #5: 0x0000000105b06e2c UnityFramework`ForwardJobToManaged(ManagedJobData*) + 96
    8. frame #6: 0x0000000105af53a4 UnityFramework`JobQueue::Exec(JobInfo*, long long, int) + 88
    9. frame #7: 0x0000000105af6450 UnityFramework`JobQueue::WaitForJobGroupID(JobGroupID, JobQueue::JobQueueWorkStealFlags) + 452
    10. frame #8: 0x0000000105af29fc UnityFramework`CompleteFenceInternal(JobFence&, WorkStealFlags) + 36
    11. frame #9: 0x0000000105e82a30 UnityFramework`JobHandle_CUSTOM_ScheduleBatchedJobsAndComplete(JobFence&) + 108
    12. frame #10: 0x0000000109077f68 UnityFramework`JobHandle_Complete_m5EFD637001D6A9E0528E60C294FCA5354FD1E797 + 788
    13. frame #11: 0x00000001088e25fc UnityFramework`ComponentDependencyManager_CompleteReadAndWriteDependencyNoChecks_m50163DBF6DCDC809EDA9CCDA4302FD171714C0BC + 1792
    14. frame #12: 0x00000001088e1a04 UnityFramework`ComponentDependencyManager_CompleteDependenciesNoChecks_mCC276F942730B22FF2559CB81AB5A97185656F33 + 684
    15. frame #13: 0x00000001088e8d04 UnityFramework`ComponentSystemBase_CompleteDependencyInternal_mCA540A10188C58F09CA829F9B88ACEA2B031EBD7 + 452
    16. frame #14: 0x00000001088e8218 UnityFramework`ComponentSystem_BeforeOnUpdate_m7DA776C89B02A44B6E24B9094CDA4DA5CAD772D4 + 624
    17. frame #15: 0x00000001088ebe0c UnityFramework`ComponentSystem_Update_mAE72864D55CA50D9254DCB6D80778D42EA0EBBAD + 2624
    18. frame #16: 0x00000001088fd4e8 UnityFramework`ComponentSystemGroup_UpdateAllSystems_m85CAF07C55B79B97FA9CC91EAD8998E69588B4A2 + 1872
    19. frame #17: 0x00000001088fbaf8 UnityFramework`ComponentSystemGroup_OnUpdate_m26B237E703EF64AAAA6D539D14A80DA7B8BF2254 + 1032
    20. frame #18: 0x00000001088ebf38 UnityFramework`ComponentSystem_Update_mAE72864D55CA50D9254DCB6D80778D42EA0EBBAD + 2924
    21. frame #19: 0x000000010a703b20 UnityFramework`DummyDelegateWrapper_TriggerUpdate_mCD23D9DDE01C50C4AE3F1E73F1EFC7CB3F0E9C63 + 448
    22. frame #20: 0x0000000109118ca4 UnityFramework`UpdateFunction_Invoke_m6C0E9E5082FCEEF018602FD40A43E613360D410D + 492
    23. frame #21: 0x000000010525de7c UnityFramework`RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017(void (*)(), MethodInfo const*, void*, void**) + 20
    24. frame #22: 0x00000001067a680c UnityFramework`il2cpp::vm::Runtime::Invoke(MethodInfo const*, void*, void**, Il2CppException**) + 116
    25. frame #23: 0x0000000105df9a18 UnityFramework`scripting_method_invoke(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingArguments&, ScriptingExceptionPtr*, bool) + 116
    26. frame #24: 0x0000000105e07fa0 UnityFramework`ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) + 136
    27. frame #25: 0x0000000105b8421c UnityFramework`ExecutePlayerLoop(NativePlayerLoopSystem*) + 260
    28. frame #26: 0x0000000105b841d0 UnityFramework`ExecutePlayerLoop(NativePlayerLoopSystem*) + 184
    29. frame #27: 0x0000000105b84480 UnityFramework`PlayerLoop() + 380
    30. frame #28: 0x00000001062db17c UnityFramework`UnityPlayerLoopImpl(bool) + 256
    31. frame #29: 0x00000001051c1018 UnityFramework`UnityRepaint + 140
    32. frame #30: 0x00000001051c0ef4 UnityFramework`-[UnityAppController(Rendering) repaintDisplayLink] + 88
    33. frame #31: 0x0000000188eb1130 QuartzCore`CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 632
    34. frame #32: 0x00000001834b5930 IOKit`IODispatchCalloutFromCFMessage + 488
    35. frame #33: 0x00000001824c18ac CoreFoundation`__CFMachPortPerform + 172
    36. frame #34: 0x00000001824eb07c CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 56
    37. frame #35: 0x00000001824ea7a8 CoreFoundation`__CFRunLoopDoSource1 + 444
    38. frame #36: 0x00000001824e567c CoreFoundation`__CFRunLoopRun + 2168
    39. frame #37: 0x00000001824e4adc CoreFoundation`CFRunLoopRunSpecific + 464
    40. frame #38: 0x000000018c485328 GraphicsServices`GSEventRunModal + 104
    41. frame #39: 0x00000001865f263c UIKitCore`UIApplicationMain + 1936
    42. frame #40: 0x00000001051bf9b0 UnityFramework`-[UnityFramework runUIApplicationMainWithArgc:argv:] + 108
    43. * frame #41: 0x0000000104ce7e1c EtherWars`main(argc=<unavailable>, argv=<unavailable>) at main.mm:26:9 [opt]
    44. frame #42: 0x000000018236e360 libdyld.dylib`start + 4
     
    Last edited: Mar 2, 2020
  2. Czzzzech

    Czzzzech

    Joined:
    Feb 3, 2020
    Posts:
    3
    I have some updates. Problem was solved by temporary solution.
    The reason was in Unity.Transport package. My game starts the udp socket connection with server. There are some Unity.Jobs schedulling in NetworkDriver Class of transport package. I'm sure, that this is bug of preview Unity.Transport Package. I gave some info about this issue into unity issuetracker - https://issuetracker.unity3d.com/is...s-dot-cpp-381-13-opt-when-running-as-a-client
    Temporary Solution - use NetworkDriver.ScheduleUpdate() without using Unity.Jobs.
    Before:
    Code (CSharp):
    1. public JobHandle ScheduleUpdate(JobHandle dep = default(JobHandle))
    2.         {
    3.             long timeNow = Stopwatch.GetTimestamp() / TimeSpan.TicksPerMillisecond - m_updateTimeAdjustment;
    4.             if (m_NetworkParams.config.maxFrameTimeMS > 0 && (timeNow - m_updateTime) > m_NetworkParams.config.maxFrameTimeMS)
    5.             {
    6.                 m_updateTimeAdjustment += (timeNow - m_updateTime) - m_NetworkParams.config.maxFrameTimeMS;
    7.                 timeNow = m_updateTime + m_NetworkParams.config.maxFrameTimeMS;
    8.             }
    9.             m_updateTime = timeNow;
    10.             var job = new UpdateJob {driver = this};
    11.             JobHandle handle;
    12.             var clearJob = new ClearEventQueue
    13.             {
    14.                 dataStream = m_DataStream,
    15.                 eventQueue = m_EventQueue,
    16. #if ENABLE_UNITY_COLLECTIONS_CHECKS
    17.                 logger = m_Logger,
    18.                 stringDB = m_StringDB,
    19.                 connectionList = m_ConnectionList,
    20.                 internalState = m_InternalState
    21. #endif
    22.             };
    23.             handle = clearJob.Schedule(dep);
    24.             handle = job.Schedule(handle);
    25.             handle = m_NetworkInterface.ScheduleReceive(this, handle);
    26.             var logJob = new LogJob {logger = m_Logger};
    27.             handle = logJob.Schedule(handle);
    28.             return handle;
    29.         }
    After:
    Code (CSharp):
    1. public JobHandle ScheduleUpdate(JobHandle dep = default(JobHandle))
    2.          {
    3.              long timeNow = Stopwatch.GetTimestamp() / TimeSpan.TicksPerMillisecond - m_updateTimeAdjustment;
    4.              if (m_NetworkParams.config.maxFrameTimeMS > 0 && (timeNow - m_updateTime) > m_NetworkParams.config.maxFrameTimeMS)
    5.              {
    6.                  m_updateTimeAdjustment += (timeNow - m_updateTime) - m_NetworkParams.config.maxFrameTimeMS;
    7.                  timeNow = m_updateTime + m_NetworkParams.config.maxFrameTimeMS;
    8.              }
    9.              m_updateTime = timeNow;
    10.              JobHandle handle = dep;
    11.              m_DataStream.Clear();
    12.              m_EventQueue.Clear();
    13.              InternalUpdate();
    14.              handle = m_NetworkInterface.ScheduleReceive(this, handle);
    15.              /*
    16.              var job = new UpdateJob {driver = this};
    17.              JobHandle handle;
    18.              var clearJob = new ClearEventQueue
    19.              {
    20.                  dataStream = m_DataStream,
    21.                  eventQueue = m_EventQueue,
    22. #if ENABLE_UNITY_COLLECTIONS_CHECKS
    23.                  logger = m_Logger,
    24.                  stringDB = m_StringDB,
    25.                  connectionList = m_ConnectionList,
    26.                  internalState = m_InternalState
    27. #endif
    28.              };
    29.              handle = clearJob.Schedule(dep);
    30.              handle = job.Schedule(handle);
    31.              handle = m_NetworkInterface.ScheduleReceive(this, handle);
    32.              var logJob = new LogJob {logger = m_Logger};
    33.              handle = logJob.Schedule(handle);
    34.              */
    35.              return handle;
    36.          }
     
    Last edited: Mar 2, 2020