Hello,
I’m trying to get the metadata “apiSchemas” (I don’t use getAppliedSchemas because that does not include my custom schemas) but when the destructor of ItemVector (std::vector<pxr::UsdPrim>) returned by SchemasListOp.GetAppliedItems() is called, the engine (most of the time) crashes.
I’m new to this and would appreciate any help, thank you!
The error:
Exception thrown at 0x00007FFBF29D961E (UnrealEditor-Core.dll) in UnrealEditor.exe: 0xC0000005: Access violation reading location 0xFFFFFFFFFFFFFFFF.
The code:
TArray<FString> GetPrimAPISchemas(const UE::FUsdPrim &Prim)
{
if (!Prim || !Prim.IsValid()) return {};
TArray<FString> SchemaTokensVec;
UE::FVtValue SchemasValue;
if (!Prim.GetMetadata(TEXT("apiSchemas"), SchemasValue)) return {};
FScopedUsdAllocs Allocs;
{
const auto &SchemasUsdValue = SchemasValue.GetUsdValue();
if (!SchemasUsdValue.IsHolding<pxr::SdfListOp<pxr::TfToken>>()) return {};
const auto &SchemasListOp =
SchemasUsdValue.UncheckedGet<pxr::SdfListOp<pxr::TfToken>>();
const auto SchemaTokens = SchemasListOp.GetAppliedItems();
for (const auto &SchemaToken : SchemaTokens)
{
SchemaTokensVec.Add(SchemaToken.GetText());
}
}
return SchemaTokensVec;
}
The callstack
UnrealEditor-Core.dll!00007ffbf29e0419() (Unknown Source:0)
UnrealEditor-Core.dll!00007ffbf22bf60c() (Unknown Source:0)
UnrealEditor-UsdXR.dll!operator delete(void * Ptr, unsigned __int64 Size) Line 9 (c:\Program Files\Epic Games\UE_5.6\Engine\Source\Runtime\Core\Public\HAL\PerModuleInline.inl:9)
[Inline Frame] UnrealEditor-UsdXR.dll!std::_Deallocate(void * _Ptr, unsigned __int64 _Bytes) Line 293 (c:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\VC\Tools\MSVC\14.50.35717\include\xmemory:293)
[Inline Frame] UnrealEditor-UsdXR.dll!std::allocator<pxrInternal_v0_25_2__pxrReserved__::TfToken>::deallocate(pxrInternal_v0_25_2__pxrReserved__::TfToken * const _Ptr, const unsigned __int64 _Count) Line 989 (c:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\VC\Tools\MSVC\14.50.35717\include\xmemory:989)
[Inline Frame] UnrealEditor-UsdXR.dll!std::vector<pxrInternal_v0_25_2__pxrReserved__::TfToken,std::allocator<pxrInternal_v0_25_2__pxrReserved__::TfToken>>::_Tidy() Line 2093 (c:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\VC\Tools\MSVC\14.50.35717\include\vector:2093)
[Inline Frame] UnrealEditor-UsdXR.dll!std::vector<pxrInternal_v0_25_2__pxrReserved__::TfToken,std::allocator<pxrInternal_v0_25_2__pxrReserved__::TfToken>>::{dtor}() Line 830 (c:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\VC\Tools\MSVC\14.50.35717\include\vector:830)
UnrealEditor-UsdXR.dll!UsdXRUtils::GetPrimAPISchemas(const UE::FUsdPrim & Prim) Line 49 (e:\Projects\UsdXR\UsdXRUnreal\Plugins\UsdXR\Source\UsdXR\Private\UsdXRUtils.cpp:49)
[Inline Frame] UnrealEditor-UsdXR.dll!FUsdXRModule::AddXRComponentsToPrim(const UE::FUsdPrim &) Line 64 (e:\Projects\UsdXR\UsdXRUnreal\Plugins\UsdXR\Source\UsdXR\Private\UsdXR.cpp:64)
UnrealEditor-UsdXR.dll!FUsdXRModule::AddXRComponentsToPrims(const UE::FUsdPrim & RootPrim, AUsdStageActor * StageActor) Line 57 (e:\Projects\UsdXR\UsdXRUnreal\Plugins\UsdXR\Source\UsdXR\Private\UsdXR.cpp:57)
[Inline Frame] UnrealEditor-UsdXR.dll!FUsdXRModule::OnStageLoaded(AUsdStageActor * StageActor) Line 45 (e:\Projects\UsdXR\UsdXRUnreal\Plugins\UsdXR\Source\UsdXR\Private\UsdXR.cpp:45)
UnrealEditor-UsdXR.dll!FUsdXRModule::StartupModule::__l2::<lambda_1>::()::__l2::<lambda_2>::operator()() Line 30 (e:\Projects\UsdXR\UsdXRUnreal\Plugins\UsdXR\Source\UsdXR\Private\UsdXR.cpp:30)
[Inline Frame] UnrealEditor-UsdXR.dll!Invoke(FUsdXRModule::StartupModule::__l2::<lambda_1>::()::__l2::<lambda_2> &) Line 47 (c:\Program Files\Epic Games\UE_5.6\Engine\Source\Runtime\Core\Public\Templates\Invoke.h:47)
[Inline Frame] UnrealEditor-UsdXR.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(FUsdXRModule::StartupModule::__l2::<lambda_1>::()::__l2::<lambda_2> &) Line 320 (c:\Program Files\Epic Games\UE_5.6\Engine\Source\Runtime\Core\Public\Templates\Tuple.h:320)
UnrealEditor-UsdXR.dll!TBaseFunctorDelegateInstance<void __cdecl(void),FDefaultDelegateUserPolicy,``FUsdXRModule::StartupModule'::`2'::<lambda_1>::operator()'::`2'::<lambda_2>>::ExecuteIfSafe() Line 894 (c:\Program Files\Epic Games\UE_5.6\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:894)
UnrealEditor-USDStage.dll!00007ffb8d7e82f1() (Unknown Source:0)
UnrealEditor-USDStage.dll!00007ffb8d86044c() (Unknown Source:0)
UnrealEditor-USDStage.dll!00007ffb8d86cea3() (Unknown Source:0)
UnrealEditor-Engine.dll!00007ffbe6ae3dee() (Unknown Source:0)
UnrealEditor-Engine.dll!00007ffbe7c49435() (Unknown Source:0)