RyroNZ / UE4MasterServer

This is a plugin for Unreal Engine 4 that adds server registration, deregistration etc with a master server.
http://ryanpost.me
zlib License
223 stars 73 forks source link

Crashing when registering/refreshing #4

Closed Dids closed 8 years ago

Dids commented 8 years ago

Whenever I try to register a new server or refresh the server list (eg. whenever I try to connect to the server), UE just decides to crash.

MachineId:EEB3EC164EFA109BABF400B976C80297
EpicAccountId:a11e237e436949d0a57aad4d403f57fc

Access violation - code c0000005 (first/second chance not available)

""

UE4Editor_Core!scalable_msize() [d:\depot\ue4\engine\source\thirdparty\inteltbb\inteltbb-4.0\src\tbbmalloc\frontend.cpp:2615]
UE4Editor_Core!FMallocTBB::Realloc() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\private\hal\malloctbb.cpp:70]
UE4Editor_Core!FHeapAllocator::ForAnyElementType::ResizeAllocation() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\public\containers\containerallocationpolicies.h:344]
UE4Editor_MasterServer!TArray<FHttpRequest,FDefaultAllocator>::Emplace<FHttpRequest const & __ptr64>() [c:\program files (x86)\epic games\4.10\engine\source\runtime\core\public\containers\array.h:1735]
UE4Editor_MasterServer!UMasterServerFunctions::TransmitRequest() [c:\users\didan\documents\unreal projects\hideordie\plugins\masterserver\source\masterserver\private\masterserverfunctions.cpp:77]
UE4Editor_CoreUObject!UFunction::Invoke() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\class.cpp:4198]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:484]
UE4Editor_CoreUObject!UObject::ProcessContextOpcode() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1755]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:698]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:608]
UE4Editor_CoreUObject!UObject::execVirtualFunction() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1842]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:698]
UE4Editor_CoreUObject!UFunction::Invoke() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\class.cpp:4198]
UE4Editor_CoreUObject!UObject::ProcessEvent() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1053]
UE4Editor_Engine!AActor::ProcessEvent() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\actor.cpp:580]
UE4Editor_Engine!FInputActionHandlerDynamicSignature::Execute() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\classes\components\inputcomponent.h:93]
UE4Editor_Engine!FInputActionUnifiedDelegate::Execute() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\classes\components\inputcomponent.h:189]
UE4Editor_Engine!UPlayerInput::ProcessInputStack() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\userinterface\playerinput.cpp:1117]
UE4Editor_Engine!APlayerController::ProcessPlayerInput() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\playercontroller.cpp:2281]
UE4Editor_Engine!APlayerController::TickPlayerInput() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\playercontroller.cpp:3816]
UE4Editor_Engine!APlayerController::PlayerTick() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\playercontroller.cpp:1950]
UE4Editor_Engine!APlayerController::TickActor() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\playercontroller.cpp:3892]
UE4Editor_Engine!FActorTickFunction::ExecuteTick() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\actor.cpp:107]
UE4Editor_Engine!FTickFunctionTask::DoTask() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\ticktaskmanager.cpp:141]
UE4Editor_Engine!TGraphTask<FTickFunctionTask>::ExecuteTask() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\public\async\taskgraphinterfaces.h:779]
UE4Editor_Core!FTaskThread::ProcessTasks() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\private\async\taskgraph.cpp:539]
UE4Editor_Core!FTaskThread::ProcessTasksUntilQuit() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\private\async\taskgraph.cpp:340]
UE4Editor_Core!FTaskGraphImplementation::WaitUntilTasksComplete() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\private\async\taskgraph.cpp:1140]
UE4Editor_Engine!FTaskGraphInterface::WaitUntilTaskCompletes() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\public\async\taskgraphinterfaces.h:212]
UE4Editor_Engine!FTickTaskSequencer::ReleaseTickGroup() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\ticktaskmanager.cpp:285]
UE4Editor_Engine!FTickTaskManager::RunTickGroup() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\ticktaskmanager.cpp:1206]
UE4Editor_Engine!UWorld::RunTickGroup() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\leveltick.cpp:701]
UE4Editor_Engine!UWorld::Tick() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\leveltick.cpp:1150]
UE4Editor_UnrealEd!UEditorEngine::Tick() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\editor\unrealed\private\editorengine.cpp:1347]
UE4Editor_UnrealEd!UUnrealEdEngine::Tick() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\editor\unrealed\private\unrealedengine.cpp:361]
UE4Editor!FEngineLoop::Tick() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\launchengineloop.cpp:2427]
UE4Editor!GuardedMain() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\launch.cpp:142]
UE4Editor!GuardedMainWrapper() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
UE4Editor!WinMain() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\windows\launchwindows.cpp:200]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:264]
kernel32
ntdll
Dids commented 8 years ago

