locked
build machine Direct3DFeatureLevelSupport

    Question

  • Hi,

    I have an app which passes the Certification when it being start manually (with the UI or with a script). This part work perfectly fine. My problem happens when I try to run the same script as a post-build step on our build machine. Again, the script works fine, the appcert.exe is started but it get stuck at the step Direct3DFeatureLevelSupport 13/20 (13/23 with the last update). It does not fail or passes, it seems to fall in an infinite loop. I have also tried to start the script manually on the build machine and I do not experience this problem. Any ideas on what could cause this behavior?

    Feel.

    • Edited by FeelCollins Wednesday, March 20, 2013 8:19 PM
    Wednesday, March 20, 2013 3:04 PM

Answers

  • Thanks for sending the files. The TE.ProcessHost.exe process is hung, on which TE.exe is waiting on, and in turn AppCert.exe is waiting as well.

    TE.ProcessHost.exe is hung because it requires an interactive desktop session. Since this whole scenario runs non-interactively, the certification process is hanging.

    The summary is that you need to run appcert.exe interactively, it cannot be run as part of an automated build process that runs non-interactively.

    Thanks,

    Prashant.


    @prashantphadke || Windows Store Developer Solutions #WSDevSol || Want more solutions? See our blog! http://aka.ms/t4vuvz

    Friday, March 29, 2013 5:24 PM
    Moderator

All replies

  • Hi Feel,

    Could you please share the script mentioned above for us to reproduce this issue in house?

    Thanks,


    Min Zhu
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    Thursday, March 21, 2013 4:43 AM
    Moderator
  • We are using Jenkins version 1.504 and the service has admins rights on the build machine. We build using MSBuild.exe "MySolution.sln" /p:configuration=Release,platform=x86.

    The script used like this :

    RunWACKReport.bat "C:\Path\To\Appx\MyApp.appx" "C:\Path\To\output\report.xml"

    RunWACKReport.bat :

    SET package=%~1 SET report=%~2 if "%package%" == "" ( echo Please specify a .appx package exit /B ) if "%report%" == "" ( echo Please specify the location to output the report file exit /B ) SET WACK_DIR=C:\Program Files (x86)\Windows Kits\8.0\App Certification Kit SET WACK_CMD="%WACK_DIR%\appcert.exe" echo ** Deleting old report: %report% del "%report%" echo ** Resetting any previously incomplete WACK report SET CMD=%WACK_CMD% reset echo %CMD% %CMD% echo ** Running new WACK report SET CMD=%WACK_CMD% test -apptype windowsstoreapp -AppxPackagePath "%package%" -reportoutputpath "%report%" echo %CMD% call %CMD%

    The script is really just calling the appcert.exe reset then appcert.exe test -apptype windowsstoreapp -AppxPackagePath "C:\Path\To\Appx\MyApp.appx" -reportoutputpath "C:\Path\To\output\report.xml"

    We also tested directly in command line without using the script and we have the same results. (works on local machine and build machine if done manually, but stuck on step 13 if it goes through the build steps of Jenkins)

    Thanks.

    Thursday, March 21, 2013 1:20 PM
  • Hi Feel,

    Thanks for the update.

    I am trying to involve someone familiar with this topic to further look at this issue. There might be some time delay. Appreciate your patience.
     
    Thank you for your understanding and support.


    Min Zhu
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    Friday, March 22, 2013 2:27 AM
    Moderator
  • Hi FeelCollins,

    Does the above script run through the Jenkins software? What is the Jenkins software running as and what User Identity does the APPCERT.exe get launched as? You can use task manager to check the "Details" tab and then check the "UserName" property for the AppCert.exe that is giving you problems.

    When you run AppCert.exe manually from the command prompt, it should run as your own user identity, but it would be good to know what the user identity is when running APPCERT.exe through the Jenkins software?

    Thanks,

    Prashant.


    @prashantphadke || Windows Store Developer Solutions #WSDevSol || Want more solutions? See our blog! http://aka.ms/t4vuvz

    Monday, March 25, 2013 10:40 PM
    Moderator
  • Hi,
    Jenkins and it's script were launched as an admin user. The user was different when launching it from command line and when launching it from Jenkins, we fixed it so it's now executed as the same user, hence they have the same privilege.
    We still have the same issue though. We can launch APPCERT.exe from command line and it works fine with User X, and when we launch APPCERT.exe from Jenkins it gets executed as User X but get stuck on step 13.
    Thanks
    Tuesday, March 26, 2013 3:52 PM
  • Is that user logged on interactively to the desktop when running Jenkins or is this process automated where everything is running as User X without the User X being logged on to the machine?


    @prashantphadke || Windows Store Developer Solutions #WSDevSol || Want more solutions? See our blog! http://aka.ms/t4vuvz

    Tuesday, March 26, 2013 4:35 PM
    Moderator
  • We tried both : first running Jenkis as an admin User Y while User X was logged in, then running Jenkis as User X while User X was logged in. Both ends up with the same issue.

    • Edited by FeelCollins Tuesday, March 26, 2013 5:35 PM
    Tuesday, March 26, 2013 5:35 PM
  • OK, thanks for clarifying. Is the User X in the same "Session" as the logged on user? Basically, what I am saying is that if you go to Task Manager, go to the details view, right click on the column header (such as "Name") and then select "Select Columns", you should be able to select "Session ID". In the problem state, which Session ID is the AppCert.exe running in, Session 1 or Session 0?

    In any case, can you collect a set of dump files when AppCert.exe is hung and share? To collect a dump file, go to Task Manager, Details view, and then choose the AppCert.exe process while it is hung, right click and then choose "Create Dump File". While this process is hung, collect 3 dump files at equal intervals (say 10 seconds apart) so that we can compare if the process is making any progress or if it is truly hung.

    You can then zip and upload your dump files to SkyDrive. To share files through SkyDrive, follow this link: http://windows.microsoft.com/en-US/skydrive/change-access-permissions-faq 

    Thanks,

    Prashant.


    @prashantphadke || Windows Store Developer Solutions #WSDevSol || Want more solutions? See our blog! http://aka.ms/t4vuvz

    Tuesday, March 26, 2013 9:02 PM
    Moderator
  • I didn't check the Session Id, but here's the link for the dump files : http://sdrv.ms/10kT1jA

    Thank you.

    Thursday, March 28, 2013 3:20 PM
  • I looked at the dump file and it seems that AppCert is hung upon TE.exe when performing checks for Direct3d and is waiting for TE.exe to complete.

    Can you perform the same tests again and instead of capturing dump file for AppCert.exe, capture multiple dump files for TE.exe when AppCert.exe is hung.

    Please also verify the session ID that both processes are running in.

    Just for clarification, this "build process" you are referring to is some type of automated building of the project file, correct?

    Thanks,

    Prashant.


    @prashantphadke || Windows Store Developer Solutions #WSDevSol || Want more solutions? See our blog! http://aka.ms/t4vuvz

    Thursday, March 28, 2013 9:35 PM
    Moderator
  • Here's the dump files : http://sdrv.ms/172RX90 . There was also a TE.ProccessHost.exe process so I added some dump file for them too just in case it can help.

    Thanks.

    Friday, March 29, 2013 2:44 PM
  • Thanks for sending the files. The TE.ProcessHost.exe process is hung, on which TE.exe is waiting on, and in turn AppCert.exe is waiting as well.

    TE.ProcessHost.exe is hung because it requires an interactive desktop session. Since this whole scenario runs non-interactively, the certification process is hanging.

    The summary is that you need to run appcert.exe interactively, it cannot be run as part of an automated build process that runs non-interactively.

    Thanks,

    Prashant.


    @prashantphadke || Windows Store Developer Solutions #WSDevSol || Want more solutions? See our blog! http://aka.ms/t4vuvz

    Friday, March 29, 2013 5:24 PM
    Moderator