# Studio::EventInstance::getPlaybackState() crashes on invalid instance

**URL:** <https://qa.fmod.com/t/studio-getplaybackstate-crashes-on-invalid-instance/21130>\
**Category:** FMOD Engine\
**Tags:** cpp\
**Created:** [January 20, 2024, 10:56pm UTC](https://qa.fmod.com/t/studio-getplaybackstate-crashes-on-invalid-instance/21130 "2024-01-20T22:56:31Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![mca2](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/mca2/32/3177_2.png) [@mca2](https://qa.fmod.com/u/mca2)\
**Post date:** [January 20, 2024, 10:56pm UTC](https://qa.fmod.com/t/studio-getplaybackstate-crashes-on-invalid-instance/21130/1 "2024-01-20T22:56:31Z")

</div>

Despite that the reference manual states

> If the instance is invalid, then the state will be set to [FMOD\_STUDIO\_PLAYBACK\_STOPPED]

[Studio API Reference](https://www.fmod.com/docs/2.02/api/studio-api-eventinstance.html#studio_eventinstance_getplaybackstate)

It crashes for me. To illustrate I slightly modified the shipped example (…\api\studio\examples\simple\_event.cpp). If you run the example, start (button 2), stop (button 3) and restart (button 2), it will crash on `getPlaybackState()`

> FMOD error 30 - An invalid object handle was used.

example code:

```cpp
if (Common_BtnPress(BTN_ACTION2))
{
    /// start added code
    FMOD_STUDIO_PLAYBACK_STATE state{};
    ERRCHECK(loopingAmbienceInstance->getPlaybackState(&state));
    if (state == FMOD_STUDIO_PLAYBACK_PLAYING) 
    {
        continue;
    }
    /// end added code

    ERRCHECK( loopingAmbienceInstance->start() );

    /// start added code
    ERRCHECK( loopingAmbienceInstance->release() );
    /// end added code
}

```

---

<div class="post-metadata">

**Author:** ![mca2](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/mca2/32/3177_2.png) [@mca2](https://qa.fmod.com/u/mca2)\
**Post date:** [January 20, 2024, 11:54pm UTC](https://qa.fmod.com/t/studio-getplaybackstate-crashes-on-invalid-instance/21130/2 "2024-01-20T23:54:45Z")

</div>

Ok, nevermind. `getPlaybackState()` works as advertised, but the `ERRCHECK`-macro handles the return value and if not-ok, kills the process.