It seems like an array issue (out of bounds etc)?

Generating report for minidump

Application version 4.10.0
 ... built from changelist 2758231

OS version 10.0.0.10586
Running 8 x64 processors
Exception was "Access violation - code c0000005 (first/second chance not available)"

Source context from "engine/source/runtime/core/public/containers/array.h"

<SOURCE START>
  996           /**
  997            * Finds an item by predicate.
  998            *
  999            * @param Pred The predicate to match.
 1000            *
 1001            * @returns Index to the first matching element, or INDEX_NONE if none is
 1002            *          found.
 1003            */
 1004           template <typename Predicate>
 1005           int32 IndexOfByPredicate(Predicate Pred) const
 1006           {
 1007               const ElementType* RESTRICT Start = GetData();
 1008               for (const ElementType* RESTRICT Data = Start, *RESTRICT DataEnd = Start + ArrayNum; Data != DataEnd; ++Data)
 1009               {
 1010 *****             if (Pred(*Data))
 1011                   {
 1012                       return static_cast<int32>(Data - Start);
 1013                   }
 1014               }
 1015               return INDEX_NONE;
 1016           }
 1017       
 1018           /**
 1019            * Finds an item by key (assuming the ElementType overloads operator== for
 1020            * the comparison).
 1021            *
 1022            * @param Key The key to search by.
 1023            *
 1024            * @returns Pointer to the first matching element, or nullptr if none is found.
 1025            */
<SOURCE END>

<CALLSTACK START>
UE4Editor_MasterServer!TArray<TScriptDelegate<FWeakObjectPtr>,FDefaultAllocator>::IndexOfByPredicate<<lambda_4db425c7b9b27a04c1485d21013dafcd> >() [c:\program files (x86)\epic games\4.10\engine\source\runtime\core\public\containers\array.h:1011]
UE4Editor_MasterServer!TBaseDynamicMulticastDelegate<FWeakObjectPtr,void,enum EHttpResponse,float>::__Internal_RemoveDynamic<UMasterServerFunctions>() [c:\program files (x86)\epic games\4.10\engine\source\runtime\core\public\delegates\delegatesignatureimpl_variadics.inl:1057]
UE4Editor_MasterServer!UMasterServerFunctions::RegisterServer() [c:\users\didan\documents\unreal projects\hideordie\plugins\masterserver\source\masterserver\private\masterserverfunctions.cpp:372]
UE4Editor_HideOrDie!UHODGameInstance::StartHostingGame() [c:\users\didan\documents\unreal projects\hideordie\source\hideordie\hodgameinstance.cpp:88]
UE4Editor_CoreUObject!UFunction::Invoke() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\class.cpp:4198]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:484]
UE4Editor_CoreUObject!UObject::ProcessContextOpcode() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1755]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:698]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:608]
UE4Editor_CoreUObject!UObject::execVirtualFunction() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1842]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:698]
UE4Editor_CoreUObject!UFunction::Invoke() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\class.cpp:4198]
UE4Editor_CoreUObject!UObject::ProcessEvent() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1053]
UE4Editor_Engine!AActor::ProcessEvent() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\actor.cpp:580]
UE4Editor_Engine!FInputActionHandlerDynamicSignature::Execute() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\classes\components\inputcomponent.h:93]
UE4Editor_Engine!FInputActionUnifiedDelegate::Execute() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\classes\components\inputcomponent.h:189]
UE4Editor_Engine!UPlayerInput::ProcessInputStack() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\userinterface\playerinput.cpp:1117]
UE4Editor_Engine!APlayerController::ProcessPlayerInput() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\playercontroller.cpp:2281]
UE4Editor_Engine!APlayerController::TickPlayerInput() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\playercontroller.cpp:3816]
UE4Editor_Engine!APlayerController::PlayerTick() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\playercontroller.cpp:1950]
UE4Editor_Engine!APlayerController::TickActor() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\playercontroller.cpp:3892]
UE4Editor_Engine!FActorTickFunction::ExecuteTick() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\actor.cpp:107]
UE4Editor_Engine!FTickFunctionTask::DoTask() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\ticktaskmanager.cpp:141]
UE4Editor_Engine!TGraphTask<FTickFunctionTask>::ExecuteTask() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\public\async\taskgraphinterfaces.h:779]
UE4Editor_Core!FTaskThread::ProcessTasks() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\private\async\taskgraph.cpp:539]
UE4Editor_Core!FTaskThread::ProcessTasksUntilQuit() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\private\async\taskgraph.cpp:340]
UE4Editor_Core!FTaskGraphImplementation::WaitUntilTasksComplete() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\private\async\taskgraph.cpp:1140]
UE4Editor_Engine!FTaskGraphInterface::WaitUntilTaskCompletes() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\public\async\taskgraphinterfaces.h:212]
UE4Editor_Engine!FTickTaskSequencer::ReleaseTickGroup() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\ticktaskmanager.cpp:285]
UE4Editor_Engine!FTickTaskManager::RunTickGroup() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\ticktaskmanager.cpp:1206]
UE4Editor_Engine!UWorld::RunTickGroup() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\leveltick.cpp:701]
UE4Editor_Engine!UWorld::Tick() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\engine\private\leveltick.cpp:1150]
UE4Editor_UnrealEd!UEditorEngine::Tick() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\editor\unrealed\private\editorengine.cpp:1347]
UE4Editor_UnrealEd!UUnrealEdEngine::Tick() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\editor\unrealed\private\unrealedengine.cpp:361]
UE4Editor!FEngineLoop::Tick() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\launchengineloop.cpp:2427]
UE4Editor!GuardedMain() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\launch.cpp:142]
UE4Editor!GuardedMainWrapper() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
UE4Editor!WinMain() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\windows\launchwindows.cpp:200]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:264]
kernel32
ntdll
<CALLSTACK END>
RyroNZ commented 8 years ago

Hey, does it appear to do it the second time you attempt to transmit a request? Ie. First time succeeds and second time fails. I'll take a look at this tommorw and see if I can replicate it (inter ally I have refined this and longer use it as a plugin so it doesn't get tested much on new UE4 versions)

Dids commented 8 years ago

Nope, sadly it appears to happen the first time a function on MasterServer is called.

I did just try debugging the entire project, and it's throwing a breakpoint on the following (internal) line:

ensureMsgf(this->IsBound(), TEXT("Unable to bind delegate to '%s' (function might not be marked as a UFUNCTION)"), InMacroFunctionName);

I see that it's trying to call MyGameInstance::OnServerRegistered, then throwing the previous line.

EDIT: Nevermind that, that might actually just be a bug in UE4/VS debugging.

Dids commented 8 years ago

After stepping over the delegate breakpoints, I got to the meat of the issue.

It would seem like MasterServerFunctions is calling TransmitRequest, and there's a TArray allocation issue, possibly a pointer gone wild?

EDIT: I think it's the RequestQueue property that's causing the issue, still drilling down.

RyroNZ commented 8 years ago

USTRUCT(BlueprintType)

struct FHttpRequest

{

GENERATED_USTRUCT_BODY()

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HTTP Request")

FString TheDest;

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HTTP Request")

FString TheData;

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HTTP Request")

FString mID;

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HTTP Request")

FString qID;

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HTTP Request")

FString delim;

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HTTP Request")

FString RequestVerb;

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HTTP Request")

EHttpRequestType RequestType;

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HTTP Request")

FString JsonObjectField;

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HTTP Request")

EHttpResponse ResponseType;

FServerInformation UpdateServer;

void SetData(FString newData)

{

TheData = newData;

}

void SetDestination(FString& newDest)

{

TheDest = newDest;

}

void SetModuleInfo(FString& newMID, FString& newQID)

{

mID = newMID;

qID = newQID;

}

void SetRequestType(EHttpRequestType NewRequestType)

{

RequestType = NewRequestType;

switch (RequestType)

{

case EHttpRequestType::HRT_ReceiveServerList:

RequestVerb = "GET";

TheDest = "/?ReceiveServerList=True";

break;

case EHttpRequestType::HRT_RegisterServer:

RequestVerb = "PUT";

JsonObjectField = "ServerRegistration";

break;

case EHttpRequestType::HRT_UnregisterServer:

RequestVerb = "PUT";

JsonObjectField = "ServerDeregistration";

break;

case EHttpRequestType::HRT_CheckIn:

RequestVerb = "PUT";

JsonObjectField = "ServerCheckIn";

break;

}

}

FHttpRequest()

{

delim = ""; TheDest = ""; TheData = "/?"; mID = ""; qID = ""; RequestVerb = "GET"; RequestType = EHttpRequestType::HRT_None; JsonObjectField = ""; ResponseType = EHttpResponse::HR_None;

}

};

