Code Monkey home page Code Monkey logo

Comments (41)

Demigiant avatar Demigiant commented on August 20, 2024 1

Daaamn I thought this was finally solved, but you seem to have found another way to generate it. Great that you have the reproducible coding, so I can squash this more. Will get onto it asap.

from dotween.

Decavoid avatar Decavoid commented on August 20, 2024 1

I made a PR #99 that fixesIndexOutOfRangeException exception reproducible by the test case above.

from dotween.

Demigiant avatar Demigiant commented on August 20, 2024

Hi,

This bug was also found by another user yesterday, and I just posted a fix. Could you test it out to be sure? You can find it attached to this post.

from dotween.

andrew-chewie avatar andrew-chewie commented on August 20, 2024

Thanks for the fast response.
I've downloaded latest version, but this error is not solved.
Maybe I can provide any additional info to help find the issue.

Regards,
Andrew

from dotween.

andrew-chewie avatar andrew-chewie commented on August 20, 2024

Seams like it happens when target objects is null somewhere in Awake/Start.
I thought that DOtween has internal check for null objects?

from dotween.

Demigiant avatar Demigiant commented on August 20, 2024

Ouch, I hoped it was solved.

DOTween does have a check for NULL objects (if safe mode is active), but not when a tween is created, in which case it assumes the target is not NULL. Still, it shouldn't generate an IndexOutOfRange exception.

Can you create a sample project that replicates this issue? That would be great, so I can check it out and fix it once and for all :)

from dotween.

theshked avatar theshked commented on August 20, 2024

Hi,

I don't have a sample project, but this would occur consistently for me after a call to DOTween.Clear() in code that restarts my app. Removing the call solved the issue.

Hope this helps figuring it out...

Cheers,
Alon

from dotween.

Demigiant avatar Demigiant commented on August 20, 2024

Hi,

Thank you, that will help indeed. Can you also tell me on which version you are, so I can check it out consistently? You can see your DOTween version inside the Utility Panel.

Cheers,
Daniele

from dotween.

theshked avatar theshked commented on August 20, 2024

I am now on v1.0.775, but this also occurred on the May 15th version, v1.0.720.

from dotween.

Xerios avatar Xerios commented on August 20, 2024

Having the same issue with v1.0.830 ( and previous versions ),

IndexOutOfRangeException: Array index is out of range.
DG.Tweening.Core.TweenManager.RemoveActiveTween (DG.Tweening.Tween t) (at D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:833)
DG.Tweening.Core.TweenManager.FilteredOperation (OperationType operationType, FilterType filterType, System.Object id, Boolean optionalBool, Single optionalFloat, System.Object optionalObj, System.Object[] optionalArray) (at D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:504)
DG.Tweening.DOTween.Complete (System.Object targetOrId, Boolean withCallbacks) (at D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/DOTween.cs:646)

_activeTweens[index] = null;

This is what I'm getting after doing a DOTween.Complete("undoPulse"); or Kill function, even with DOTween.IsTweening("undoPulse") check I still get the error.

Maybe add a check to see if index isn't bigger than the length or if it hasn't been altered.

Note that recycle is activated for my code and I mostly use strings for Ids.

from dotween.

Xerios avatar Xerios commented on August 20, 2024

I guess it's a capacity issue, use many tweens for a while ( not simultaneously ) and you'll get those kind of errors.

For instance setting SetCapacity to less than default 200, it will make my bug appear earlier ( note that my scene only has max 20 simultaneous tweens ). Not sure how this library handles capacity but something needs to be done.

from dotween.

Demigiant avatar Demigiant commented on August 20, 2024

Hey Xerios,

I'm still waiting for a sample project that replicates this issue. I tried many times, but I can't replicate it on my side. If you can do that please send it to me by attaching a link here: that would be great and would certainly lead me to finally fix this issue.

from dotween.

Xerios avatar Xerios commented on August 20, 2024

I have hard time replicating it outside my project ( and it's also hard to reproduce inside my project ), clearly there's something I might be doing wrong.

Funny part is that it doesn't happen on the supposedly badly implemented tween, it actually happens on the next tween ( the error I mentioned previously came from another tween ), removing that tween I got this :

IndexOutOfRangeException: Array index is out of range.
DG.Tweening.Core.TweenManager.RemoveActiveTween (DG.Tweening.Tween t) (at D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:833)
DG.Tweening.Core.TweenManager.Update (UpdateType updateType, Single deltaTime, Single independentTime) (at D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:401)
DG.Tweening.Core.DOTweenComponent.Update () (at D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/DOTweenComponent.cs:50)

Note that safemode is active, and recycle is on.

I'll keep digging to see if I can find the issue or reproduce it properly.

from dotween.

Demigiant avatar Demigiant commented on August 20, 2024

Thank you. I know where the error ends, the thing I can't replicate either is how to make it happen in order to determine where it starts. I tried everything I could think of, sigh. Will cross my finger hoping you can reproduce it.

from dotween.

PeterDekkers avatar PeterDekkers commented on August 20, 2024

I'm experiencing this issue also, only when Recycling is on. When I turn recycling off it doesn't happen. Will see if I can reproduce...

from dotween.

PeterDekkers avatar PeterDekkers commented on August 20, 2024

This crazy code reproduces it using DOTween v1.1.260. Don't try this at home... ;)

using UnityEngine;
using System.Collections;
using DG.Tweening;

public class reproduce_dotween_bug : MonoBehaviour {

    const string TWEEN_ID = "abc";

    void Start () {

        // Enable recycling
        DOTween.Init(true).SetCapacity(500,250);

        // Start a bunch of tweens with the same ID and varying durations
        for (int i = 0; i < 250; i++) {
            NewTween();
        }

        // Kill+complete tweens every so often
        InvokeRepeating("KillAndComplete", 0, 0.5f);
    }

    void NewTween()
    {
        Vector3 myVector = Vector3.zero;
        // Each time this completes, start a new tween. This is crucial for bug reproduction.
        DOTween.To(()=> myVector, x=> myVector = x, Vector3.one, Random.Range(0.1f, 0.9f)).SetId(TWEEN_ID).SetAutoKill(true).Play().OnComplete(NewTween);
    }

    void KillAndComplete()
    {
        // Completing the tween is crucial for bug reproduction.
        DOTween.Kill(TWEEN_ID, true);
    }

}

from dotween.

Decavoid avatar Decavoid commented on August 20, 2024

This code reproduces the bug using only 2 sequence objects. Add this script on an empty GameObject.

using System;
using System.Collections;
using DG.Tweening;
using UnityEngine;

public class Test : MonoBehaviour
{
    private int killCounter = 0;

    private void Awake()
    {
        DOTween.Init(true, true, LogBehaviour.Verbose);
        DOTween.SetTweensCapacity(200, 125);
    }

    private void Start()
    {
        const float Delay = 2;
        DOTween.Sequence().AppendInterval(Delay).OnKill(OnKill);
        DOTween.Sequence().AppendInterval(Delay).OnKill(OnKill);
    }

    private void OnKill()
    {
        if (++killCounter == 2)
            StartCoroutine(Coroutine());
    }

    private IEnumerator Coroutine()
    {
        Sequence sequence = DOTween.Sequence().AppendInterval(2).OnKill(() => { });

        yield return new WaitForSeconds(1);

        Debug.Log("sequence.Kill()");
        sequence.Kill(); // IndexOutOfRangeException
    }
}
IndexOutOfRangeException: Array index is out of range.
DG.Tweening.Core.TweenManager.RemoveActiveTween (DG.Tweening.Tween t) (at Assets/ThirdParty/DOTween/Core/TweenManager.cs:895)
DG.Tweening.Core.TweenManager.Despawn (DG.Tweening.Tween t, Boolean modifyActiveLists) (at Assets/ThirdParty/DOTween/Core/TweenManager.cs:203)
DG.Tweening.TweenExtensions.Kill (DG.Tweening.Tween t, Boolean complete) (at Assets/ThirdParty/DOTween/TweenExtensions.cs:135)
Test+<Co2>c__IteratorE0.MoveNext () (at Assets/Test.cs:36)
UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) (at C:/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)

