Scriptable Object weird behavior

So I’m making a ball-bouncing game, and in it if the ball falls off of a platform, its life count decreases by 1, the logic for which is carried out in my “LivesData” ScriptableObject. Below is the code that consumes life in case of death:

public class LivesData : ScriptableObject
{
private int _lives;
public int Lives => _lives;

    public void ConsumeLife()
    {
        if (_lives > 0) {
            _lives--;
            Debug.Log($"consuming life: {_lives}");
        }
    }

}

To me it was obvious that the line “_lives–” would subtract just one each time I call the function. But then when I built my game to Android checked my logcat, it’s showing that my life count went all the way from 1100 to a random value of 3 or 2 or 0, etc. AND THEN, it comes back to its original value of 1100 after some time…
At first I thought I was setting some random values for “_lives” field somewhere in my code, but no. Moreover, even when life dropped from 1100 to 0, my logat is showing that “ConsumeLife()” was called only once, which should have only subtracted 1 life. Below is what I got from logcat:

08-11 02:55:57.874 4130 9575 I Unity : consuming life: 1
08-11 02:55:57.874 4130 9575 I Unity : GameLogic.LivesData:ConsumeLife()
08-11 02:55:57.874 4130 9575 I Unity : InGame.Snapper:KillPlayerIfSnapped()
08-11 02:55:57.874 4130 9575 I Unity :

08-11 02:56:02.403 4130 9575 I Unity : consuming life: 0
08-11 02:56:02.403 4130 9575 I Unity : GameLogic.LivesData:ConsumeLife()
08-11 02:56:02.403 4130 9575 I Unity : InGame.Snapper:KillPlayerIfSnapped()
08-11 02:56:02.403 4130 9575 I Unity :
08-11 02:56:02.404 4130 9575 I Unity : From Snapper: Lives Count: 0, Has Spare life: True
08-11 02:56:02.404 4130 9575 I Unity : InGame.Snapper:KillPlayerIfSnapped()
08-11 02:56:02.404 4130 9575 I Unity :

08-11 02:56:10.347 4130 9575 I Unity : consuming life: 1089
08-11 02:56:10.347 4130 9575 I Unity : GameLogic.LivesData:ConsumeLife()
08-11 02:56:10.347 4130 9575 I Unity : Managers.GameManager:CheckPlayerDeath()
08-11 02:56:10.347 4130 9575 I Unity : System.Action:Invoke()
08-11 02:56:10.347 4130 9575 I Unity : Managers.UpdateManager:Update()

Is is just that ScriptableObject doesn’t work as a data container? How would you explain this seemingly random behavior?

I think lives-- returns lives-1 to null in your case.
try

_lives = _lives–;

or

_lives -= 1;