On 26 Nov 2015 10:55 p.m., Pauli Jokela notifications@github.com wrote:

Whenever I try to register a new server or refresh the server list (eg. whenever I try to connect to the server), UE just decides to crash.

I'm assuming this is not because I'm using EHttpResponse objects instead of FHttpResponse?

MachineId:EEB3EC164EFA109BABF400B976C80297 EpicAccountId:a11e237e436949d0a57aad4d403f57fc

Access violation - code c0000005 (first/second chance not available)

""

UE4Editor_Core!scalable_msize() [d:\depot\ue4\engine\source\thirdparty\inteltbb\inteltbb-4.0\src\tbbmalloc\frontend.cpp:2615] UE4EditorCore!FMallocTBB::Realloc() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\core\private\hal\malloctbb.cpp:70] UE4EditorCore!FHeapAllocator::ForAnyElementType::ResizeAllocation() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\core\public\containers\containerallocationpolicies.h:344] UE4Editor_MasterServer!TArray<FHttpRequest,FDefaultAllocator>::Emplace<FHttpRequest const & __ptr64>() [c:\program files (x86)\epic games\4.10\engine\source\runtime\core\public\containers\array.h:1735] UE4Editor_MasterServer!UMasterServerFunctions::TransmitRequest() [c:\users\didan\documents\unreal projects\hideordie\plugins\masterserver\source\masterserver\private\masterserverfunctions.cpp:77] UE4EditorCoreUObject!UFunction::Invoke() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\class.cpp:4198] UE4EditorCoreUObject!UObject::CallFunction() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:484] UE4EditorCoreUObject!UObject::ProcessContextOpcode() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1755] UE4EditorCoreUObject!UObject::ProcessInternal() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:698] UE4EditorCoreUObject!UObject::CallFunction() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:608] UE4EditorCoreUObject!UObject::execVirtualFunction() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1842] UE4EditorCoreUObject!UObject::ProcessInternal() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:698] UE4EditorCoreUObject!UFunction::Invoke() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\class.cpp:4198] UE4EditorCoreUObject!UObject::ProcessEvent() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1053] UE4EditorEngine!AActor::ProcessEvent() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\actor.cpp:580] UE4EditorEngine!FInputActionHandlerDynamicSignature::Execute() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\classes\components\inputcomponent.h:93] UE4EditorEngine!FInputActionUnifiedDelegate::Execute() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\classes\components\inputcomponent.h:189] UE4EditorEngine!UPlayerInput::ProcessInputStack() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\userinterface\playerinput.cpp:1117] UE4EditorEngine!APlayerController::ProcessPlayerInput() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\playercontroller.cpp:2281] UE4EditorEngine!APlayerController::TickPlayerInput() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\playercontroller.cpp:3816] UE4EditorEngine!APlayerController::PlayerTick() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\playercontroller.cpp:1950] UE4EditorEngine!APlayerController::TickActor() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\playercontroller.cpp:3892] UE4EditorEngine!FActorTickFunction::ExecuteTick() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\actor.cpp:107] UE4EditorEngine!FTickFunctionTask::DoTask() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\ticktaskmanager.cpp:141] UE4EditorEngine!TGraphTask::ExecuteTask() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\core\public\async\taskgraphinterfaces.h:779] UE4EditorCore!FTaskThread::ProcessTasks() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\core\private\async\taskgraph.cpp:539] UE4EditorCore!FTaskThread::ProcessTasksUntilQuit() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\core\private\async\taskgraph.cpp:340] UE4EditorCore!FTaskGraphImplementation::WaitUntilTasksComplete() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\core\private\async\taskgraph.cpp:1140] UE4EditorEngine!FTaskGraphInterface::WaitUntilTaskCompletes() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\core\public\async\taskgraphinterfaces.h:212] UE4EditorEngine!FTickTaskSequencer::ReleaseTickGroup() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\ticktaskmanager.cpp:285] UE4EditorEngine!FTickTaskManager::RunTickGroup() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\ticktaskmanager.cpp:1206] UE4EditorEngine!UWorld::RunTickGroup() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\leveltick.cpp:701] UE4EditorEngine!UWorld::Tick() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\leveltick.cpp:1150] UE4EditorUnrealEd!UEditorEngine::Tick() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\editor\unrealed\private\editorengine.cpp:1347] UE4EditorUnrealEd!UUnrealEdEngine::Tick() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\editor\unrealed\private\unrealedengine.cpp:361] UE4Editor!FEngineLoop::Tick() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\launch\private\launchengineloop.cpp:2427] UE4Editor!GuardedMain() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\launch\private\launch.cpp:142] UE4Editor!GuardedMainWrapper() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\launch\private\windows\launchwindows.cpp:126] UE4Editor!WinMain() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\launch\private\windows\launchwindows.cpp:200] UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:264] kernel32 ntdll

