I am getting strange crash and I don't understand why

Greetings.
I’m still learning UE as my hobby and keep trying to make my own game. Recently I started encountering crash that I don’t know why is happening or how to solve. I will try to desribe system briefly.

So all UI widgets are created at start and then their visibility is set to “Collapsed”. Among them is “discard ui” that binds on multicast delegate from one of the components of local player.

In my game I have “inventory” and “discard” component on player actor. Discard has this delegate that UI was subscribed to. When new Discard Request is sent, Discard Componet fires this delegate with request details, then UI is shown, UI also “asks” component to provide filtered results to show (from Inventory) and after choice is made, inventory component handles discard. These requests are usualy called from various blueprints and everything is working fine.

However I added call my inventory component to send such discard request at some point (from C++) and somehow this specific request leads to crash.

Please help me understand what is going on here. As I said I am still learning engine and may be I’m doing something that is obviously wrong.

C++ Code to ask component for discard:


Discard Component puts request on queue and handles on text tick:

Here on tick crash will happen inside broadcast call:

Crash happens somewhere in asm code, but I have no idea what is going on there:


Edit:
I also noticed that crash happens instantly if I put breakpoint in blueprint and keep “mouseovering” various fields that are read from Request struct. Here in screenshot crahs will happen when I hover “Discard Request” (input from blueprint function)

I think I found issue. I guess it is indeed my lack of knowledge of UE. My blueprint method is

UFUNCTION(BlueprintCallable)
void RequestDiscard(const FDiscardRequest& DiscardRequest);

Const Ref. I guess it is working for BP but for calling it in C++ i am passing temp variable that is why it is going nuts. But BP doesn’t allow me to use && and Move semantic? Should I create separate method for C++ code for this case?