In TweenManager.Update _KillList contains 2 sequences (id 0 and 1).
Despawn is called on the first sequence (id 0). The first sequence is pushed to _PooledSequences.
Despawn is called on the second sequence (id 1). onKill callback is called, that calls Coroutine coroutine, that launches third sequence popped from _PooledSequences. activeId is changed from 0 to 2. The second sequence is pushed to empty _PooledSequences.
RemoveActiveTween(_KillList[1]) resets activeId of the second sequence from 1 to -1.
RemoveActiveTween(_KillList[0]) resets activeId of the first = third sequence from 2 to -1.
Killing the third sequence causes the IndexOutOfRangeException because activeId is -1.

from dotween.

fulviokidloom avatar fulviokidloom commented on August 20, 2024

Hi, I have the same issue when I run the app from an android device.. not from the pc.
I haven't tested in iOS yet.
The plugin in the store is already updated with this solution?

Thanks

from dotween.

Demigiant avatar Demigiant commented on August 20, 2024

Thank you very much @Andreyul!!! I was very busy trying to replace try-catch calls in the whole DOTween (because otherwise safe-mode will crash on UWP) so I didn't give this the right attention. I'm on it now, wait until the end of the day @fulviokidloom

from dotween.

Demigiant avatar Demigiant commented on August 20, 2024

Implemented the fix and uploaded to the website as v1.1.340.
@Andreyul I modified your fix a little, but overall it's the same (and added you on the website's credits page :P). Thanks again!

from dotween.

Hitomilras avatar Hitomilras commented on August 20, 2024

Have this issue with last version 1.2.335

IndexOutOfRangeException: Index was outside the bounds of the array.
DG.Tweening.Core.TweenManager.RemoveActiveTween (DG.Tweening.Tween t) (at D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:1090)
DG.Tweening.Core.TweenManager.Despawn (DG.Tweening.Tween t, System.Boolean modifyActiveLists) (at D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:236)
DG.Tweening.Core.TweenManager.Complete (DG.Tweening.Tween t, System.Boolean modifyActiveLists, DG.Tweening.Core.Enums.UpdateMode updateMode) (at D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:667)
DG.Tweening.TweenExtensions.Kill (DG.Tweening.Tween t, System.Boolean complete) (at D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/TweenExtensions.cs:125)
CityScenario+ScenarioPart.Stop () (at Assets/Scripts/Scenarios/CityScenario.cs:143)

from dotween.

Demigiant avatar Demigiant commented on August 20, 2024

Ohnoes :( Do you have a way to reproduce this? That would help a lot. I solved every fringe case so I assume yours is some new fringe case that I can't replicate (just finding a way to replicate those was almost impossible) :B

from dotween.

Hitomilras avatar Hitomilras commented on August 20, 2024

Ohnoes :( Do you have a way to reproduce this? That would help a lot. I solved every fringe case so I assume yours is some new fringe case that I can't replicate (just finding a way to replicate those was almost impossible) :B

I can just now go into skype with you, add you to my repository and find it))
alexey.notersdein is my skype.

I really need to fix this bug very quickly and if you can help - it will be very, very good :)

from dotween.

Demigiant avatar Demigiant commented on August 20, 2024

Ahoy! If you can reproduce it it would help me a lot, because I can't do it right now so I'll probably get to it tomorrow morning, sorry.

P.S. If it's urgent because of a release I can implement a quick "fail-check" system so you'll be good to go, but if you manage to replicate this and send me a barebone project that reproduces it that would help a lot to stifle the real reason why this is happening.

from dotween.

Demigiant avatar Demigiant commented on August 20, 2024

As a hint, look into the places where you use DOTween.Clear, because all the past fringe cases were usually about that, so maybe that's the case this time too. Otherwise for cases where you kill tweens in "weird" moments.
P.S. Also, you don't need DOTween.Clear, DOTween.KillAll is more than enough ;)

from dotween.

Hitomilras avatar Hitomilras commented on August 20, 2024

There is no DOTween.Clear and recycling is disabled.

So, project is written really badly, and because of urgent release, i was one who was choosen to refactor this in 2 days.

Inside project previous developer used really A LOT of tweens and in OnComplete callbacks lots of tweens create new tweens, and so on. Tweens create more tweens on complete and this tweens create even more tweens as they are complete.

Error occuring in function Tween.Kill(true).

I can send you this sources to check it, but this 'code' is really a stress test for DOTween as y system :) I didn't see such a bad code previously, i think)

