Component variable null after assignment

I have a component being created and attached to the owner in the object constructor, after checking if Owner is valid. The variable it’s assigned to becomes null when it goes out of scope, even though it’s allocated on the heap and is actually part of the object. To make things weirder the variable remains valid if I move the assignment operation before GetOwner() check in the object constructor.

I’m quite confused by this, the variable uses the UPROPERTY() decorator, which if removed then the code behaves correctly. This leads me to believe this variable might be garbage collected even though the Component itself remains valid?

I’ve tried making the variable decorator use EditAnywhere and BlueprintReadWrite, but that resulted in no change. I assume I am overlooking something quite trivial. Any insight into this would be greatly appreciated.

private:
	UPROPERTY()
	class UCapsuleComponent* InteractionCapsule = nullptr;
UInteractionComponent::UInteractionComponent()
{
	bBlockInput = false;

	// Works
	InteractionCapsule = CreateDefaultSubobject<UCapsuleComponent>(TEXT("InteractionCapsule"));

	if (GetOwner())
	{
		//Doesn't work
		//InteractionCapsule = CreateDefaultSubobject<UCapsuleComponent>(TEXT("InteractionCapsule"));
		InteractionCapsule->SetupAttachment(GetOwner()->GetRootComponent());
		InteractionCapsule->SetRelativeLocation(FVector(60,0,-20));
		InteractionCapsule->InitCapsuleSize(100,200);

I don’t really know how to explain this. Stepping thru the code it seems that the Owner is valid, but when starting play mode it’s null, even though the log messages indicate that the code block after GetOwner() was executed successfully. Going thru the debug log I don’t see the same constructor being called multiple times, which debugging the code also confirms.

Running this code:

UInteractionComponent::UInteractionComponent()
{
	UE_LOG(LogTemp, Error, TEXT("Constructor before GetOwner()"));
	InteractionCapsule = CreateDefaultSubobject<UCapsuleComponent>(TEXT("InteractionCapsule"));

	if (GetOwner())
	{
		UE_LOG(LogTemp, Error, TEXT("Root at construction: %s"), *GetOwner()->GetRootComponent()->GetName());
		InteractionCapsule->SetupAttachment(GetOwner()->GetRootComponent());
		InteractionCapsule->SetRelativeLocation(FVector(60,0,-20));
		InteractionCapsule->InitCapsuleSize(100,200);
	}
}

Correctly returns the expected result, even though the executed code in that block has no effect, the capsule is neither attached nor size is set:

LogTemp: Error: Constructor before GetOwner()
LogTemp: Error: Root at construction: : CollisionCylinder

And even more troubling is that moving the log message before GetOwner() check results in a crash since the owner is not valid? This leads me again to believe that component initialization might be the issue here. Any insight would be greatly appreciated.