[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