from dotween.

Demigiant avatar Demigiant commented on August 20, 2024

Mhmm ok if the project is that messed I see it would probably take me all day to find the issue, and I can't spend all day on that today. But let's try it. Who knows maybe I will be lucky. Please share the project with me and tell me in as detailed a way as possible how to reproduce this bug in said project. If I can't find it within today then tomorrow I will implement the quick safety check.
(Write me at myname.mysurname@google'smail.com, or just write here and I'll reply with my full mail :P)

from dotween.

antonysze avatar antonysze commented on August 20, 2024

I'm now using v1.2.305. I got out of range exception from 2 methods which logged by Firebase Crashlytics in production build. Following are the exception logged:

Non-fatal Exception: java.lang.Exception: IndexOutOfRangeException : Index was outside the bounds of the array.
       at DG.Tweening.Core.TweenManager.ReorganizeActiveTweens(DG.Tweening.Core.TweenManager)
       at DG.Tweening.Core.TweenManager.Update(DG.Tweening.Core.TweenManager)
       at DG.Tweening.Core.DOTweenComponent.Update(DG.Tweening.Core.DOTweenComponent)
Non-fatal Exception: java.lang.Exception: IndexOutOfRangeException : Index was outside the bounds of the array.
       at DG.Tweening.Core.TweenManager.RemoveActiveTween(DG.Tweening.Core.TweenManager)
       at DG.Tweening.Core.TweenManager.Despawn(DG.Tweening.Core.TweenManager)
       at DG.Tweening.Core.TweenManager.DespawnActiveTweens(DG.Tweening.Core.TweenManager)
       at DG.Tweening.Core.TweenManager.Update(DG.Tweening.Core.TweenManager)
       at DG.Tweening.Core.DOTweenComponent.Update(DG.Tweening.Core.DOTweenComponent)

They are different from Hitomilras's. But those exception seems caused by incorrect t.activeId in TweenManager.RemoveActiveTween by

int index = t.activeId;

I afraid that activeId is set to -1 incorrectly and it is used for index of array.

However, I cannot reproduce this problem locally. I cannot find a way to debug or even find out where does it cause the problem from my code. I would like to ask for debugging tips on this issue like custom logging or something else to find out the problem.

from dotween.

Whyser avatar Whyser commented on August 20, 2024

Having same issue but I'm using DOTween v1.1.660 (a bit scared to upgrade because project is already Live). From Crashlytics (15 users):

Non-fatal Exception: java.lang.Exception
IndexOutOfRangeException : Index was outside the bounds of the array.
DG.Tweening.Core.TweenManager.ReorganizeActiveTweens (DG.Tweening.Core.TweenManager)
DG.Tweening.Core.TweenManager.AddActiveTween (DG.Tweening.Core.TweenManager)
DG.Tweening.Core.TweenManager.GetTweener[T1,T2,TPlugOptions] (DG.Tweening.Core.TweenManager)
DG.Tweening.DOTween.ApplyTo[T1,T2,TPlugOptions] (DG.Tweening.DOTween)
DG.Tweening.DOTween.To (DG.Tweening.DOTween)
DG.Tweening.ShortcutExtensions.DORotate (DG.Tweening.ShortcutExtensions)

Has further improvement to this issue been done since v1.1.340 (mentioned above)?

from dotween.

DeRvinBy avatar DeRvinBy commented on August 20, 2024

We get the same exceptions from users from Firebase Crashlytics , and accidentally managed to reproduce it in the project

My Unity Log:

[Exception] NullReferenceException: Object reference not set to an instance of an object
DOTweenModuleUI+<>c__DisplayClass4_0.<DOFade>b__0()    Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs:79
77:   public static TweenerCore<Color, Color, ColorOptions> DOFade(this Image target, float endValue, float duration)
78:   {
-->79:       TweenerCore<Color, Color, ColorOptions> t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration);
80:       t.SetTarget(target);
81:       return t;

Tweener.DoStartup[T1,T2,TPlugOptions]()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Tweener.cs:157

