Is Valid Causes a Crash in Game

My game crashes once in a couple hours. Only the players had the crashes, I’ve never been able to duplicate the issue. I have checked the game’s output in the editor for hours, and can’t get any errors or warnings. I upload the game to Steam as a Shipping Package. I can’t activate logs on shipping package, thus can’t find the issue. I have connected the crash reporter to Sentry.io and here is the info it provides me.

EXCEPTION_ACCESS_VIOLATION reading address 0x00000008
EXCEPTION_ACCESS_VIOLATION_READ
Fatal Error: EXCEPTION_ACCESS_VIOLATION_READ
+0x260f652 UKismetSystemLibrary::execIsValid

Does this meanthe crash occurs on the execution pin in the “Is Valid” node? I have checked every “is valid” node I have been using and can’t find a problem. If other info is needed I can provide. Thanks.

I’m not entirely sure, so take this with a pinch of salt, but…

I think that’s an IsValid node inside the math library.

Most likely candidate is division by zero.

Validated get, that’s good. If you’re getting errors from IsValid, that must say something. The error could be anywhere math related, so vectors, for example. You can see everything that’s in Kismet if you take a look on github.

Once it’s packaged you can’t get a decent crash dump, as far as I know.

Have you tried running in the editor and then looking at the message log? Can be very instructive.

If I understand right you say I should check if I divide something with 0, right?

The only divide I use is divide by 5. And I use it after checking if the integer is not equal to zero. I attach the related code. Do you think someting is broken here?

I use “validated get” a lot. When I need to get an actor I always use “validated get” to prevent crashes and errors. Could this error be related to it? Is there a false way to use validated get? I’m using “is valid” to prevent crashes however it only gives me more errors.

In addition, is there a way to get a more detailed crash report, so that I can understand when the crash occurs, and which actor is responsible?

I’ve already checked them and the only one I use among them is the IsValid itself, and that’s what makes it more confusing, since I use the “is valid” to prevent a crash, however it causes the crash.

Ok, now I got it. So it became more complicated then I thought.

I have checked the game in editor couple times for hours however could not manage to get an error. As I said I can’t reproduce the issue my self, but I see Twitch streamers get a fatal error, and the crash reporter indicate the IsValid function.

The game itself is relatively simple and there aren’t many math functions,only math functions I use are +/-, and only one division. Thanks for the comments I will look into Kismet library a little more.

It’s dying some in here:

https://docs.unrealengine.com/en-US/API/Runtime/Engine/Kismet/UKismetSystemLibrary/index.html

I looked a bit further ( at the source ). The only place KismetSystem uses IsValid are:

Timer handles

Soft object paths

Soft class reference

Overlaps

Line traces

It’s not you using IsValid, it’s KismetSystem using it.