Search Unity

ParticleSystem::StartModules crashes

Discussion in 'Android' started by Nikolay-Lezhnev, Dec 16, 2018.

  1. Nikolay-Lezhnev

    Nikolay-Lezhnev

    Joined:
    Nov 8, 2012
    Posts:
    6
    Hello,

    In one of our games (Android platform), we have Unity crashes in ParticleSystem. They happen only in two places:
    ParticleSystem::StartModules and ParticleSystemParticles::element_assign.

    Callstacks look like this:

    Code (CSharp):
    1. #0. Crashed: main
    2.        at libunity.007a4600(Unknown Source) $a.810 at ??:?
    3.        at libunity.00818d04(Unknown Source) ParticleSystem::StartModules(ParticleSystemUpdateData&, ParticleSystemEmissionState const&, bool, Vector3f const&, Matrix4x4f const&, ParticleSystemParticles&, unsigned int, math::float1 const&, float, unsigned int, float, unsigned int, unsigned int&, bool) at ??:?
    4.        at libunity.00818a94(Unknown Source) ParticleSystem::Emit(ParticleSystem*, SubEmitterEmitCommand const&) at ??:?
    5.        at libunity.008382c4(Unknown Source) RecordEmit(ParticleSystemEmissionState&, ParticleSystemSubEmitterData const&, ParticleSystemUpdateData&, ParticleSystemParticles const&, ParticleSystemSubType, int, unsigned int, float, float, float, float) at ??:?
    6.        at libunity.007ce718(Unknown Source) $a.1683 at ??:?
    7.        at libunity.0082359c(Unknown Source) ParticleSystem::UpdateModulesPostSimulationIncremental(ParticleSystemUpdateData&, ParticleSystemParticles&, unsigned int, math::float1 const&) at ??:?
    8.        at libunity.00823af8(Unknown Source) ParticleSystem::Update1Incremental(ParticleSystemUpdateData&, ParticleSystemParticles&, float, ParticleSystem::UpdateFlags) at ??:?
    9.        at libunity.00813fa4(Unknown Source) $a.166 at ??:?
    10.        at libunity.00813a2c(Unknown Source) ParticleSystem::UpdateFunction(ParticleSystemUpdateData*) at ??:?
    11.        at libunity.006b52d4(Unknown Source) JobQueue::Exec(JobInfo*, int, int) at ??:?
    12.        at libunity.006b522c(Unknown Source) JobQueue::Steal(JobGroup*, JobInfo*, int, int, bool) at ??:?
    13.        at libunity.006b5648(Unknown Source) JobQueue::ExecuteJobFromQueue() at ??:?
    14.        at libunity.006b5730(Unknown Source) JobQueue::ProcessJobs(void*) at ??:?
    15.        at libunity.006b4da0(Unknown Source) JobQueue::WorkLoop(void*) at ??:?
    16.        at libunity.008f3294(Unknown Source) Thread::RunThreadWrapper(void*) at ??:?
    17.        at libc.__pthread_start(void*)(__pthread_start:22)
    18.        at libc.__start_thread(__start_thread:32)
    or like this:
    Code (CSharp):
    1. #0. Crashed: main
    2.        at libunity.00819304(Unknown Source) ParticleSystemParticles::element_assign(unsigned int, unsigned int) at ??:?
    3.        at libunity.00818c38(Unknown Source) ParticleSystem::Emit(ParticleSystem*, SubEmitterEmitCommand const&) at ??:?
    4.        at libunity.008382c4(Unknown Source) RecordEmit(ParticleSystemEmissionState&, ParticleSystemSubEmitterData const&, ParticleSystemUpdateData&, ParticleSystemParticles const&, ParticleSystemSubType, int, unsigned int, float, float, float, float) at ??:?
    5.        at libunity.007ce718(Unknown Source) $a.1683 at ??:?
    6.        at libunity.0082359c(Unknown Source) ParticleSystem::UpdateModulesPostSimulationIncremental(ParticleSystemUpdateData&, ParticleSystemParticles&, unsigned int, math::float1 const&) at ??:?
    7.        at libunity.00823af8(Unknown Source) ParticleSystem::Update1Incremental(ParticleSystemUpdateData&, ParticleSystemParticles&, float, ParticleSystem::UpdateFlags) at ??:?
    8.        at libunity.00813fa4(Unknown Source) $a.166 at ??:?
    9.        at libunity.00813a2c(Unknown Source) ParticleSystem::UpdateFunction(ParticleSystemUpdateData*) at ??:?
    10.        at libunity.006b52d4(Unknown Source) JobQueue::Exec(JobInfo*, int, int) at ??:?
    11.        at libunity.006b522c(Unknown Source) JobQueue::Steal(JobGroup*, JobInfo*, int, int, bool) at ??:?
    12.        at libunity.006b5648(Unknown Source) JobQueue::ExecuteJobFromQueue() at ??:?
    13.        at libunity.006b5730(Unknown Source) JobQueue::ProcessJobs(void*) at ??:?
    14.        at libunity.006b4da0(Unknown Source) JobQueue::WorkLoop(void*) at ??:?
    15.        at libunity.008f3294(Unknown Source) Thread::RunThreadWrapper(void*) at ??:?
    16.        at libc.__pthread_start(void*)(__pthread_start:30)
    17.        at libc.__start_thread(__start_thread:6)
    It is very hard to reproduce - according to Google Play Console statistics - they happen only on 7 devices in every 1000 devices, so that is less than 1% of crash probability.
    But in absolute numbers, it is thousands of crashes.

    So were is no reason to submit a bug report - you will not be able to reproduce problem anyway.

    We are using Unity 2017.4.16f1. Scripting backend is mono; scripting runtime version .NET 4.6 Equivalent

    We have a look for particle system usages in game scripts and haven't found anything suspicious.

    Could you have any ideas what we can do to fix the problem?