Problem with crash in StaticMesh

I create a static mesh as a sub component to an actor and want the mesh to be visible in editor as well as in play

This is my test routine i have copied from the internet

void UCSWScene::test(bool inPlay)
{
               // Build a simple pyramid after play has begun
               // Mesh description will hold all the geometry, uv, normals going into the static mesh
               FMeshDescription meshDesc;
               FStaticMeshAttributes Attributes(meshDesc);
               Attributes.Register();
    
               FMeshDescriptionBuilder meshDescBuilder;
               meshDescBuilder.SetMeshDescription(&meshDesc);
               meshDescBuilder.EnablePolyGroups();
               meshDescBuilder.SetNumUVLayers(1);
    
               // Create the 5 vertices needed for the shape
               TArray< FVertexID > vertexIDs; vertexIDs.SetNum(3);
    
               vertexIDs[0] = meshDescBuilder.AppendVertex(FVector(0.0, 0.0, 0.0)); // Apex
               vertexIDs[1] = meshDescBuilder.AppendVertex(FVector(100.0, 0.0, 0.0)); // Corner 1
               vertexIDs[2] = meshDescBuilder.AppendVertex(FVector(100.0, 0.0, -100.0)); // Corner 2
               
    
               // Array to store all the vertex instances (3 per face)
               TArray< FVertexInstanceID > vertexInsts;
    
               // Face 1 (Faces towards -X) vertex instances
               FVertexInstanceID instance = meshDescBuilder.AppendInstance(vertexIDs[0]);
               meshDescBuilder.SetInstanceNormal(instance, FVector(0, 1, 0));
               meshDescBuilder.SetInstanceUV(instance, FVector2D(0, 1), 0);
               meshDescBuilder.SetInstanceColor(instance, FVector4f(1.0f, 1.0f, 1.0f, 1.0f));
               vertexInsts.Add(instance);
    
               instance = meshDescBuilder.AppendInstance(vertexIDs[1]);
               meshDescBuilder.SetInstanceNormal(instance, FVector(0, 1, 0));
               meshDescBuilder.SetInstanceUV(instance, FVector2D(0, 0), 0);
               meshDescBuilder.SetInstanceColor(instance, FVector4f(1.0f, 1.0f, 1.0f, 1.0f));
               vertexInsts.Add(instance);
    
               instance = meshDescBuilder.AppendInstance(vertexIDs[2]);
               meshDescBuilder.SetInstanceNormal(instance, FVector(0, 1, 0));
               meshDescBuilder.SetInstanceUV(instance, FVector2D(1, 0), 0);
               meshDescBuilder.SetInstanceColor(instance, FVector4f(1.0f, 1.0f, 1.0f, 1.0f));
               vertexInsts.Add(instance);
                          
    
               // Allocate a polygon group
               FPolygonGroupID polygonGroup = meshDescBuilder.AppendPolygonGroup();
    
               // Add triangles to mesh description
               meshDescBuilder.AppendTriangle(vertexInsts[2], vertexInsts[1], vertexInsts[0], polygonGroup);
               
               // At least one material must be added
               TObjectPtr<UStaticMesh> staticMesh;
               
               if(inPlay)
                          staticMesh = NewObject<UStaticMesh>(this);
               else
                          staticMesh = CreateDefaultSubobject<UStaticMesh>(TEXT("Oahh"),true);
    
               staticMesh->GetStaticMaterials().Add(FStaticMaterial());
    
               UStaticMesh::FBuildMeshDescriptionsParams mdParams;
               mdParams.bBuildSimpleCollision = true;
               mdParams.bFastBuild = true;
    
               // Build static mesh
               TArray<const FMeshDescription*> meshDescPtrs;
               meshDescPtrs.Emplace(&meshDesc);
               staticMesh->BuildFromMeshDescriptions(meshDescPtrs, mdParams);
    
               // Assign new static mesh to the static mesh component
               _smComp->SetStaticMesh(staticMesh);
}

This is the constructor

UCSWScene::UCSWScene(const FObjectInitializer& ObjectInitializer): Super(ObjectInitializer)
{
           PrimaryComponentTick.bCanEverTick = true;

           // Register callbacks
           registerPropertyUpdate("MapUrls", &UCSWScene::onMapUrlsPropertyUpdate);
                      
           initSceneManager();

           //SetMobility(EComponentMobility::Static);

           _smComp = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("smComp"), true);

           _smComp->SetupAttachment(this);

}

I generate this from a parent actor

ACSWWorld::ACSWWorld()
{
          // Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
           PrimaryActorTick.bCanEverTick = true;

           cswInitializeUnrealGlue();

           Scene = CreateDefaultSubobject<UCSWScene>(TEXT("Scene"));

           SetRootComponent(Scene);


           //Scene->test(true);


           FTransform m;

           m.SetFromMatrix(cswMatrix4<double>::UEMatrix4(cswMatrix4<double>::GZ_2_UE()));

           Scene->SetWorldTransform(m);
           
           DefaultCamera = CreateDefaultSubobject<UCSWCamera>(TEXT("Camera"));
}

And this is the BeginPlay

// Called when the game starts or when spawned

void ACSWWorld::BeginPlay()
{
           Super::BeginPlay();
           
           Scene->test(true);
}

Now if I call the “test(true)” method from begin play the geometry is created on play and shuts down ok. multple instances of cswWorld can be created/destroyed

If I call the “test(true)” method from actor constructor the geometry is created in editor and shuts down ok when closed/removed multiple times. Actor destructor is executed ok BUT it crashes on press play ?

Error Message is “A FRenderResource was deleted without being released first!”