// Writes barrier section - called for every segment. void TrackGen::AddBarriers() { AddSection("Left Side"); Attnum("start width", "m", "4.0"); Attnum("end width", "m", "4.0"); Attstr("surface", "grass"); EndSection(); AddSection("Left Border"); Attnum("width", "m", "0.5"); Attnum("height", "m", "0.05"); Attstr("surface", "curb-5cm-r"); Attstr("style", "plan"); EndSection(); AddSection("Left Barrier"); Attnum("width", "m", "0.1"); Attnum("height", "m", "1.0"); Attstr("surface", "barrier"); Attstr("style", "curb"); EndSection(); _output.write("\n", 1); AddSection("Right Side"); Attnum("start width", "m", "4.0"); Attnum("end width", "m", "4.0"); Attstr("surface", "grass"); EndSection(); AddSection("Right Border"); Attnum("width", "m", "0.5"); Attnum("height", "m", "0.05"); Attstr("surface", "curb-5cm-r"); Attstr("style", "plan"); EndSection(); AddSection("Right Barrier"); Attnum("width", "m", "0.1"); Attnum("height", "m", "1.0"); Attstr("surface", "barrier"); Attstr("style", "curb"); EndSection(); }
void FGenericCrashContext::SerializeContentToBuffer() { // Must conform against: // https://www.securecoding.cert.org/confluence/display/seccode/SIG30-C.+Call+only+asynchronous-safe+functions+within+signal+handlers AddHeader(); BeginSection( TEXT( "RuntimeProperties" ) ); AddCrashProperty( TEXT( "Version" ), (int32)ECrashDescVersions::VER_2_AddedNewProperties ); // ProcessId will be used by the crash report client to get more information about the crashed process. // It should be enough to open the process, get the memory stats, a list of loaded modules etc. // It means that the crashed process needs to be alive as long as the crash report client is working on the process. // Proposal, not implemented yet. AddCrashProperty( TEXT( "ProcessId" ), FPlatformProcess::GetCurrentProcessId() ); AddCrashProperty( TEXT( "IsInternalBuild" ), (int32)NCachedCrashContextProperties::bIsInternalBuild ); AddCrashProperty( TEXT( "IsPerforceBuild" ), (int32)NCachedCrashContextProperties::bIsPerforceBuild ); AddCrashProperty( TEXT( "IsSourceDistribution" ), (int32)NCachedCrashContextProperties::bIsSourceDistribution ); // Added 'editor/game open time till crash' // Add common crash properties. AddCrashProperty( TEXT( "GameName" ), FApp::GetGameName() ); AddCrashProperty(TEXT("ExecutableName"), *NCachedCrashContextProperties::ExecutableName); AddCrashProperty( TEXT( "BuildConfiguration" ), EBuildConfigurations::ToString( FApp::GetBuildConfiguration() ) ); AddCrashProperty(TEXT("PlatformName"), *NCachedCrashContextProperties::PlatformName); AddCrashProperty(TEXT("PlatformNameIni"), *NCachedCrashContextProperties::PlatformNameIni); AddCrashProperty( TEXT( "EngineMode" ), FPlatformMisc::GetEngineMode() ); AddCrashProperty( TEXT( "EngineVersion" ), *GEngineVersion.ToString() ); AddCrashProperty( TEXT( "CommandLine" ), FCommandLine::IsInitialized() ? FCommandLine::Get() : TEXT("") ); AddCrashProperty( TEXT( "LanguageLCID" ), FInternationalization::Get().GetCurrentCulture()->GetLCID() ); AddCrashProperty(TEXT("DefaultLocale"), *NCachedCrashContextProperties::DefaultLocale); AddCrashProperty( TEXT( "IsUE4Release" ), (int32)NCachedCrashContextProperties::bIsUE4Release); // Remove periods from user names to match AutoReporter user names // The name prefix is read by CrashRepository.AddNewCrash in the website code const bool bSendUserName = NCachedCrashContextProperties::bIsInternalBuild; AddCrashProperty( TEXT( "UserName" ), bSendUserName ? *NCachedCrashContextProperties::UserName.Replace( TEXT( "." ), TEXT( "" ) ) : TEXT( "" ) ); AddCrashProperty(TEXT("BaseDir"), *NCachedCrashContextProperties::BaseDir); AddCrashProperty(TEXT("RootDir"), *NCachedCrashContextProperties::RootDir); AddCrashProperty(TEXT("MachineId"), *NCachedCrashContextProperties::MachineIdStr); AddCrashProperty(TEXT("EpicAccountId"), *NCachedCrashContextProperties::EpicAccountId); AddCrashProperty( TEXT( "CallStack" ), TEXT( "" ) ); AddCrashProperty( TEXT( "SourceContext" ), TEXT( "" ) ); AddCrashProperty( TEXT( "UserDescription" ), TEXT( "" ) ); AddCrashProperty( TEXT( "ErrorMessage" ), (const TCHAR*)GErrorMessage ); // GErrorMessage may be broken. // Add misc stats. AddCrashProperty(TEXT("MiscNumberOfCores"), NCachedCrashContextProperties::NumberOfCores); AddCrashProperty(TEXT("MiscNumberOfCoresIncludingHyperthreads"), NCachedCrashContextProperties::NumberOfCoresIncludingHyperthreads); AddCrashProperty( TEXT( "MiscIs64bitOperatingSystem" ), (int32)FPlatformMisc::Is64bitOperatingSystem() ); AddCrashProperty(TEXT("MiscCPUVendor"), *NCachedCrashContextProperties::CPUVendor); AddCrashProperty(TEXT("MiscCPUBrand"), *NCachedCrashContextProperties::CPUBrand); AddCrashProperty(TEXT("MiscPrimaryGPUBrand"), *NCachedCrashContextProperties::PrimaryGPUBrand); AddCrashProperty(TEXT("MiscOSVersionMajor"), *NCachedCrashContextProperties::OsVersion); AddCrashProperty(TEXT("MiscOSVersionMinor"), *NCachedCrashContextProperties::OsSubVersion); AddCrashProperty( TEXT( "CrashDumpMode" ), NCachedCrashContextProperties::CrashDumpMode ); // @TODO yrx 2014-10-08 Move to the crash report client. /*if( CanUseUnsafeAPI() ) { uint64 AppDiskTotalNumberOfBytes = 0; uint64 AppDiskNumberOfFreeBytes = 0; FPlatformMisc::GetDiskTotalAndFreeSpace( FPlatformProcess::BaseDir(), AppDiskTotalNumberOfBytes, AppDiskNumberOfFreeBytes ); AddCrashProperty( TEXT( "MiscAppDiskTotalNumberOfBytes" ), AppDiskTotalNumberOfBytes ); AddCrashProperty( TEXT( "MiscAppDiskNumberOfFreeBytes" ), AppDiskNumberOfFreeBytes ); }*/ // FPlatformMemory::GetConstants is called in the GCreateMalloc, so we can assume it is always valid. { // Add memory stats. const FPlatformMemoryConstants& MemConstants = FPlatformMemory::GetConstants(); AddCrashProperty( TEXT( "MemoryStatsTotalPhysical" ), (uint64)MemConstants.TotalPhysical ); AddCrashProperty( TEXT( "MemoryStatsTotalVirtual" ), (uint64)MemConstants.TotalVirtual ); AddCrashProperty( TEXT( "MemoryStatsPageSize" ), (uint64)MemConstants.PageSize ); AddCrashProperty( TEXT( "MemoryStatsTotalPhysicalGB" ), MemConstants.TotalPhysicalGB ); } AddCrashProperty( TEXT( "MemoryStatsAvailablePhysical" ), (uint64)CrashMemoryStats.AvailablePhysical ); AddCrashProperty( TEXT( "MemoryStatsAvailableVirtual" ), (uint64)CrashMemoryStats.AvailableVirtual ); AddCrashProperty( TEXT( "MemoryStatsUsedPhysical" ), (uint64)CrashMemoryStats.UsedPhysical ); AddCrashProperty( TEXT( "MemoryStatsPeakUsedPhysical" ), (uint64)CrashMemoryStats.PeakUsedPhysical ); AddCrashProperty( TEXT( "MemoryStatsUsedVirtual" ), (uint64)CrashMemoryStats.UsedVirtual ); AddCrashProperty( TEXT( "MemoryStatsPeakUsedVirtual" ), (uint64)CrashMemoryStats.PeakUsedVirtual ); AddCrashProperty( TEXT( "MemoryStatsbIsOOM" ), (int32)FPlatformMemory::bIsOOM ); AddCrashProperty( TEXT( "MemoryStatsOOMAllocationSize"), (uint64)FPlatformMemory::OOMAllocationSize ); AddCrashProperty( TEXT( "MemoryStatsOOMAllocationAlignment"), (int32)FPlatformMemory::OOMAllocationAlignment ); //Architecture //CrashedModuleName //LoadedModules EndSection( TEXT( "RuntimeProperties" ) ); // Add platform specific properties. BeginSection( TEXT("PlatformProperties") ); AddPlatformSpecificProperties(); EndSection( TEXT( "PlatformProperties" ) ); AddFooter(); }
void FGenericCrashContext::AddFooter() { EndSection( TEXT( "FGenericCrashContext" ) ); }
// Information heading the XML. void TrackGen::FileInfo() { // Creator information. _line.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); _line.append("<!--"); _line.append("file\t\t\t: "); _line.append(_fileName); _line.append("\n"); _line.append("auto generated \t\t: by Jordan Blake\n"); _line.append("version\t\t\t\t: v 0.1 01/05/2014\n"); _line.append("email\t\t\t\t: [email protected]\n"); _line.append("-->\n"); _line.append("<!--"); _line.append("This program is free software; you can redistribute it and/or modify it\n"); _line.append("under the terms of the GNU General Public License as published by\n"); _line.append("the Free Software Foundation; either version 2 of the License, or\n"); _line.append("(at your option) any later version\n"); _line.append("-->\n\n"); _line.append("<!DOCTYPE params SYSTEM \"../../../src/libs/tgf/params.dtd\" [\n"); _line.append("<!-- general definitions for tracks -->\n"); _line.append("<!ENTITY default-surfaces SYSTEM \"../../../data/tracks/surfaces.xml\">\n"); _line.append("]>\n\n"); _output.write(_line.c_str(), _line.size()); // Beginning of track information. _line ="<params name=\""; _line.append(_trackName); _line.append("\" type=\"param\" mode=\"mw\">\n"); _output.write(_line.c_str(), _line.size()); _tabCount++; _line =Tab(); _line.append("<section name=\"Surfaces\">&default-surfaces;</section>\n"); _output.write(_line.c_str(), _line.size()); AddSection("Header"); Attstr("name", _trackName.c_str()); Attstr("category", "road"); _line =Tab(); _line.append("<attnum name=\"version\" val=\"4\" />\n"); _output.write(_line.c_str(), _line.size()); //Attstr("version", "4"); Attstr("author", "Jordan Blake"); Attstr("description", "Procedurally generated track."); EndSection(); _output.write("\n", 1); AddSection("Graphic"); Attstr("3d description", _graphicsName.c_str()); AddSection("Terrain Generation"); Attnum("track step", "m", "20"); Attnum("border margin", "m", "50"); Attnum("border step", "m", "30"); Attnum("border height", "m", "15"); Attstr("orientation", "clockwise"); EndSection(); EndSection(); _output.write("\n", 1); AddSection("Main Track"); Attnum("width", "m", "15.0"); Attnum("profil steps length", "m", "4.0"); Attstr("surface", "asphalt2-lines"); _output.write("\n", 1); AddBarriers(); AddSection("Pits"); Attstr("side", "right"); Attstr("entry", ""); Attstr("start", ""); Attstr("end", ""); Attstr("exit", ""); Attnum("length", "m", "0.0"); Attnum("width", "m", "0.0"); EndSection(); AddSection("Track Segments"); }
void FGenericCrashContext::SerializeContentToBuffer() { // Must conform against: // https://www.securecoding.cert.org/confluence/display/seccode/SIG30-C.+Call+only+asynchronous-safe+functions+within+signal+handlers AddHeader(); BeginSection( *RuntimePropertiesTag ); AddCrashProperty( TEXT( "CrashVersion" ), (int32)ECrashDescVersions::VER_3_CrashContext ); AddCrashProperty( TEXT( "CrashGUID" ), *NCachedCrashContextProperties::CrashGUID ); AddCrashProperty( TEXT( "ProcessId" ), FPlatformProcess::GetCurrentProcessId() ); AddCrashProperty( TEXT( "IsInternalBuild" ), NCachedCrashContextProperties::bIsInternalBuild ); AddCrashProperty( TEXT( "IsPerforceBuild" ), NCachedCrashContextProperties::bIsPerforceBuild ); AddCrashProperty( TEXT( "IsSourceDistribution" ), NCachedCrashContextProperties::bIsSourceDistribution ); AddCrashProperty( TEXT( "SecondsSinceStart" ), NCachedCrashContextProperties::SecondsSinceStart ); // Add common crash properties. AddCrashProperty( TEXT( "GameName" ), *NCachedCrashContextProperties::GameName ); AddCrashProperty( TEXT( "ExecutableName" ), *NCachedCrashContextProperties::ExecutableName ); AddCrashProperty( TEXT( "BuildConfiguration" ), EBuildConfigurations::ToString( FApp::GetBuildConfiguration() ) ); AddCrashProperty( TEXT( "PlatformName" ), *NCachedCrashContextProperties::PlatformName ); AddCrashProperty( TEXT( "PlatformNameIni" ), *NCachedCrashContextProperties::PlatformNameIni ); AddCrashProperty( TEXT( "EngineMode" ), FPlatformMisc::GetEngineMode() ); AddCrashProperty( TEXT( "EngineVersion" ), *GEngineVersion.ToString() ); AddCrashProperty( TEXT( "CommandLine" ), FCommandLine::IsInitialized() ? FCommandLine::Get() : TEXT( "" ) ); AddCrashProperty( TEXT( "LanguageLCID" ), FInternationalization::Get().GetCurrentCulture()->GetLCID() ); AddCrashProperty( TEXT( "AppDefaultLocale" ), *NCachedCrashContextProperties::DefaultLocale ); AddCrashProperty( TEXT( "IsUE4Release" ), NCachedCrashContextProperties::bIsUE4Release ); // Remove periods from user names to match AutoReporter user names // The name prefix is read by CrashRepository.AddNewCrash in the website code const bool bSendUserName = NCachedCrashContextProperties::bIsInternalBuild; AddCrashProperty( TEXT( "UserName" ), bSendUserName ? *NCachedCrashContextProperties::UserName.Replace( TEXT( "." ), TEXT( "" ) ) : TEXT( "" ) ); AddCrashProperty( TEXT( "BaseDir" ), *NCachedCrashContextProperties::BaseDir ); AddCrashProperty( TEXT( "RootDir" ), *NCachedCrashContextProperties::RootDir ); AddCrashProperty( TEXT( "MachineId" ), *NCachedCrashContextProperties::MachineIdStr ); AddCrashProperty( TEXT( "EpicAccountId" ), *NCachedCrashContextProperties::EpicAccountId ); AddCrashProperty( TEXT( "CallStack" ), TEXT( "" ) ); AddCrashProperty( TEXT( "SourceContext" ), TEXT( "" ) ); AddCrashProperty( TEXT( "UserDescription" ), TEXT( "" ) ); AddCrashProperty( TEXT( "ErrorMessage" ), (const TCHAR*)GErrorMessage ); // GErrorMessage may be broken. AddCrashProperty( TEXT( "CrashDumpMode" ), NCachedCrashContextProperties::CrashDumpMode ); // Add misc stats. AddCrashProperty( TEXT( "Misc.NumberOfCores" ), NCachedCrashContextProperties::NumberOfCores ); AddCrashProperty( TEXT( "Misc.NumberOfCoresIncludingHyperthreads" ), NCachedCrashContextProperties::NumberOfCoresIncludingHyperthreads ); AddCrashProperty( TEXT( "Misc.Is64bitOperatingSystem" ), (int32)FPlatformMisc::Is64bitOperatingSystem() ); AddCrashProperty( TEXT( "Misc.CPUVendor" ), *NCachedCrashContextProperties::CPUVendor ); AddCrashProperty( TEXT( "Misc.CPUBrand" ), *NCachedCrashContextProperties::CPUBrand ); AddCrashProperty( TEXT( "Misc.PrimaryGPUBrand" ), *NCachedCrashContextProperties::PrimaryGPUBrand ); AddCrashProperty( TEXT( "Misc.OSVersionMajor" ), *NCachedCrashContextProperties::OsVersion ); AddCrashProperty( TEXT( "Misc.OSVersionMinor" ), *NCachedCrashContextProperties::OsSubVersion ); // #YRX_Crash: 2015-07-21 Move to the crash report client. /*{ uint64 AppDiskTotalNumberOfBytes = 0; uint64 AppDiskNumberOfFreeBytes = 0; FPlatformMisc::GetDiskTotalAndFreeSpace( FPlatformProcess::BaseDir(), AppDiskTotalNumberOfBytes, AppDiskNumberOfFreeBytes ); AddCrashProperty( TEXT( "Misc.AppDiskTotalNumberOfBytes" ), AppDiskTotalNumberOfBytes ); AddCrashProperty( TEXT( "Misc.AppDiskNumberOfFreeBytes" ), AppDiskNumberOfFreeBytes ); }*/ // FPlatformMemory::GetConstants is called in the GCreateMalloc, so we can assume it is always valid. { // Add memory stats. const FPlatformMemoryConstants& MemConstants = FPlatformMemory::GetConstants(); AddCrashProperty( TEXT( "MemoryStats.TotalPhysical" ), (uint64)MemConstants.TotalPhysical ); AddCrashProperty( TEXT( "MemoryStats.TotalVirtual" ), (uint64)MemConstants.TotalVirtual ); AddCrashProperty( TEXT( "MemoryStats.PageSize" ), (uint64)MemConstants.PageSize ); AddCrashProperty( TEXT( "MemoryStats.TotalPhysicalGB" ), MemConstants.TotalPhysicalGB ); } AddCrashProperty( TEXT( "MemoryStats.AvailablePhysical" ), (uint64)CrashMemoryStats.AvailablePhysical ); AddCrashProperty( TEXT( "MemoryStats.AvailableVirtual" ), (uint64)CrashMemoryStats.AvailableVirtual ); AddCrashProperty( TEXT( "MemoryStats.UsedPhysical" ), (uint64)CrashMemoryStats.UsedPhysical ); AddCrashProperty( TEXT( "MemoryStats.PeakUsedPhysical" ), (uint64)CrashMemoryStats.PeakUsedPhysical ); AddCrashProperty( TEXT( "MemoryStats.UsedVirtual" ), (uint64)CrashMemoryStats.UsedVirtual ); AddCrashProperty( TEXT( "MemoryStats.PeakUsedVirtual" ), (uint64)CrashMemoryStats.PeakUsedVirtual ); AddCrashProperty( TEXT( "MemoryStats.bIsOOM" ), (int32)FPlatformMemory::bIsOOM ); AddCrashProperty( TEXT( "MemoryStats.OOMAllocationSize"), (uint64)FPlatformMemory::OOMAllocationSize ); AddCrashProperty( TEXT( "MemoryStats.OOMAllocationAlignment"), (int32)FPlatformMemory::OOMAllocationAlignment ); //Architecture //CrashedModuleName //LoadedModules EndSection( *RuntimePropertiesTag ); // Add platform specific properties. BeginSection( *PlatformPropertiesTag ); AddPlatformSpecificProperties(); EndSection( *PlatformPropertiesTag ); AddFooter(); }