Description

When duplicating a Generator inside an Environment Query, the action triggers an ensure and stalls the Editor for a few moments.

This issue was reported and tested in 4.19.2 (CL-4033788). It was reproduced in 4.20.1 (CL-4233996) and 4.21 (CL-4255699).

Steps to Reproduce
  1. Open the UE4 Editor
  2. Navigate to the Editor Preferences and enable "Environment Querying System"
  3. Create an Environment Query and add a Generator
  4. Add any Distance Test to the Generator
  5. Create an EQSTestingPawn
  6. Place the EQSTestingPawn in the level
  7. Select the EQSTestingPawn and set the Query Template to the Environment Query created in step 3
  8. In the Environment Query, duplicate the Generator

Results: The action completes but there it hits an ensure

Expected: The action completes with no warnings or errors

Callstack
[2018.08.01-23.26.55:066][964]LogAIGraph: Error: 
 [2018.08.01-23.26.55:066][964]LogOutputDevice: Error: Ensure condition failed: CurrentTransaction [File:d:\dfp-mutant\Common\UE4\Engine\Source\Editor\UnrealEd\Private\EditorTransaction.cpp] [Line: 1014] 
 
 >    UE4Editor-UnrealEd.dll!UTransBuffer::IsObjectTransacting(const UObject * Object) Line 1014    C++
      UE4Editor-Engine.dll!UEdGraphPin::ResolveReferencesToPin(UEdGraphPin * Pin, bool bStrictValidation) Line 1725    C++
      UE4Editor-Engine.dll!UEdGraphPin::Serialize(FArchive & Ar) Line 1669    C++
      UE4Editor-Engine.dll!UEdGraphPin::SerializePin(FArchive & Ar, UEdGraphPin * & PinRef, int ArrayIdx, UEdGraphPin * RequestingPin, EPinResolveType ResolveType, TArray<UEdGraphPin *,FDefaultAllocator> & OldPins) Line 1961    C++
      UE4Editor-Engine.dll!UEdGraphPin::SerializePinArray(FArchive & Ar, TArray<UEdGraphPin *,FDefaultAllocator> & ArrayRef, UEdGraphPin * RequestingPin, EPinResolveType ResolveType) Line 1786    C++
      UE4Editor-Engine.dll!UEdGraphNode::Serialize(FArchive & Ar) Line 498    C++
      UE4Editor-CoreUObject.dll!StaticDuplicateObjectEx(FObjectDuplicationParameters & Parameters) Line 2070    C++
      UE4Editor-CoreUObject.dll!StaticDuplicateObject(const UObject * SourceObject, UObject * DestOuter, const FName DestName, EObjectFlags FlagMask, UClass * DestClass, EDuplicateMode::Type DuplicateMode, EInternalObjectFlags InternalFlagsMask) Line 1960    C++
      UE4Editor-AIModule.dll!UEnvQueryManager::CreateQueryInstance(const UEnvQuery * Template, EEnvQueryRunMode::Type RunMode) Line 676    C++
      UE4Editor-AIModule.dll!UEnvQueryManager::PrepareQueryInstance(const FEnvQueryRequest & Request, EEnvQueryRunMode::Type RunMode) Line 275    C++
      UE4Editor-AIModule.dll!AEQSTestingPawn::MakeOneStep() Line 250    C++
      UE4Editor-AIModule.dll!UEnvQueryManager::NotifyAssetUpdate(UEnvQuery * Query) Line 183    C++
      UE4Editor-AIModule.dll!UEnvQueryTest::PostEditChangeProperty(FPropertyChangedEvent & PropertyChangedEvent) Line 332    C++
      UE4Editor-CoreUObject.dll!UObject::PostEditChange() Line 333    C++
      UE4Editor-UnrealEd.dll!ImportObjectProperties(FImportObjectParams & InParams) Line 740    C++
      UE4Editor-UnrealEd.dll!ImportObjectProperties(unsigned char * DestData, const wchar_t * SourceText, UStruct * ObjectStruct, UObject * SubobjectRoot, UObject * SubobjectOuter, FFeedbackContext * Warn, int Depth, int LineNumber, FObjectInstancingGraph * InInstanceGraph, const TMap<AActor *,AActor *,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<AActor *,AActor *,0> > * ActorRemapper) Line 815    C++
      UE4Editor-UnrealEd.dll!ImportProperties(unsigned char * DestData, const wchar_t * SourceText, UStruct * ObjectStruct, UObject * SubobjectRoot, UObject * SubobjectOuter, FFeedbackContext * Warn, int Depth, FObjectInstancingGraph & InstanceGraph, const TMap<AActor *,AActor *,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<AActor *,AActor *,0> > * ActorRemapper) Line 589    C++
      UE4Editor-UnrealEd.dll!ImportObjectProperties(FImportObjectParams & InParams) Line 707    C++
      UE4Editor-UnrealEd.dll!ImportObjectProperties(unsigned char * DestData, const wchar_t * SourceText, UStruct * ObjectStruct, UObject * SubobjectRoot, UObject * SubobjectOuter, FFeedbackContext * Warn, int Depth, int LineNumber, FObjectInstancingGraph * InInstanceGraph, const TMap<AActor *,AActor *,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<AActor *,AActor *,0> > * ActorRemapper) Line 815    C++
      UE4Editor-UnrealEd.dll!FCustomizableTextObjectFactory::ProcessBuffer(UObject * InParent, EObjectFlags Flags, const wchar_t * Buffer) Line 4834    C++
      UE4Editor-UnrealEd.dll!FEdGraphUtilities::ImportNodesFromText(UEdGraph * DestinationGraph, const FString & TextToImport, TSet<UEdGraphNode *,DefaultKeyFuncs<UEdGraphNode *,0>,FDefaultSetAllocator> & ImportedNodeSet) Line 382    C++
      UE4Editor-AIGraph.dll!FAIGraphEditor::PasteNodesHere(const FVector2D & Location) Line 366    C++
      UE4Editor-AIGraph.dll!FAIGraphEditor::PasteNodes() Line 308    C++
      UE4Editor-AIGraph.dll!TBaseRawMethodDelegateInstance<0,FAIGraphEditor,void __cdecl(void)>::ExecuteIfSafe() Line 503    C++
      UE4Editor-Slate.dll!FUICommandList::ExecuteAction(const TSharedRef<FUICommandInfo const ,0> InUICommandInfo) Line 97    C++
      UE4Editor-Slate.dll!SMenuEntryBlock::OnClicked(bool bCheckBoxClicked) Line 1028    C++
      UE4Editor-Slate.dll!SMenuEntryBlock::OnMenuItemButtonClicked() Line 988    C++
      UE4Editor-Slate.dll!TMemberFunctionCaller<SMenuEntryBlock,FReply (__cdecl SMenuEntryBlock::*)(void) __ptr64>::operator()<>() Line 156    C++
      UE4Editor-Slate.dll!UE4Tuple_Private::TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter<TMemberFunctionCaller<SMenuEntryBlock,FReply (__cdecl SMenuEntryBlock::*)(void) __ptr64> >(TMemberFunctionCaller<SMenuEntryBlock,FReply (__cdecl SMenuEntryBlock::*)(void)> && Func) Line 498    C++
      UE4Editor-Slate.dll!TBaseSPMethodDelegateInstance<0,SMenuEntryBlock,0,FReply __cdecl(void)>::Execute() Line 269    C++
      UE4Editor-Slate.dll!TBaseDelegate<FReply>::Execute() Line 537    C++
      UE4Editor-Slate.dll!SButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 282    C++
      UE4Editor-Slate.dll!SMenuEntryButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 385    C++
      UE4Editor-Slate.dll!FSlateApplication::RoutePointerUpEvent::__l8::<lambda>(const FArrangedWidget & TargetWidget, const FPointerEvent & Event) Line 5440    C++
      UE4Editor-Slate.dll!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,FReply <lambda>(const FArrangedWidget &, const FPointerEvent &) >(FSlateApplication * ThisApplication, FEventRouter::FToLeafmostPolicy RoutingPolicy, FPointerEvent EventCopy, const FSlateApplication::RoutePointerUpEvent::__l8::FReply <lambda>(const FArrangedWidget &, const FPointerEvent &) & Lambda) Line 266    C++
      UE4Editor-Slate.dll!FSlateApplication::RoutePointerUpEvent(FWidgetPath & WidgetsUnderPointer, FPointerEvent & PointerEvent) Line 5429    C++
      UE4Editor-Slate.dll!FSlateApplication::ProcessMouseButtonUpEvent(FPointerEvent & MouseEvent) Line 5929    C++
      UE4Editor-Slate.dll!FSlateApplication::OnMouseUp(const EMouseButtons::Type Button, const FVector2D CursorPos) Line 5909    C++
      UE4Editor-ApplicationCore.dll!FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage & DeferredMessage) Line 1726    C++
      UE4Editor-ApplicationCore.dll!FWindowsApplication::DeferMessage(TSharedPtr<FWindowsWindow,0> & NativeWindow, HWND__ * InHWnd, unsigned int InMessage, unsigned __int64 InWParam, __int64 InLParam, int MouseX, int MouseY, unsigned int RawInputFlags) Line 2172    C++
      UE4Editor-ApplicationCore.dll!FWindowsApplication::ProcessMessage(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 889    C++
      UE4Editor-ApplicationCore.dll!FWindowsApplication::AppWndProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 726    C++
      [External Code]    
      UE4Editor-ApplicationCore.dll!FWindowsPlatformApplicationMisc::PumpMessages(bool bFromMainLoop) Line 129    C++
      UE4Editor.exe!FEngineLoop::Tick() Line 3263    C++
      UE4Editor.exe!GuardedMain(const wchar_t * CmdLine, HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, int nCmdShow) Line 166    C++
      UE4Editor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow) Line 209    C++
      [External Code]

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-62481 in the post.

3
Login to Vote

Won't Fix
ComponentUE - AI
Affects Versions4.19.24.20.14.21
CreatedAug 3, 2018
ResolvedAug 18, 2021
UpdatedAug 18, 2021