Reply to this email directly or view it on GitHubhttps://github.com/RyroNZ/UE4MasterServer/issues/4.

RyroNZ commented 8 years ago

Are you trying to pass a EHttpRequest into the transmit request? That's probably it, you can see the definition of the FHttpResponse in the masterserverfunctions header, I believe it will make it clear. Otherwise, if doesn't help I will get back to you in the morning :

On 26 Nov 2015 10:55 p.m., Pauli Jokela notifications@github.com wrote:

Whenever I try to register a new server or refresh the server list (eg. whenever I try to connect to the server), UE just decides to crash.

I'm assuming this is not because I'm using EHttpResponse objects instead of FHttpResponse?

MachineId:EEB3EC164EFA109BABF400B976C80297 EpicAccountId:a11e237e436949d0a57aad4d403f57fc

Access violation - code c0000005 (first/second chance not available)

""

UE4Editor_Core!scalable_msize() [d:\depot\ue4\engine\source\thirdparty\inteltbb\inteltbb-4.0\src\tbbmalloc\frontend.cpp:2615] UE4EditorCore!FMallocTBB::Realloc() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\core\private\hal\malloctbb.cpp:70] UE4EditorCore!FHeapAllocator::ForAnyElementType::ResizeAllocation() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\core\public\containers\containerallocationpolicies.h:344] UE4Editor_MasterServer!TArray<FHttpRequest,FDefaultAllocator>::Emplace<FHttpRequest const & __ptr64>() [c:\program files (x86)\epic games\4.10\engine\source\runtime\core\public\containers\array.h:1735] UE4Editor_MasterServer!UMasterServerFunctions::TransmitRequest() [c:\users\didan\documents\unreal projects\hideordie\plugins\masterserver\source\masterserver\private\masterserverfunctions.cpp:77] UE4EditorCoreUObject!UFunction::Invoke() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\class.cpp:4198] UE4EditorCoreUObject!UObject::CallFunction() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:484] UE4EditorCoreUObject!UObject::ProcessContextOpcode() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1755] UE4EditorCoreUObject!UObject::ProcessInternal() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:698] UE4EditorCoreUObject!UObject::CallFunction() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:608] UE4EditorCoreUObject!UObject::execVirtualFunction() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1842] UE4EditorCoreUObject!UObject::ProcessInternal() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:698] UE4EditorCoreUObject!UFunction::Invoke() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\class.cpp:4198] UE4EditorCoreUObject!UObject::ProcessEvent() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1053] UE4EditorEngine!AActor::ProcessEvent() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\actor.cpp:580] UE4EditorEngine!FInputActionHandlerDynamicSignature::Execute() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\classes\components\inputcomponent.h:93] UE4EditorEngine!FInputActionUnifiedDelegate::Execute() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\classes\components\inputcomponent.h:189] UE4EditorEngine!UPlayerInput::ProcessInputStack() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\userinterface\playerinput.cpp:1117] UE4EditorEngine!APlayerController::ProcessPlayerInput() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\playercontroller.cpp:2281] UE4EditorEngine!APlayerController::TickPlayerInput() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\playercontroller.cpp:3816] UE4EditorEngine!APlayerController::PlayerTick() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\playercontroller.cpp:1950] UE4EditorEngine!APlayerController::TickActor() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\playercontroller.cpp:3892] UE4EditorEngine!FActorTickFunction::ExecuteTick() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\actor.cpp:107] UE4EditorEngine!FTickFunctionTask::DoTask() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\ticktaskmanager.cpp:141] UE4EditorEngine!TGraphTask::ExecuteTask() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\core\public\async\taskgraphinterfaces.h:779] UE4EditorCore!FTaskThread::ProcessTasks() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\core\private\async\taskgraph.cpp:539] UE4EditorCore!FTaskThread::ProcessTasksUntilQuit() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\core\private\async\taskgraph.cpp:340] UE4EditorCore!FTaskGraphImplementation::WaitUntilTasksComplete() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\core\private\async\taskgraph.cpp:1140] UE4EditorEngine!FTaskGraphInterface::WaitUntilTaskCompletes() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\core\public\async\taskgraphinterfaces.h:212] UE4EditorEngine!FTickTaskSequencer::ReleaseTickGroup() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\ticktaskmanager.cpp:285] UE4EditorEngine!FTickTaskManager::RunTickGroup() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\ticktaskmanager.cpp:1206] UE4EditorEngine!UWorld::RunTickGroup() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\leveltick.cpp:701] UE4EditorEngine!UWorld::Tick() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\engine\private\leveltick.cpp:1150] UE4EditorUnrealEd!UEditorEngine::Tick() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\editor\unrealed\private\editorengine.cpp:1347] UE4EditorUnrealEd!UUnrealEdEngine::Tick() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\editor\unrealed\private\unrealedengine.cpp:361] UE4Editor!FEngineLoop::Tick() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\launch\private\launchengineloop.cpp:2427] UE4Editor!GuardedMain() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\launch\private\launch.cpp:142] UE4Editor!GuardedMainWrapper() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\launch\private\windows\launchwindows.cpp:126] UE4Editor!WinMain() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\launch\private\windows\launchwindows.cpp:200] UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:264] kernel32 ntdll

