This is the case for UObject pointers. Those need to be marked UPROPERTY. I suppose this is true as well when you have a struct property containing a UObject pointer.
The reason is that the garbage collector builds a tree of UObject referencing other UObjects. The moment one UObject is not referenced by another, it is treated as garbage.
The garbage collector can run at configurable intervals. The default might be 30 sec or 1 minute if I remember. Debugging this can be hard, as any cause of the problem might have happened time ago, not visible on the stack to debug.
What I’m hoping for, is that you can find the name of that property (or more info) by travelling the call stack in VS, not just the pointer address? While you travel the stack you will be able to read some of the properties in methods called.