Crash when unloading a level if a matinee is playing

I get a crash if unload a streaming level that contains a matinee that’s still playing when level is unloaded. Here’s callstack:

link text

Hey ,

I was unable to reproduce this in 4.5.1. Does this happen in a new project or only your current project? Does this happen consistently?

Please and attach crash log and dump file for your project after this crash. Thanks!

It’s not consistent. matinee is played in onBeginPlay of streaming sub-level and I do stop it before unloading level, but crash only happens after streaming in and out a few times.

I’m using 4.5.1 compiled form source, so dump wouldn’t be useful. All I have is that callstack.

I’m actually debugging this one right now and crash happens in AActor::ForceNetUpdate() when trying to access return value of GetWorld(), which is null because Matinee actor belongs to a level that has been unloaded and is no longer linked to world, I presume. I assume something held a reference to matinee actor after level was unloaded and it kept trying to perform net updates.

I managed to find a particular sequence that crashes my project consistently and I’m going to try to destroy Matinee before unloading to see if it works.

OK, I have some extra information. I thought I was stopping matinee, but I was mistaken. I’ve set it to stop and my crashes are gone.

I’ll try to detail exact setup of my project to see if I can help reproducing problem:

I have a persistent level “root” which contains two streaming levels called “intro” and “level_01”. Both are set to blueprint-based streaming. Root contains a button that starts streaming level “intro”.

Level “intro” contains two matinees: “loopMatinee” and “startMatinee”. Its level blueprint plays “loopMatinee”, which is set to loop. There are two buttons “back” and “play”. Pressing “back” stops “loopMatinee” and unloads “intro”. Pressing play starts streaming level “level_01” and when it’s done loading “startMatinee” is played (I didn’t stop “loopMatinee” so transition to “startMatinee” would work smoothly, otherwise camera would jerk back to pawn for a frame before snapping to “startMatinee” camera).

Inside “level_01” my gameplay takes place. When player dies, both “intro” and “level_01” are unloaded and then “intro” is re-loaded (I need to do this to reset everything to their initial positions).

I got crash to happen 100% of times by going from “root” to “intro” and back a few times, then going from “intro” to “level_01” and dying (which would re-load “intro”). By 2nd or 3rd death, crash happened. matinee actor referenced in crash was one of “loopMatinee” instances and GetWorld() returned null.

Hey ,

I set up a project following these instructions but still did not get a crash. Are you unloading intro level after loading level_01?

Please attach crash log from your project. Are you able to reproduce this in a new project?

Hey ,

I haven’t heard back from you in a while, so I’m marking this post as resolved for tracking purposes. If you are able to reproduce this problem in a new project, please attach crash log and let me know so we can continue to investigate. Thanks!

I just got this exact thing today in 4.7.1.

Same callstack and kind of setup. (I have fadein/fadeout and loopblack matinees for transitions between streaming levels).

Hi SkurkSE -

I am fairly certain that this issue has been corrected in version 4.8 and 4.9. In version that you are getting issue in can you please list submitted Machine ID from crash reporter information.

Thank You

Eric Ketchum