Yeah, it can happen the driver is missing something on Vista. I didn't have any Vista machine for running those tests at the moment of making them and also that time the testbot could not load any drivers on Vista.
The question is, do we care about the test (especially such specific ones as kernel drivers) succeeding on Vista? As I understand, we are close to dropping Vista compatibility in tests entirely, and fixing the test driver for Vista might take a bit of effort. IMO it would be more interesting to have drivers test working on newer Windows machines.
On 11/30/20 17:48, Francois Gouget wrote:
ntoskrnl.exe:ntoskrnl causes the wvista VM to crash. More specifically it happens in test_driver4() on this line:
device = CreateFileA("\\\\.\\WineTestDriver4", 0, 0, NULL, OPEN_EXISTING, 0, NULL);
which presumably is what triggers loading our driver so that makes sense (the patch below can be used to confirm this). The BSOD says:
*** STOP: 0x0000008E (0xC000005,0x956E4AA0,0x922E0AAC,0x00000000) *** dri19512.tmp - Address 956E4AA0 bqse at 956E3000, DateStamp 5fc03305
So likely a NULL pointer dereference. Could this be because of a bug in our test driver?
For now I've set the TestBot so wvista runs WineTest wihout elevated privileges which causes it to skip this test: that's the wvistaadm variant.
The other datapoint is that the wvistau64 VM does not crash when running the 64-bit test but I don't know if that's because of the bitness or some other subtle Windows version difference.
wvista crash (truncated report, network connection loss, screenshot): https://testbot.winehq.org/JobDetails.pl?Key=82678#k101
wvistau64 not crashing: https://testbot.winehq.org/JobDetails.pl?Key=82680#k101
diff --git a/dlls/ntoskrnl.exe/tests/ntoskrnl.c b/dlls/ntoskrnl.exe/tests/ntoskrnl.c index c2285aef6fc..00b845dcb0e 100644 --- a/dlls/ntoskrnl.exe/tests/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/tests/ntoskrnl.c @@ -702,6 +702,7 @@ static void test_driver4(void) DeleteFileA(filename); return; }
exit(0);
device = CreateFileA("\\.\WineTestDriver4", 0, 0, NULL, OPEN_EXISTING, 0, NULL); ok(device != INVALID_HANDLE_VALUE, "failed to open device: %u\n", GetLastError());