Open CGeorges opened 4 years ago
I can see this in the logs on crash
[2020.08.11-23.02.41:794][627]LogSourceControl: RunCommand: 'git lfs unlock "Content/Animations/ThirdPerson_AnimBP.uasset"'
[2020.08.11-23.02.42:983][627]LogSourceControl: RunCommand: 'git lfs locks'
[2020.08.11-23.02.43:238][627]LogD3D12RHI: Error: CommandList->Close() failed
at D:/Build/++UE4+Licensee/Sync/Engine/Source/Runtime/D3D12RHI/Private/D3D12CommandList.cpp:134
with error E_OUTOFMEMORY
Full log started from a clean file, boot up UE4 project and checkout 1 file, then crash: PartyTowers.log
Ran UE4 through VS and it seems when doing a checkout theres definitely a memory leak
It's something here in GitSourceControlUtils.cpp but not sure as to what
if (!BranchName.IsEmpty())
{
// Using git diff, we can obtain a list of files that were modified between our current origin and HEAD. Assumes that fetch has been run to get accurate info.
// TODO: should do a fetch (at least periodically).
TArray<FString> Results;
TArray<FString> ErrorMessages;
TArray<FString> ParametersLsRemote;
ParametersLsRemote.Add(TEXT("origin"));
ParametersLsRemote.Add(BranchName);
const bool bResultLsRemote = RunCommand(TEXT("ls-remote"), InPathToGitBinary, InRepositoryRoot, ParametersLsRemote, OnePath, Results, ErrorMessages);
// If the command is successful and there is only 1 line on the output the branch exists on remote
const bool bDiffAgainstRemote = bResultLsRemote && Results.Num();
Results.Reset();
ErrorMessages.Reset();
TArray<FString> ParametersLog;
ParametersLog.Add(TEXT("--pretty=")); // this omits the commit lines, just gets us files
ParametersLog.Add(TEXT("--name-only"));
ParametersLog.Add(bDiffAgainstRemote ? TEXT("HEAD..HEAD@{upstream}") : BranchName);
const bool bResultDiff = RunCommand(TEXT("log"), InPathToGitBinary, InRepositoryRoot, ParametersLog, OnePath, Results, ErrorMessages);
OutErrorMessages.Append(ErrorMessages);
if (bResultDiff)
{
for (const FString& NewerFileName : Results)
{
const FString NewerFilePath = FPaths::ConvertRelativePathToFull(InRepositoryRoot, NewerFileName);
// Find existing corresponding file state to update it (not found would mean new file or not in the current path)
if (FGitSourceControlState* FileStatePtr = OutStates.FindByPredicate([NewerFilePath](FGitSourceControlState& FileState) { return FileState.LocalFilename == NewerFilePath; }))
{
FileStatePtr->bNewerVersionOnServer = true;
}
}
}
}
I've used this fork https://github.com/ProjectBorealis/UE4GitPlugin and shared video memory no longer gets filled.
I'm getting this in 2.17, 4.26, even without running any commands. Just importing some assets and having it automatically check the status is enough to have it run out of video memory.
This is happening to one of my colleges, 4.26. Almost definitely a memory leak. Just trying to check back in a file causes his ram usage to spike up before Unreal crashes.
This is happening to one of my colleges, 4.26. Almost definitely a memory leak. Just trying to check back in a file causes his ram usage to spike up before Unreal crashes.
I haven't really found a solution for this back then, I even bought the commercial solution of this plugin on UE4 marketplace and that one was crashing as well. We switched to Perforce and never looked back.
see https://github.com/SRombauts/UE4GitPlugin/issues/139 that will track the fix
I use UE4GitPlugin and Gitea in a new Top down project, whenever I click "Checkout" or Submit it will crash UE4 with error "Out of video memory...", it seems in a second it fills up 8GB of video memory.