DG.Tweening.Core.TweenerCore`3[T1,T2,TPlugOptions].Startup()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenerCore.cs:250

TweenManager.Update()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:533

TweenManager.Update()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:417

DOTweenComponent.Update()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/DOTweenComponent.cs:75
[Exception] NullReferenceException: Object reference not set to an instance of an object
DOTweenModuleUI+<>c__DisplayClass4_0.<DOFade>b__0()    Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs:79
77:   public static TweenerCore<Color, Color, ColorOptions> DOFade(this Image target, float endValue, float duration)
78:   {
-->79:       TweenerCore<Color, Color, ColorOptions> t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration);
80:       t.SetTarget(target);
81:       return t;

ColorPlugin.EvaluateAndApply()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Plugins/ColorPlugin.cs:89

DG.Tweening.Core.TweenerCore`3[T1,T2,TPlugOptions].ApplyTween()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenerCore.cs:273

Tween.DoGoto()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Tween.cs:266

TweenManager.Update()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:569

TweenManager.Update()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:417

DOTweenComponent.Update()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/DOTweenComponent.cs:75

I checked the calling code, and indeed, null is passed in the "target" argument. But then a log is output with an exception that is reproduced from users from Firebase Crashlytics.

[Exception] IndexOutOfRangeException: Index was outside the bounds of the array.
TweenManager.RemoveActiveTween()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:1164

TweenManager.Despawn()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:236

TweenManager.DespawnActiveTweens()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:1150

TweenManager.Update()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:496

DOTweenComponent.Update()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/DOTweenComponent.cs:75
[Exception] IndexOutOfRangeException: Index was outside the bounds of the array.
(wrapper stelemref) System.Object.virt_stelemref_class_small_idepth(intptr,object)
TweenManager.ReorganizeActiveTweens()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:1140

TweenManager.Update()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:404

DOTweenComponent.Update()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/DOTweenComponent.cs:75

Then the following log is output, but I think there is an exception due to the above NullReferenceException

[Exception] IndexOutOfRangeException: Index was outside the bounds of the array.
(wrapper stelemref) System.Object.virt_stelemref_class_small_idepth(intptr,object)
TweenManager.ReorganizeActiveTweens()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:1140

TweenManager.AddActiveTween()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:1073

TweenManager.GetSequence()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:146

DOTween.Sequence()    D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/DOTween.cs:707

