skip to Main Content

Edit 2
As @Calphalon points out (really appreciate your efforts with the MS engineer on this matter) in his answer, it’s actually caused by a bug when WACK runs on W11.

Edit 1:

Oh no, I ran the certification kit for the brand new UWP app and it failed with the exactly same results… So my development machine is wrong?

Edit 0:

As @user7860670 (thank you) pointed out in his first comment, I then tried to debug the app under the App verifier. Immediately it produced the exact same error. However, in the call stack still no entries of my app were shown. This time I am sure my app’s symbols were loaded

c.

The call stack was also the same as in the dump file. In addition, the breakpoint I added at the very beginning in WinMain could not be reached before the error occurred. It may suggest that the problem is to some extent about the verifier.

Screenshot


Original post:

I am developing an app in UWP (I also use the WinUI library, but the problem occurred before it was introduced into the project) with C++/WinRT. When I use Windows App Cert Kit to test it on my local machine, it always fails to pass the two tests:-

Screenshot

However, the app can be launched manually and there seems to be no crashes and hangs as described in the test result. I have tried to launch and use it in the following 3 ways, and succeeded in all of them:-

  1. Debug it in Visual Studio in x64 Debug/Release on Local Machine
  2. Create its package in Visual Studio, and install it from the package. Then launch it.
  3. Download and install it from my upload in MS Store (Yes, surprisingly, the store allowed it to be published)

For the failure of platform version launch, I feel really confused because I have never used anything related to the OS version in my project. And I have no clue about why it could not be launched.

For the failure of Crashes and hangs test, I copied the dmp file and debugged it in Visual Studio, and it showed that location 0x0 is accessed in gdi32full.dll.

Screenshot.

However, I do not know where in my code the access violation occurs as in the call stack no reference to my app’s entries is present. I think there must be some way to debug it with my source code, but I failed to find it after some search on Google and attempts. I think it cannot show the entries of my app because the folder used by Windows Cert Kit is destroyed after the tests, where the .exe will be no longer there, and I tried to set the symbol path as described in this MS documentation page, but it did not work. I have very few experiences of debugging from binaries, and I am truly sorry that I cannot solve this by myself. The dump file is provided here.

Also, I tried as instructed in this MS documentation page (in the Corrective Actions subsection of the Deployment and launch tests section) to view the event that may point out why the kit failed to launch my app, but there are no such events here (no folder Immersive-Shell):-

Screenshot

My local development machine runs Windows 11 Pro. The app is built with the following platform settings:

Screenshot

I have the whole project on GitHub, and the source code of the UWP app is in the main_GUI folder there.

I really appreciate your time and efforts in advance.

2

Answers


  1. The local WACK test is optional. The local WACK tool will be affected by many reasons of the local device. Trying to upload your package to the Store, and there will be an online WACK test for your app no matter whether the local test failed or not. The Store will only take the result of the online WACK test as standard.

    So for such a scenario, you could upload your package to the Store first, if the Online WACK test failed, that will be a real problem.

    Just talk from the UWP side, there used to be many similar issues reported before. The local WACK test failed but the online WACK test succeed. So you are not the only one who meets this scenario.

    Login or Signup to reply.
  2. After spending 6 weeks with a Microsoft Support Engineer on this subject (same WACK errors and same GDI error message), and running countless tests on various Windows versions, it’s because of a bug in WACK running on Win 11.

    (Although it’s not clear from the original post if they were running WACK on W11, I do get the exact same error on W11 and not W10.)

    From the Microsoft Engineer:

    The version compatibility test that WACK performs triggers the loading
    of a file called vfcompat.dll on Windows 11. That DLL doesn’t exist
    on Windows 10. Vfcompat.dll has a dependency of user32.dll which in
    turns loads in gdi32full.dll which is causing the exception. The fix [for WACK]
    was to remove the user32 dependency on vfcompat.dll.

    So how and which OS the app was built doesn’t affect the outcome. WACK
    is making an API call which will load in different DLLs based on the
    OS version due to the fact there’s been refactoring of the Windows
    code.

    This is also why you only see the GDI error in the event logs when the App is run via WACK, not when the App is run by itself.

    In my testing, I verified that the build OS has no effect. And running an App built on W10 or W11 through WACK works on W10, but not on W11.

    The support engineer is issuing a bug report which will hopefully get WACK fixed to work correctly on W11.

    As noted above, submitting to the store should indeed be fine.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search