Xbox One Submission Validator

When packaging a build for Xbox One, the submission validator reports that PDBs for the FMOD DLLs can’t be found. It seems UE4 sets _NT_SYMBOL_PATH environment variable (which specifies a path the submission validator to look for PDBs) to the binaries folder for the project. If add a step to copy the FMOD PDBs into that folder, the validator then complains that there are PDB files included in the package. Is there an accepted way of solving this situation?

<testresult>
  <component>Symbol Resolution and Bundling</component>
  <warning>Symbol file not found for E:\TeamCity\BuildAgent\work\66b60c86f823414d\DCGame\Saved\StagedBuilds\XboxOne\DCGame\Binaries\XboxOne\fmod.dll. Try specifying a semicolon delimited list of paths where symbols can be found for this file to /symbolpaths via MakePkg (October 2016 and later XDKs) or setting the environment variable _NT_SYMBOL_PATH. The GUID for this PDB is {2E602612-AE68-4BC1-BA5F-985247B58D9C}.</warning>
  <warning>Symbol file not found for E:\TeamCity\BuildAgent\work\66b60c86f823414d\DCGame\Saved\StagedBuilds\XboxOne\DCGame\Binaries\XboxOne\fmodL.dll. Try specifying a semicolon delimited list of paths where symbols can be found for this file to /symbolpaths via MakePkg (October 2016 and later XDKs) or setting the environment variable _NT_SYMBOL_PATH. The GUID for this PDB is {2E38483D-CF79-4939-B5EE-927A69FAB5C6}.</warning>
  <warning>Symbol file not found for E:\TeamCity\BuildAgent\work\66b60c86f823414d\DCGame\Saved\StagedBuilds\XboxOne\DCGame\Binaries\XboxOne\fmodstudio.dll. Try specifying a semicolon delimited list of paths where symbols can be found for this file to /symbolpaths via MakePkg (October 2016 and later XDKs) or setting the environment variable _NT_SYMBOL_PATH. The GUID for this PDB is {DA25E022-DC15-44BC-AE1F-C6A8312AD97B}.</warning>
  <warning>Symbol file not found for E:\TeamCity\BuildAgent\work\66b60c86f823414d\DCGame\Saved\StagedBuilds\XboxOne\DCGame\Binaries\XboxOne\fmodstudioL.dll. Try specifying a semicolon delimited list of paths where symbols can be found for this file to /symbolpaths via MakePkg (October 2016 and later XDKs) or setting the environment variable _NT_SYMBOL_PATH. The GUID for this PDB is {27E1BD2B-9E67-4E1B-91F8-0070E3F2E752}.</warning>
  <warning>Symbol file not found for E:\TeamCity\BuildAgent\work\66b60c86f823414d\DCGame\Saved\StagedBuilds\XboxOne\DCGame\Plugins\FMODStudio\Binaries\XboxOne\fmod.dll. Try specifying a semicolon delimited list of paths where symbols can be found for this file to /symbolpaths via MakePkg (October 2016 and later XDKs) or setting the environment variable _NT_SYMBOL_PATH. The GUID for this PDB is {2E602612-AE68-4BC1-BA5F-985247B58D9C}.</warning>
  <warning>Symbol file not found for E:\TeamCity\BuildAgent\work\66b60c86f823414d\DCGame\Saved\StagedBuilds\XboxOne\DCGame\Plugins\FMODStudio\Binaries\XboxOne\fmodstudio.dll. Try specifying a semicolon delimited list of paths where symbols can be found for this file to /symbolpaths via MakePkg (October 2016 and later XDKs) or setting the environment variable _NT_SYMBOL_PATH. The GUID for this PDB is {DA25E022-DC15-44BC-AE1F-C6A8312AD97B}.</warning>
</testresult>
1 Like

We are also experiencing the same problem, any help would be greatly appreciated!

While waiting for any other suggestions, as a temporary solution, I have modified XboxOnePlatform.Automation.cs to append to the existing value of the _NT_SYMBOL_PATH environment variable instead of overwriting it. This allows to me set it to the path to the Plugins\FMODStudio\Binaries\XBoxOne folder containing the PDBs in my build config, which seems to work.

2 Likes

The submission validator requires PDBs, usually they live next to the DLLs and we include them in the standard package for that reason.

As for the _NT_SYMBOL_PATH, we have not come across this before but looks to be on the UE4 side of things.

could you explain what you did in a bit more detail, I’m having the same issue right now. Thank you!

Hi songofiron.

Basically, the validaition tool uses _NT_SYMBOL_PATH environment variable to know where to look for PDBs. The UE4 build process sets that environment variable, but does not include the path to the FMOD PDBs. The fix I made was to make sure that UE4 adds to _NT_SYMBOL_PATH rather than overwriting it, allowing me to set it on my build machines with the appropriate FMOD path.

So, assuming you are building UE4 from source, you can look in XboxOnePlatform.Automation.cs for where it sets _NT_SYMBOL_PATH. I think the original version is something like:

EnvironmentVariables.Add("_NT_SYMBOL_PATH", Params.GetProjectBinariesPathForPlatform(UnrealTargetPlatform.XboxOne).ToString());

You can then replace that with:

string SymbolPath = Params.GetProjectBinariesPathForPlatform(UnrealTargetPlatform.XboxOne).ToString() + ";" + CommandUtils.GetEnvVar("_NT_SYMBOL_PATH"); EnvironmentVariables.Add("_NT_SYMBOL_PATH", SymbolPath);

so that it keeps the original value as well as adding its own path.

Then, on your build machine you need to set the value of _NT_SYMBOL_PATH to where the FMOD PDBs will be. At the time, this was [MyGame]\Plugins\FMODStudio\Binaries\XBoxOne. My build environment was configured by TeamCity, so how you set this will depend on how you do your builds.

Hope this helps.

1 Like

Amazing! thank you so much this issue has been killing me and I have been racing to get something through to cert. :pray: :pray: :pray: