[PATCH] kernel32/tests: Allow failure when loading the 268 bytes minimal PE image.

François Gouget fgouget at free.fr
Sat Jul 17 11:03:32 CDT 2021


On Fri, 16 Jul 2021, Dmitry Timoshkov wrote:
[...]
> I have created this test under Windows 7, so at that time this definitely
> worked. While I'm not opposed to add ERROR_BAD_EXE_FORMAT as a fallback
> error value, I do oppose to changing in the comment Windows7 to Vista,
> Vista is an utterly broken platform in many aspects, promoting its name
> to a not related test result is not fair.

WTH???
Where do you see Vista being promoted?
What the heck is this thing about fairness?
What do your likes and dislikes have to do with the accuracy of the 
comment?


What you could have said is that it's not just the Vista machines that 
are missing from the failure pattern but also w7pro64 which means that 
either the test succeeds or is skipped there. 

https://test.winehq.org/data/patterns.html#kernel32:loader

Another constructive contribution would have been to point to the 
WineTest results that show that the 64-bit test is being run with no 
failure on w7pro64 and no skip message. Then point out that there is 
still some doubt due to the break on line 1123.

https://test.winehq.org/data/2ffcf4402181e7e7e8c322b713924e5738506c88/win7_newtb-w7pro64-64/kernel32:loader.html

So the next step would have been to manually submit a job with a couple 
of extra traces providing direct proof that this test succeeds in a 
32-bit kernel32_test.exe process on w7pro64:

https://testbot.winehq.org/JobDetails.pl?Key=94182&f205=exe32.report#k205
loader.c:918: 16: LoadLibraryA succeeded

That would have proven that yes, this test does succeed on Windows 7, at 
least some in some cases. Leaving us with one question: why does it 
succeed sometimes and not others?


Now you're lucky. I still decided to do some extra tests:

* I have run the tests on various snapshots of the w7u, w7pro64 VMs 
  and my win7u-64 VMware machine. They all show that the service packs 
  do not change the result.

* Looking at just the Windows 7 results, the only one that has the 
  failure is the 32-bit VM. Coincidence?

* But looking at the Windows 8.1 machines we see that it fails on 
  cw-rx460 but not on cw-gtx560. Yet they are both 64-bit and have the 
  same Windows 8.1 version... but not the exact same kernel32 version. 
  Still, no clear pattern appears when adding w8 and w864 to the mix:
    w8        6.3.9600.17056 success
    w864      6.3.9600.17056 success
    cw-rx460  6.3.9600.17415 failure
    cw-gtx560 6.3.9600.19994 success
  Yet another Radeon mystery :-(
  This also tends to invalidate the above '32-bit OS' theory.

* Then I grepped all the WineTest reports which confirmed that the 
  test fails systematically on all Windows 10 >= 1809. This is also 
  confirmed by this TestBot job.
  https://testbot.winehq.org/JobDetails.pl?Key=94183

So to summarize:
* Vista                : 100% success
* Windows 7            : mixed results
* Windows 8.1          : mixed results
* Windows 10 1507-1709 : 100% success
* Windows 10 1809+     : 100% failure

In other words:
* We don't really know what determines whether the test succeeds or 
  fails.

* "minimal image size that Windows7 accepts" is incorrect.
  "minimal image size that some Windows7 accept" would be more correct.
  "minimal image size that Vista accepts" is correct based on our 
      limited Vista results. But it's also imprecise because the test 
      also succeeds on many post-Vista Windows versions.

* Could this have something to do with Microsoft Defender?
  (which cannot be disabled in recent Windows 10 versions and may not 
  like the structure of this test dll)


I'll resubmit this patch with a reworded comment to reflect the current 
knowledge.

-- 
François Gouget <fgouget at free.fr>


More information about the wine-devel mailing list