Reply to this email directly or view it on GitHubhttps://github.com/RyroNZ/UE4MasterServer/issues/4.

Dids commented 8 years ago

No, the entire "FHttpResponse" thing was just a typo in the README.md, as far as I can see (had to be EHttpResponse instead, when defining the delegates).

I'm unable to get a clear picture on what's actually causing the crash, because depending on what function I call (ie. register server, refresh server list etc.), it produces a different crash, all pointing to a memory-related issue (released pointers etc.).

Dids commented 8 years ago

When registering a new server, the crashes seem to be pointing at the following two lines in MasterServerFunctions.cpp:

ServerRegisteredEvent.RemoveDynamic(this, &UMasterServerFunctions::OnRegisteredServer);
ServerRegisteredEvent.AddDynamic(this, &UMasterServerFunctions::OnRegisteredServer);
Dids commented 8 years ago

Managed to figure out. Since I'm new to UE (but a long time user of C++), I didn't know that I had to set the UMasterServerFunctions property as a UPROPERTY(). After I did that, everything started working as it should.

RyroNZ commented 8 years ago

Ah woops browsing on my phone and didn't see you fixed already! Good job :)

On 27 Nov 2015 1:10 a.m., Pauli Jokela notifications@github.com wrote:

Managed to figure out. Since I'm new to UE (but a long time user of C++), I didn't know that I had to set the UMasterServerFunctions property as a UPROPERTY(). After I did that, everything started working as it should.

Reply to this email directly or view it on GitHubhttps://github.com/RyroNZ/UE4MasterServer/issues/4#issuecomment-159897890.

RyroNZ commented 8 years ago

Oh OK yeah that would of gone to the output window - simply marking any function you wish to use dynamic delegates with as UFUNCTION() should fix :)

On 27 Nov 2015 12:23 a.m., Pauli Jokela notifications@github.com wrote:

Nope, sadly it appears to happen the first time a function on MasterServer is called.

I did just try debugging the entire project, and it's throwing a breakpoint on the following (internal) line:

ensureMsgf(this->IsBound(), TEXT("Unable to bind delegate to '%s' (function might not be marked as a UFUNCTION)"), InMacroFunctionName);

I see that it's trying to call *MyGameInstance::OnServerRegistered, then throwing the previous line.

Reply to this email directly or view it on GitHubhttps://github.com/RyroNZ/UE4MasterServer/issues/4#issuecomment-159888978.

Dids commented 8 years ago

Thanks for the help. :)