Crash on garbage collection of WidgetInteraction Component

I've had a long time problem with my mod (UEVR Enhancements) that it crashes whenever the player returns to main menu. The error is an EXCEPTION_ACCESS_VIOLATION on deallocating a WidgetInteraction Component. I believe this is an upstream engine bug, but it's unlikely the main game or other mods use the WidgetInteraction Component - but my mod relies on it. To replicate the problem: - Add an Actor to the Example Mod called "CrashTestActor" and add a "WidgetInteraction" Component to it - Spawn the Actor in the world (eg; at player pawn location) on load - Load the game and load into the world - Exit to main menu How can I escalate this upstream to try and get it resolved? Crash details attached.
20 Replies
Dortamur
DortamurOP2mo ago
CrashTestActor:
No description
Dortamur
DortamurOP2mo ago
Adding CrashTestActor to the world:
No description
Dortamur
DortamurOP2mo ago
...called from "RootGameWorld_ExampleMod" on Initialization.
Robb
Robb2mo ago
what does the WidgetInteraction component do and what does your mod need it for?
MinoDab492
MinoDab4922mo ago
I’m not sure what’s happening, but I believe in the past there has been commits to the CSS Unreal Engine repo that got merged by Coffee Stain, iirc
Dortamur
DortamurOP2mo ago
The WidgetInteraction component is used in my mod attached to VR controllers which follow the users hands. They are used to handle interactions with world-space widgets, namely the wrist menus that I have implemented. So the user would use their left hand to point at a menu floating above their right hand to select equipment, scan for resources, etc... Actually - the reverse. But you get the idea. 😆
Robb
Robb2mo ago
you might be able to use the widget material system that the hoverpack controllers use if you can't find a workaround for this... but I don't think it offers the same level of interactivity
Dortamur
DortamurOP2mo ago
This is a component to allow interaction with the Widget Component. This class allows you to simulate a sort of laser pointer device, when it hovers over widgets it will send the basic signals to show as if the mouse were moving on top of it. You'll then tell the component to simulate key presses, like Left Mouse, down and up, to simulate a mouse click.
Thing is - it works perfectly fine, and you can play for hours without any problems. But when the world unloads, like returning to the main menu, then the crash happens. It also means that in a Network game, if the user gets a Network disconnect, the user gets the crash, rather than returning to the menu to be able to reconnect. It's a standard Unreal Engine component, so perhaps it's been affected by other engine customisations, or perhaps wasn't kept up to date with the engine migrations?
Rex
Rex2mo ago
Does it work in a vanilla engine?
Dortamur
DortamurOP2mo ago
Yes. It's used in other UE engines - it's a standard part of the VR widget interaction toolkit. But could also be used in a flat game through, eg; pointing a weapon at an in-world widget selection.
Dortamur
DortamurOP2d ago
I've been updating my UEVR Enhancements mod to Experimental 1.1 and most issues have been sorted out. Unfortunately, this garbage collection crash of WidgetInteractionComponent is still an issue. Repeating the aforementioned test with the Example Mod, the crash is about the same as it was before...
Dortamur
DortamurOP2d ago
Given we're on Experimental and there are currently changes to the Engine and SML ongoing, would it be possible for someone with more access and greater knowledge than me to take a look and see if this can be resolved for 1.1? Is there an avenue through here, or https://questions.satisfactorygame.com/, or other, that I could request CSS take a look?
Robb
Robb2d ago
@Mircea might have an idea of where to look next
Mircea
Mirceathis hour
Ida isn't being very helpful, but it seems like the issue is basically what the log says, CSS set up a Slate focus change delegate listener for something, and destroying that component triggers a focus change, so the delegate gets called, but the delegate tries to do something with a timer, so it fails because there's no world. Now why there's no world on the game instance I have no idea, because from what I can see the only time the world should be null is when the game instance is shut down The quick fix would be to hook that UFGGameInstance function and cancel it if the world is null
Robb
Robbthis hour
Perhaps @Archengius can give some insight as to why the change delegate listener is around and if there's an intended way we should work with/around it?
Archengius
Archengius23h ago
We should just fix it It's around because controller support
Dortamur
DortamurOP15h ago
This crash happens when returning to the main menu, so the world has been closed.
Rex
Rex7h ago
There should be a menu world, unless that hasn't been brought up yet
Mircea
Mircea7h ago
As I understood the gameinstance code, it has its own world It sets a dummy world at the beginning, and I don't see any place that would set a null world

Did you find this page helpful?