PulseImageEffect.Update()    Assets/Scripts/Views/Effects/PulseImageEffect.cs:30
28:   if (_currentPulseDelay < 0) {
29:       var pulseView = GetPulseView();
-->30:       DOTween.Sequence().Append(pulseView.DOFade(0, pulseDuration))
31:           .Join(((RectTransform) pulseView.transform).DOSizeDelta(_viewSize * maxScale, pulseDuration))
32:           .SetId(this)

However, in Firebase Crashlytics we did not find the above Null Reference exceptions, only IndexOutOfRange exceptions. I would like to know if the exceptions from Firebase Crashlytics can be related to those that were reproduced in the project. And as I understand it, these exceptions are reproduced when exceptions occur in the use of animation. So should they be handled or is this standard behaviour and we need to look for similar calls that cause an exceptions from Firebase Crashlytics?

I use DOTween with version 1.2.632 and Unity with version 2020.3.25.f1. And I don't use DOTween Safe Mode.

from dotween.

rfadeev avatar rfadeev commented on August 20, 2024

@DeRvinBy If the exceptions are reproducible, would it be possible to create and share sample project with the reproduction case? I know sharing the original project is impossible, but guaranteed way to reproduce the issue would help immensely. The project I worked on before never managed to get stable reproduction case.

from dotween.

DeRvinBy avatar DeRvinBy commented on August 20, 2024

@rfadeev Yes, I managed to reproduce it in a separate project. Attach a link to Project. To reproduce the exception, you need to press the E key several times.

from dotween.

Demigiant avatar Demigiant commented on August 20, 2024

Ahoy! The error above seems indeed related to your tween's target becoming NULL while the tween is playing, which, without safe mode enabled, will cause general failures (in these cases I recommend to at least enable safe mode + debug mode to find the culprit easily, then fix it and eventually disable safe mode again). I'm downloading the project to check it out anyway.

from dotween.

Demigiant avatar Demigiant commented on August 20, 2024

Tested and yes, the issue is simply the target being NULL and causing a nullref exception, which interrupts the flow and causes loads of problems in DOTween, including later indexOutOfRange exceptions. Enabling safe mode fixes this on the fly because in that case DOTween captures the NULL ref and immediately deletes the tween without interrupting the flow.

from dotween.

Whyser avatar Whyser commented on August 20, 2024

I think it's wise to point out (which I think Demigiant almost did, by saying "disable safe mode again") that Safe Mode is safe in the way that it doesn't throw/cause exceptions. But keep in mind, things will usually NOT behave as expected if issues occur even while in Safe Mode. Safe mode is just a dirty bandage and in my experience should not be used in production apps. :P

from dotween.

DeRvinBy avatar DeRvinBy commented on August 20, 2024

As I expected, the IndexOutOfRange exception occurs due to errors with calling DO Tween methods. So we have to fix them so that the IndexOutOfRange exceptions disappear from Firebase Crashlytics. Thanks a lot.

from dotween.

ExoRivas avatar ExoRivas commented on August 20, 2024

Here the same problem, it happens to me specifically with a doScale call and then releases all the trace that the rest of the users show, someone with the same problem?

from dotween.

rhys-vdw avatar rhys-vdw commented on August 20, 2024

I'm hitting this now.

IndexOutOfRangeException: Index was outside the bounds of the array.
DG.Tweening.Core.TweenManager.RemoveActiveTween (DG.Tweening.Tween t) (at D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:1181)
DG.Tweening.Core.TweenManager.Despawn (DG.Tweening.Tween t, System.Boolean modifyActiveLists) (at D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:236)
DG.Tweening.TweenExtensions.Kill (DG.Tweening.Tween t, System.Boolean complete) (at D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/TweenExtensions.cs:143)
EffortStar.ActorHealthBar.SetValueImmediate (System.Int32 value) (at Assets/_Game/Scripts/UI/ActorHealthBar.cs:118)
EffortStar.ActorHealthBar.StopInspect () (at Assets/_Game/Scripts/UI/ActorHealthBar.cs:112)
EffortStar.ActorHealthBarUi.StopInspect (Leopotam.EcsLite.EcsPackedEntity entity) (at Assets/_Game/Scripts/UI/ActorHealthBarUi.cs:112)
EffortStar.GameManager.ClearHighlight () (at Assets/_Game/Scripts/GameManager.cs:637)
EffortStar.GameManager.Update () (at Assets/_Game/Scripts/GameManager.cs:837)

IndexOutOfRangeException: Index was outside the bounds of the array.
(wrapper stelemref) System.Object.virt_stelemref_class_small_idepth(intptr,object)
DG.Tweening.Core.TweenManager.ReorganizeActiveTweens () (at D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:1157)
DG.Tweening.Core.TweenManager.Update (DG.Tweening.UpdateType updateType, System.Single deltaTime, System.Single independentTime) (at D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/TweenManager.cs:404)
DG.Tweening.Core.DOTweenComponent.Update () (at D:/DG/_Develop/__UNITY3_CLASSES/_Holoville/__DOTween/_DOTween.Assembly/DOTween/Core/DOTweenComponent.cs:75)

It's on a call of _tween.Kill(false); on a sequence tween.

We're on version 1.2.705

from dotween.

TheAnosmic avatar TheAnosmic commented on August 20, 2024

I just had this issue today with the latest version.
In our case, it was the combination with UniTask, with this code: t.ToUniTask(TweenCancelBehaviour.KillAndCancelAwait...
that caused the t.Kill(false) function to free the current running "Thread" of UniTask, then another "Thread" called Kill() again on the same tween.

from dotween.

rhys-vdw avatar rhys-vdw commented on August 20, 2024

Ah yes, I'm using UniTask too. This is likely the case here. The tween was likely being awaited while it was killed, and possible that the awaiter fired a cancellation token resulting in a double kill. I haven't seen this issue crop up again though.

from dotween.

HiGame avatar HiGame commented on August 20, 2024

@Demigiant

"Dear Demigiant , it seems I've encountered this issue as well; it occurs on Android devices but so far, I haven't experienced it on PC. Could you please advise on how to resolve this? Thank you!"

dotween: v1.2.740

1
2

from dotween.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.