You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
Fixing lots of places which created USTRUCTs with operator new and passed them to FMessageEndpoint::Publish or Send, wich crashes when ASAN is used.
The messaging system destroys these objects with FMemory::Free, which has different alignment logic than operator new when ASAN is used, resulting in a crash. #jira none #rnx #rb Jerome.Delattre, Matt.Peters #ROBOMERGE-SOURCE: CL 17116813 in //UE5/Main/... #ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924) [CL 17116851 by mihnea balta in ue5-release-engine-test branch]
This commit is contained in:
@@ -242,9 +242,7 @@ bool FTargetDeviceService::Start()
|
||||
ClaimHost = FPlatformProcess::ComputerName();
|
||||
ClaimUser = FPlatformProcess::UserName(false);
|
||||
|
||||
// message is going to be deleted by FMemory::Free() (see FMessageContext destructor), so allocate it with Malloc
|
||||
void* Memory = FMemory::Malloc(sizeof(FTargetDeviceClaimed), alignof(FTargetDeviceClaimed));
|
||||
MessageEndpoint->Publish(new(Memory) FTargetDeviceClaimed(DeviceName, ClaimHost, ClaimUser));
|
||||
MessageEndpoint->Publish(FMessageEndpoint::MakeMessage<FTargetDeviceClaimed>(DeviceName, ClaimHost, ClaimUser));
|
||||
|
||||
Running = true;
|
||||
}
|
||||
@@ -258,8 +256,7 @@ void FTargetDeviceService::Stop()
|
||||
if (Running)
|
||||
{
|
||||
// message is going to be deleted by FMemory::Free() (see FMessageContext destructor), so allocate it with Malloc
|
||||
void* Memory = FMemory::Malloc(sizeof(FTargetDeviceUnclaimed), alignof(FTargetDeviceUnclaimed));
|
||||
MessageEndpoint->Publish(new(Memory) FTargetDeviceUnclaimed(DeviceName, FPlatformProcess::ComputerName(), FPlatformProcess::UserName(false)));
|
||||
MessageEndpoint->Publish(FMessageEndpoint::MakeMessage<FTargetDeviceUnclaimed>(DeviceName, FPlatformProcess::ComputerName(), FPlatformProcess::UserName(false)));
|
||||
FPlatformProcess::SleepNoStats(0.01);
|
||||
|
||||
// Only stop the device if we care about device claiming
|
||||
@@ -356,9 +353,7 @@ void FTargetDeviceService::HandleClaimedMessage(const FTargetDeviceClaimed& Mess
|
||||
{
|
||||
if (Context->GetSender() != MessageEndpoint->GetAddress())
|
||||
{
|
||||
// message is going to be deleted by FMemory::Free() (see FMessageContext destructor), so allocate it with Malloc
|
||||
void* Memory = FMemory::Malloc(sizeof(FTargetDeviceClaimDenied), alignof(FTargetDeviceClaimDenied));
|
||||
MessageEndpoint->Send(new(Memory) FTargetDeviceClaimDenied(DeviceName, FPlatformProcess::ComputerName(), FPlatformProcess::UserName(false)), Context->GetSender());
|
||||
MessageEndpoint->Send(FMessageEndpoint::MakeMessage<FTargetDeviceClaimDenied>(DeviceName, FPlatformProcess::ComputerName(), FPlatformProcess::UserName(false)), Context->GetSender());
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user