Memory allocated with NtAllocateVirtualMemory should be freed with NtFreeVirtualMemory, for consistency.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/kernel32/tests/virtual.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c index 474955630fd..dcaeb147b04 100644 --- a/dlls/kernel32/tests/virtual.c +++ b/dlls/kernel32/tests/virtual.c @@ -454,7 +454,12 @@ static void test_VirtualAlloc(void) MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE); todo_wine ok(status == STATUS_CONFLICTING_ADDRESSES, "NtAllocateVirtualMemory returned %08x\n", status); - if (status == STATUS_SUCCESS) ok(VirtualFree(addr2, 0, MEM_RELEASE), "VirtualFree failed\n"); + if (status == STATUS_SUCCESS) + { + size = 0; + status = pNtFreeVirtualMemory(GetCurrentProcess(), &addr2, &size, MEM_RELEASE); + ok(status == STATUS_SUCCESS, "pNtFreeVirtualMemory return %08x, addr2: %p\n", status, addr2); + }
/* 21 zero bits is valid */ size = 0x1000; @@ -463,7 +468,12 @@ static void test_VirtualAlloc(void) MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE); ok(status == STATUS_SUCCESS || status == STATUS_NO_MEMORY, "NtAllocateVirtualMemory returned %08x\n", status); - if (status == STATUS_SUCCESS) ok(VirtualFree(addr2, 0, MEM_RELEASE), "VirtualFree failed\n"); + if (status == STATUS_SUCCESS) + { + size = 0; + status = pNtFreeVirtualMemory(GetCurrentProcess(), &addr2, &size, MEM_RELEASE); + ok(status == STATUS_SUCCESS, "pNtFreeVirtualMemory return %08x, addr2: %p\n", status, addr2); + }
/* 22 zero bits is invalid */ size = 0x1000; @@ -471,7 +481,12 @@ static void test_VirtualAlloc(void) status = pNtAllocateVirtualMemory(GetCurrentProcess(), &addr2, 22, &size, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE); ok(status == STATUS_INVALID_PARAMETER_3, "NtAllocateVirtualMemory returned %08x\n", status); - if (status == STATUS_SUCCESS) ok(VirtualFree(addr2, 0, MEM_RELEASE), "VirtualFree failed\n"); + if (status == STATUS_SUCCESS) + { + size = 0; + status = pNtFreeVirtualMemory(GetCurrentProcess(), &addr2, &size, MEM_RELEASE); + ok(status == STATUS_SUCCESS, "pNtFreeVirtualMemory return %08x, addr2: %p\n", status, addr2); + }
/* AT_ROUND_TO_PAGE flag is not supported for VirtualAlloc */ SetLastError(0xdeadbeef);
The zero_bits parameter doesn't behave as expected, and some 64bit code use it to allocate memory in the lower 32bit address space.
The expected full behaviour is:
* zero_bits == 0: no constraint on address range * 0 < zero_bits <= 15: returned address should have as many upper bits set to 0, starting at bit 31. In 64bit mode, upper 32bits should all be 0 as well. * 15 < zero_bits <= 31: unsure, but probably same as zero_bits == 15. * zero_bits > 31: (64bit/WoW64 only) zero_bits behaves as a bitmask, as if it was set to the number of leading 0 in the bitmask, works in the whole 64bit range.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/kernel32/tests/virtual.c | 57 ++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 5 deletions(-)
diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c index dcaeb147b04..1778509d2ac 100644 --- a/dlls/kernel32/tests/virtual.c +++ b/dlls/kernel32/tests/virtual.c @@ -228,10 +228,12 @@ static void test_VirtualAllocEx(void) static void test_VirtualAlloc(void) { void *addr1, *addr2; + ULONG zero_bits; DWORD old_prot; MEMORY_BASIC_INFORMATION info; NTSTATUS status; SIZE_T size; + BOOL is_wow64;
SetLastError(0xdeadbeef); addr1 = VirtualAlloc(0, 0, MEM_RESERVE, PAGE_NOACCESS); @@ -461,13 +463,16 @@ static void test_VirtualAlloc(void) ok(status == STATUS_SUCCESS, "pNtFreeVirtualMemory return %08x, addr2: %p\n", status, addr2); }
- /* 21 zero bits is valid */ + /* 1 zero bits should zero 63-31 upper bits */ size = 0x1000; addr2 = NULL; - status = pNtAllocateVirtualMemory(GetCurrentProcess(), &addr2, 21, &size, - MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE); - ok(status == STATUS_SUCCESS || status == STATUS_NO_MEMORY, - "NtAllocateVirtualMemory returned %08x\n", status); + zero_bits = 1; + status = pNtAllocateVirtualMemory(GetCurrentProcess(), &addr2, 1, &size, + MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); + todo_wine + ok((status == STATUS_SUCCESS || broken(status == STATUS_INVALID_PARAMETER_3) /* winxp */) && + ((UINT_PTR)addr2 >> (32 - zero_bits)) == 0, + "NtAllocateVirtualMemory returned %08x, addr2: %p\n", status, addr2); if (status == STATUS_SUCCESS) { size = 0; @@ -475,6 +480,23 @@ static void test_VirtualAlloc(void) ok(status == STATUS_SUCCESS, "pNtFreeVirtualMemory return %08x, addr2: %p\n", status, addr2); }
+ for (zero_bits = 2; zero_bits <= 21; zero_bits++) + { + size = 0x1000; + addr2 = NULL; + status = pNtAllocateVirtualMemory(GetCurrentProcess(), &addr2, zero_bits, &size, + MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); + todo_wine + ok((status == STATUS_SUCCESS || status == STATUS_NO_MEMORY) && ((UINT_PTR)addr2 >> (32 - zero_bits)) == 0, + "NtAllocateVirtualMemory with %d zero_bits returned %08x, addr2: %p\n", zero_bits, status, addr2); + if (status == STATUS_SUCCESS) + { + size = 0; + status = pNtFreeVirtualMemory(GetCurrentProcess(), &addr2, &size, MEM_RELEASE); + ok(status == STATUS_SUCCESS, "pNtFreeVirtualMemory return %08x, addr2: %p\n", status, addr2); + } + } + /* 22 zero bits is invalid */ size = 0x1000; addr2 = NULL; @@ -488,6 +510,31 @@ static void test_VirtualAlloc(void) ok(status == STATUS_SUCCESS, "pNtFreeVirtualMemory return %08x, addr2: %p\n", status, addr2); }
+ /* zero bits > 31 should be considered as bitmask on 64bit and WoW64 */ + size = 0x1000; + addr2 = NULL; + zero_bits = 0x1fffffff; + status = pNtAllocateVirtualMemory(GetCurrentProcess(), &addr2, zero_bits, &size, + MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); + + if (sizeof(void *) == sizeof(int) && (!pIsWow64Process || + !pIsWow64Process( GetCurrentProcess(), &is_wow64 ) || !is_wow64)) + { + ok(status == STATUS_INVALID_PARAMETER_3, "NtAllocateVirtualMemory returned %08x\n", status); + } + else + { + todo_wine + ok(status == STATUS_SUCCESS && ((UINT_PTR)addr2 & ~zero_bits) == 0, + "NtAllocateVirtualMemory returned %08x, addr2: %p\n", status, addr2); + if (status == STATUS_SUCCESS) + { + size = 0; + status = pNtFreeVirtualMemory(GetCurrentProcess(), &addr2, &size, MEM_RELEASE); + ok(status == STATUS_SUCCESS, "pNtFreeVirtualMemory return %08x, addr2: %p\n", status, addr2); + } + } + /* AT_ROUND_TO_PAGE flag is not supported for VirtualAlloc */ SetLastError(0xdeadbeef); addr2 = VirtualAlloc(addr1, 0x1000, MEM_RESERVE | MEM_COMMIT | AT_ROUND_TO_PAGE, PAGE_EXECUTE_READWRITE);
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=52931
Your paranoid android.
=== wvistau64 (32 bit report) ===
kernel32: virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 0, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:2957: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2971: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3096: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3114: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3195: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3219: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 1, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022
=== wvistau64_zh_CN (32 bit report) ===
kernel32: virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 0, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:2957: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2971: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3096: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3114: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3195: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3219: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 1, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022
=== wvistau64_fr (32 bit report) ===
kernel32: virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 0, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:2957: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2971: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3096: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3114: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3195: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3219: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 1, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022
=== wvistau64_he (32 bit report) ===
kernel32: virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 0, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:2957: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2971: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3096: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3114: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3195: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3219: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 1, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022
=== w2008s64 (32 bit report) ===
kernel32: virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 0, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:2957: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2971: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3096: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3114: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3195: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3219: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 1, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022
=== w7u (32 bit report) ===
kernel32: virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 0, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 1, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022
=== w7pro64 (32 bit report) ===
kernel32: virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 0, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:2957: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2971: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3096: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3114: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3195: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3219: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 1, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022
=== w8 (32 bit report) ===
kernel32: virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 0, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:2957: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2971: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3096: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3114: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3195: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3219: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 1, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022
=== w8adm (32 bit report) ===
kernel32: virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 0, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:2957: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2971: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3096: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3114: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3195: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3219: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 1, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022
=== w864 (32 bit report) ===
kernel32: virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 0, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:2957: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2971: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3096: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3114: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3195: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3219: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 1, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022
=== w1064v1507 (32 bit report) ===
kernel32: virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 0, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:2957: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2971: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3096: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3114: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3195: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3219: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 1, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022
=== w1064v1809 (32 bit report) ===
kernel32: virtual.c:490: Test failed: NtAllocateVirtualMemory with 20 zero_bits returned c0000018, addr2: 00000000 virtual.c:490: Test failed: NtAllocateVirtualMemory with 21 zero_bits returned c000000d, addr2: 00000000 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 0, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:2957: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2971: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3096: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3114: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3195: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3219: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2901: Test failed: expected policy flags 1, got 3 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3000: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3015: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3063: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3078: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3259: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3284: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2863: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2902: Test failed: expected policy permanent FALSE, got 1 virtual.c:3321: Test failed: NtSetInformationProcess failed with status c0000022
=== w1064v1809 (64 bit report) ===
kernel32: virtual.c:490: Test failed: NtAllocateVirtualMemory with 20 zero_bits returned c0000018, addr2: 0000000000000000 virtual.c:490: Test failed: NtAllocateVirtualMemory with 21 zero_bits returned c000000d, addr2: 0000000000000000
=== debian9 (32 bit report) ===
kernel32: virtual.c:473: Test succeeded inside todo block: NtAllocateVirtualMemory returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 2 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 3 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 4 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 5 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 6 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 7 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 8 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 9 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 10 zero_bits returned 00000000, addr2: 00223000
=== debian9 (32 bit French report) ===
kernel32: virtual.c:473: Test succeeded inside todo block: NtAllocateVirtualMemory returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 2 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 3 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 4 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 5 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 6 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 7 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 8 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 9 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 10 zero_bits returned 00000000, addr2: 00223000
=== debian9 (32 bit Japanese:Japan report) ===
kernel32: virtual.c:473: Test succeeded inside todo block: NtAllocateVirtualMemory returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 2 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 3 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 4 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 5 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 6 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 7 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 8 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 9 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 10 zero_bits returned 00000000, addr2: 00223000
=== debian9 (32 bit Chinese:China report) ===
kernel32: virtual.c:473: Test succeeded inside todo block: NtAllocateVirtualMemory returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 2 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 3 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 4 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 5 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 6 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 7 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 8 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 9 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 10 zero_bits returned 00000000, addr2: 00223000
=== debian9 (32 bit WoW report) ===
kernel32: virtual.c:473: Test succeeded inside todo block: NtAllocateVirtualMemory returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 2 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 3 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 4 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 5 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 6 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 7 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 8 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 9 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 10 zero_bits returned 00000000, addr2: 00223000
=== debian9 (64 bit WoW report) ===
kernel32: virtual.c:473: Test succeeded inside todo block: NtAllocateVirtualMemory returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 2 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 3 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 4 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 5 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 6 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 7 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 8 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 9 zero_bits returned 00000000, addr2: 00223000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 10 zero_bits returned 00000000, addr2: 00223000
On Tue, May 28, 2019 at 12:15:14PM +0200, Rémi Bernon wrote:
The zero_bits parameter doesn't behave as expected, and some 64bit code use it to allocate memory in the lower 32bit address space.
The expected full behaviour is:
- zero_bits == 0: no constraint on address range
- 0 < zero_bits <= 15: returned address should have as many upper bits set to 0, starting at bit 31. In 64bit mode, upper 32bits should all be 0 as well.
- 15 < zero_bits <= 31: unsure, but probably same as zero_bits == 15.
- zero_bits > 31: (64bit/WoW64 only) zero_bits behaves as a bitmask, as if it was set to the number of leading 0 in the bitmask, works in the whole 64bit range.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com
dlls/kernel32/tests/virtual.c | 57 ++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 5 deletions(-)
diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c index dcaeb147b04..1778509d2ac 100644 --- a/dlls/kernel32/tests/virtual.c +++ b/dlls/kernel32/tests/virtual.c @@ -228,10 +228,12 @@ static void test_VirtualAllocEx(void) static void test_VirtualAlloc(void) { void *addr1, *addr2;
ULONG zero_bits; DWORD old_prot; MEMORY_BASIC_INFORMATION info; NTSTATUS status; SIZE_T size;
BOOL is_wow64;
SetLastError(0xdeadbeef); addr1 = VirtualAlloc(0, 0, MEM_RESERVE, PAGE_NOACCESS);
@@ -461,13 +463,16 @@ static void test_VirtualAlloc(void) ok(status == STATUS_SUCCESS, "pNtFreeVirtualMemory return %08x, addr2: %p\n", status, addr2); }
- /* 21 zero bits is valid */
- /* 1 zero bits should zero 63-31 upper bits */ size = 0x1000; addr2 = NULL;
- status = pNtAllocateVirtualMemory(GetCurrentProcess(), &addr2, 21, &size,
MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);
- ok(status == STATUS_SUCCESS || status == STATUS_NO_MEMORY,
"NtAllocateVirtualMemory returned %08x\n", status);
- zero_bits = 1;
- status = pNtAllocateVirtualMemory(GetCurrentProcess(), &addr2, 1, &size,
MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
- todo_wine
- ok((status == STATUS_SUCCESS || broken(status == STATUS_INVALID_PARAMETER_3) /* winxp */) &&
((UINT_PTR)addr2 >> (32 - zero_bits)) == 0,
if (status == STATUS_SUCCESS) { size = 0;"NtAllocateVirtualMemory returned %08x, addr2: %p\n", status, addr2);
@@ -475,6 +480,23 @@ static void test_VirtualAlloc(void) ok(status == STATUS_SUCCESS, "pNtFreeVirtualMemory return %08x, addr2: %p\n", status, addr2); }
- for (zero_bits = 2; zero_bits <= 21; zero_bits++)
- {
size = 0x1000;
addr2 = NULL;
status = pNtAllocateVirtualMemory(GetCurrentProcess(), &addr2, zero_bits, &size,
MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
todo_wine
ok((status == STATUS_SUCCESS || status == STATUS_NO_MEMORY) && ((UINT_PTR)addr2 >> (32 - zero_bits)) == 0,
"NtAllocateVirtualMemory with %d zero_bits returned %08x, addr2: %p\n", zero_bits, status, addr2);
if (status == STATUS_SUCCESS)
{
size = 0;
status = pNtFreeVirtualMemory(GetCurrentProcess(), &addr2, &size, MEM_RELEASE);
ok(status == STATUS_SUCCESS, "pNtFreeVirtualMemory return %08x, addr2: %p\n", status, addr2);
}
- }
Problem is sometimes these actually work (and so fail the todo_wine):
virtual.c:473: Test succeeded inside todo block: NtAllocateVirtualMemory returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 2 zero_bits returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 3 zero_bits returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 4 zero_bits returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 5 zero_bits returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 6 zero_bits returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 7 zero_bits returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 8 zero_bits returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 9 zero_bits returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 10 zero_bits returned 00000000, addr2: 00222000
Also having these tests in kernel32 seems wrong; though short of adding a new virtual.c to the ntdll tests, I couldn't find a sensible place to put them.
Huw.
On Wed, 2019-05-29 at 10:42 +0100, Huw Davies wrote:
On Tue, May 28, 2019 at 12:15:14PM +0200, Rémi Bernon wrote:
The zero_bits parameter doesn't behave as expected, and some 64bit code use it to allocate memory in the lower 32bit address space.
The expected full behaviour is:
- zero_bits == 0: no constraint on address range
- 0 < zero_bits <= 15: returned address should have as many upper
bits set to 0, starting at bit 31. In 64bit mode, upper 32bits should all be 0 as well.
- 15 < zero_bits <= 31: unsure, but probably same as zero_bits ==
- zero_bits > 31: (64bit/WoW64 only) zero_bits behaves as a
bitmask, as if it was set to the number of leading 0 in the bitmask, works in the whole 64bit range.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com
dlls/kernel32/tests/virtual.c | 57 ++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 5 deletions(-)
diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c index dcaeb147b04..1778509d2ac 100644 --- a/dlls/kernel32/tests/virtual.c +++ b/dlls/kernel32/tests/virtual.c @@ -228,10 +228,12 @@ static void test_VirtualAllocEx(void) static void test_VirtualAlloc(void) { void *addr1, *addr2;
ULONG zero_bits; DWORD old_prot; MEMORY_BASIC_INFORMATION info; NTSTATUS status; SIZE_T size;
BOOL is_wow64;
SetLastError(0xdeadbeef); addr1 = VirtualAlloc(0, 0, MEM_RESERVE, PAGE_NOACCESS);
@@ -461,13 +463,16 @@ static void test_VirtualAlloc(void) ok(status == STATUS_SUCCESS, "pNtFreeVirtualMemory return %08x, addr2: %p\n", status, addr2); }
- /* 21 zero bits is valid */
- /* 1 zero bits should zero 63-31 upper bits */ size = 0x1000; addr2 = NULL;
- status = pNtAllocateVirtualMemory(GetCurrentProcess(), &addr2,
21, &size,
MEM_RESERVE | MEM_COMMIT,
PAGE_EXECUTE_READWRITE);
- ok(status == STATUS_SUCCESS || status == STATUS_NO_MEMORY,
"NtAllocateVirtualMemory returned %08x\n", status);
- zero_bits = 1;
- status = pNtAllocateVirtualMemory(GetCurrentProcess(), &addr2,
1, &size,
MEM_RESERVE | MEM_COMMIT,
PAGE_READWRITE);
- todo_wine
- ok((status == STATUS_SUCCESS || broken(status ==
STATUS_INVALID_PARAMETER_3) /* winxp */) &&
((UINT_PTR)addr2 >> (32 - zero_bits)) == 0,
"NtAllocateVirtualMemory returned %08x, addr2: %p\n",
status, addr2); if (status == STATUS_SUCCESS) { size = 0; @@ -475,6 +480,23 @@ static void test_VirtualAlloc(void) ok(status == STATUS_SUCCESS, "pNtFreeVirtualMemory return %08x, addr2: %p\n", status, addr2); }
- for (zero_bits = 2; zero_bits <= 21; zero_bits++)
- {
size = 0x1000;
addr2 = NULL;
status = pNtAllocateVirtualMemory(GetCurrentProcess(),
&addr2, zero_bits, &size,
MEM_RESERVE |
MEM_COMMIT, PAGE_READWRITE);
todo_wine
ok((status == STATUS_SUCCESS || status ==
STATUS_NO_MEMORY) && ((UINT_PTR)addr2 >> (32 - zero_bits)) == 0,
"NtAllocateVirtualMemory with %d zero_bits returned
%08x, addr2: %p\n", zero_bits, status, addr2);
if (status == STATUS_SUCCESS)
{
size = 0;
status = pNtFreeVirtualMemory(GetCurrentProcess(),
&addr2, &size, MEM_RELEASE);
ok(status == STATUS_SUCCESS, "pNtFreeVirtualMemory
return %08x, addr2: %p\n", status, addr2);
}
- }
Problem is sometimes these actually work (and so fail the todo_wine):
virtual.c:473: Test succeeded inside todo block: NtAllocateVirtualMemory returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 2 zero_bits returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 3 zero_bits returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 4 zero_bits returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 5 zero_bits returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 6 zero_bits returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 7 zero_bits returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 8 zero_bits returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 9 zero_bits returned 00000000, addr2: 00222000 virtual.c:490: Test succeeded inside todo block: NtAllocateVirtualMemory with 10 zero_bits returned 00000000, addr2: 00222000
They work but actually shouldn't, and the later changes will "fix" this. Should I add the todo_wine in the patch that breaks them?
Also having these tests in kernel32 seems wrong; though short of adding a new virtual.c to the ntdll tests, I couldn't find a sensible place to put them.
Huw.
It was my initial intuition, but there wasn't any ntdll tests for these functions, whereas there were already some in kernel32. I can maybe move all the related tests to ntdll instead.
Rémi
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/kernel32/tests/virtual.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c index 1778509d2ac..79eed345910 100644 --- a/dlls/kernel32/tests/virtual.c +++ b/dlls/kernel32/tests/virtual.c @@ -442,6 +442,11 @@ static void test_VirtualAlloc(void) addr2 = VirtualAlloc(addr1, 0x1000, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE); ok(addr2 == addr1, "VirtualAlloc returned %p, expected %p\n", addr2, addr1);
+ /* size_ptr should not be NULL */ + status = pNtAllocateVirtualMemory(GetCurrentProcess(), NULL, 0, NULL, + MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE); + ok(status == STATUS_ACCESS_VIOLATION, "NtAllocateVirtualMemory returned %08x\n", status); + /* allocation conflicts because of 64k align */ size = 0x1000; addr2 = (char *)addr1 + 0x1000;
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=52932
Your paranoid android.
=== wvistau64 (32 bit report) ===
kernel32: virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 0, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:2962: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2976: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3101: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3119: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3200: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3224: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 1, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022
=== wvistau64_zh_CN (32 bit report) ===
kernel32: virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 0, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:2962: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2976: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3101: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3119: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3200: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3224: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 1, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022
=== wvistau64_fr (32 bit report) ===
kernel32: virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 0, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:2962: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2976: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3101: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3119: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3200: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3224: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 1, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022
=== wvistau64_he (32 bit report) ===
kernel32: virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 0, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:2962: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2976: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3101: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3119: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3200: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3224: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 1, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022
=== w2008s64 (32 bit report) ===
kernel32: virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 0, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:2962: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2976: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3101: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3119: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3200: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3224: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 1, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022
=== w7u (32 bit report) ===
kernel32: virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 0, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 1, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022
=== w7pro64 (32 bit report) ===
kernel32: virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 0, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:2962: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2976: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3101: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3119: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3200: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3224: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 1, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022
=== w8 (32 bit report) ===
kernel32: virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 0, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:2962: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2976: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3101: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3119: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3200: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3224: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 1, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022
=== w8adm (32 bit report) ===
kernel32: virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 0, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:2962: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2976: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3101: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3119: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3200: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3224: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 1, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022
=== w864 (32 bit report) ===
kernel32: virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 0, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:2962: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2976: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3101: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3119: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3200: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3224: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 1, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022
=== w1064v1507 (32 bit report) ===
kernel32: virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 0, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:2962: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2976: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3101: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3119: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3200: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3224: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 1, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022
=== w1064v1809 (32 bit report) ===
kernel32: virtual.c:495: Test failed: NtAllocateVirtualMemory with 20 zero_bits returned c0000018, addr2: 00000000 virtual.c:495: Test failed: NtAllocateVirtualMemory with 21 zero_bits returned c000000d, addr2: 00000000 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 0, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:2962: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2976: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3101: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3119: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3200: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3224: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy flags 1, got 3 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3005: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3020: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3068: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3083: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3264: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3289: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2868: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2907: Test failed: expected policy permanent FALSE, got 1 virtual.c:3326: Test failed: NtSetInformationProcess failed with status c0000022
=== w1064v1809 (64 bit report) ===
kernel32: virtual.c:495: Test failed: NtAllocateVirtualMemory with 20 zero_bits returned c0000018, addr2: 0000000000000000 virtual.c:495: Test failed: NtAllocateVirtualMemory with 21 zero_bits returned c000000d, addr2: 0000000000000000
=== debian9 (32 bit report) ===
kernel32: Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x7bcbcd77).
Report errors: kernel32:virtual crashed (c0000005)
=== debian9 (32 bit French report) ===
kernel32: Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x7bcbcd77).
Report errors: kernel32:virtual crashed (c0000005)
=== debian9 (32 bit Japanese:Japan report) ===
kernel32: Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x7bcbcd77).
Report errors: kernel32:virtual crashed (c0000005)
=== debian9 (32 bit Chinese:China report) ===
kernel32: Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x7bcbcd77).
Report errors: kernel32:virtual crashed (c0000005)
=== debian9 (32 bit WoW report) ===
kernel32: Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x7bcbcd77).
Report errors: kernel32:virtual crashed (c0000005)
=== debian9 (64 bit WoW report) ===
kernel32: Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x7bcbcd77).
Report errors: kernel32:virtual crashed (c0000005)
On Tue, May 28, 2019 at 12:15:15PM +0200, Rémi Bernon wrote:
Signed-off-by: Rémi Bernon rbernon@codeweavers.com
dlls/kernel32/tests/virtual.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c index 1778509d2ac..79eed345910 100644 --- a/dlls/kernel32/tests/virtual.c +++ b/dlls/kernel32/tests/virtual.c @@ -442,6 +442,11 @@ static void test_VirtualAlloc(void) addr2 = VirtualAlloc(addr1, 0x1000, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE); ok(addr2 == addr1, "VirtualAlloc returned %p, expected %p\n", addr2, addr1);
- /* size_ptr should not be NULL */
- status = pNtAllocateVirtualMemory(GetCurrentProcess(), NULL, 0, NULL,
MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);
- ok(status == STATUS_ACCESS_VIOLATION, "NtAllocateVirtualMemory returned %08x\n", status);
- /* allocation conflicts because of 64k align */ size = 0x1000; addr2 = (char *)addr1 + 0x1000;
Adding these sort of parameter checking tests (and implementing their behaviour) is generally not useful. Please wait until you find an application which relies on this (I suspect it'll be a long wait!).
But also this causes the tests to crash. You should test the tests after each patch in the series.
../../../tools/runtest -q -P wine -T ../../.. -M kernel32.dll -p kernel32_test.exe virtual && touch virtual.ok wine: Unhandled page fault on read access to 0x00000000 at address 0x7bcc4a86 (thread 0009), starting debugger... Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x7bcc4a86). Register dump: CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b EIP:7bcc4a86 ESP:0096fa50 EBP:0096fba8 EFLAGS:00010206( R- -- I - -P- ) EAX:00000040 EBX:ffffffff ECX:00000000 EDX:00635ffc ESI:00000000 EDI:00003000 Stack dump: 0x0096fa50: 00000000 00000021 0096fb48 7bcc549b 0x0096fa60: 7bd23260 00000000 0096fb48 00000000 0x0096fa70: 00000000 00a30000 0096fb98 00000000 0x0096fa80: 00000000 00000000 0096fb78 7bcc53ba 0x0096fa90: 00000058 0096fadc 0096fab4 00000007 0x0096faa0: 00000004 00230000 0096fbc8 00000000 Backtrace: =>0 0x7bcc4a86 NtAllocateVirtualMemory+0x36(process=<is not available>, ret=<is not available>, zero_bits=<is not available>, size_ptr=<is not available>, type=<is not available>, protect=<is not available>) [/home/daviesh/wine/dlls/ntdll/virtual.c:2466] in ntdll (0x0096fba8) 1 0x005035df test_VirtualAlloc+0x1e1e() [/home/daviesh/wine/dlls/kernel32/tests/virtual.c:446] in kernel32_test (0x0096fc38) 2 0x0050ff5b func_virtual+0x130a() [/home/daviesh/wine/dlls/kernel32/tests/virtual.c:4521] in kernel32_test (0x0096fd28) 3 0x0051f74d main+0x2ac(argc=<is not available>, argv=<is not available>) [/home/daviesh/wine/dlls/kernel32/tests/../../../include/wine/test.h:617] in kernel32_test (0x0096fdf8) 4 0x004013e3 buf+0x4013e2() in kernel32_test (0x0096fed0) 5 0x7b481c32 call_process_entry+0x11() in kernel32 (0x0096fee8) 6 0x7b483d24 start_process+0x163(entry=<is not available>, peb=<is not available>) [/home/daviesh/wine/dlls/kernel32/process.c:1257] in kernel32 (0x0096ffd8) 7 0x7b481c3e start_process_wrapper+0x9() in kernel32 (0x0096ffec)
Huw.
On Wed, 2019-05-29 at 10:47 +0100, Huw Davies wrote:
On Tue, May 28, 2019 at 12:15:15PM +0200, Rémi Bernon wrote:
Signed-off-by: Rémi Bernon rbernon@codeweavers.com
dlls/kernel32/tests/virtual.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c index 1778509d2ac..79eed345910 100644 --- a/dlls/kernel32/tests/virtual.c +++ b/dlls/kernel32/tests/virtual.c @@ -442,6 +442,11 @@ static void test_VirtualAlloc(void) addr2 = VirtualAlloc(addr1, 0x1000, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE); ok(addr2 == addr1, "VirtualAlloc returned %p, expected %p\n", addr2, addr1);
- /* size_ptr should not be NULL */
- status = pNtAllocateVirtualMemory(GetCurrentProcess(), NULL,
0, NULL,
MEM_RESERVE | MEM_COMMIT,
PAGE_EXECUTE_READWRITE);
- ok(status == STATUS_ACCESS_VIOLATION, "NtAllocateVirtualMemory
returned %08x\n", status);
- /* allocation conflicts because of 64k align */ size = 0x1000; addr2 = (char *)addr1 + 0x1000;
Adding these sort of parameter checking tests (and implementing their behaviour) is generally not useful. Please wait until you find an application which relies on this (I suspect it'll be a long wait!).
But also this causes the tests to crash. You should test the tests after each patch in the series.
../../../tools/runtest -q -P wine -T ../../.. -M kernel32.dll -p kernel32_test.exe virtual && touch virtual.ok wine: Unhandled page fault on read access to 0x00000000 at address 0x7bcc4a86 (thread 0009), starting debugger... Unhandled exception: page fault on read access to 0x00000000 in 32- bit code (0x7bcc4a86). Register dump: CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b EIP:7bcc4a86 ESP:0096fa50 EBP:0096fba8 EFLAGS:00010206( R- -- I - -P- ) EAX:00000040 EBX:ffffffff ECX:00000000 EDX:00635ffc ESI:00000000 EDI:00003000 Stack dump: 0x0096fa50: 00000000 00000021 0096fb48 7bcc549b 0x0096fa60: 7bd23260 00000000 0096fb48 00000000 0x0096fa70: 00000000 00a30000 0096fb98 00000000 0x0096fa80: 00000000 00000000 0096fb78 7bcc53ba 0x0096fa90: 00000058 0096fadc 0096fab4 00000007 0x0096faa0: 00000004 00230000 0096fbc8 00000000 Backtrace: =>0 0x7bcc4a86 NtAllocateVirtualMemory+0x36(process=<is not available>, ret=<is not available>, zero_bits=<is not available>, size_ptr=<is not available>, type=<is not available>, protect=<is not available>) [/home/daviesh/wine/dlls/ntdll/virtual.c:2466] in ntdll (0x0096fba8) 1 0x005035df test_VirtualAlloc+0x1e1e() [/home/daviesh/wine/dlls/kernel32/tests/virtual.c:446] in kernel32_test (0x0096fc38) 2 0x0050ff5b func_virtual+0x130a() [/home/daviesh/wine/dlls/kernel32/tests/virtual.c:4521] in kernel32_test (0x0096fd28) 3 0x0051f74d main+0x2ac(argc=<is not available>, argv=<is not available>) [/home/daviesh/wine/dlls/kernel32/tests/../../../include/wine/test.h: 617] in kernel32_test (0x0096fdf8) 4 0x004013e3 buf+0x4013e2() in kernel32_test (0x0096fed0) 5 0x7b481c32 call_process_entry+0x11() in kernel32 (0x0096fee8) 6 0x7b483d24 start_process+0x163(entry=<is not available>, peb=<is not available>) [/home/daviesh/wine/dlls/kernel32/process.c:1257] in kernel32 (0x0096ffd8) 7 0x7b481c3e start_process_wrapper+0x9() in kernel32 (0x0096ffec)
Huw.
Alright. About the crash, it mainly depends on the order of the patch set as it's fixed in the next patch. I'm not sure how the order should be in general (or should tests + fixes be mixed in a single patch?).
Rémi.
On Wed, May 29, 2019 at 11:53:49AM +0200, Rémi Bernon wrote:
Alright. About the crash, it mainly depends on the order of the patch set as it's fixed in the next patch. I'm not sure how the order should be in general (or should tests + fixes be mixed in a single patch?).
One way is to add tests with todos in one patch, then add the implementation and remove the todos in a following patch. The advantage of this is that it's clear which tests your patch fixes. Sometimes it's not practical to add the tests first, so then an implementation patch followed by a test patch is fine. If everything is small then you can combine the tests with the implementation in one patch.
The important point though is that the tests must succeed after each patch.
Huw.
This parameter was misinterpreted as an alignment parameter for the lower bits of the allocated memory region, although it is a constraint on the higher bits.
Add a new internal ntdll virtual_alloc function that has a separate alignment parameter which is now used instead of the zero_bits parameter.
Replace external calls to NtAllocateVirtualMemory with VirtualAlloc.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/commdlg.dll16/filedlg.c | 3 +-- dlls/ntdll/directory.c | 4 ++-- dlls/ntdll/heap.c | 5 ++--- dlls/ntdll/ntdll_misc.h | 2 ++ dlls/ntdll/signal_arm.c | 12 +++++------ dlls/ntdll/signal_arm64.c | 16 +++++++-------- dlls/ntdll/signal_i386.c | 16 +++++++-------- dlls/ntdll/signal_powerpc.c | 12 +++++------ dlls/ntdll/signal_x86_64.c | 16 +++++++-------- dlls/ntdll/thread.c | 3 +-- dlls/ntdll/virtual.c | 40 +++++++++++++++++++++++++++--------- 11 files changed, 74 insertions(+), 55 deletions(-)
diff --git a/dlls/commdlg.dll16/filedlg.c b/dlls/commdlg.dll16/filedlg.c index 5b72bfab100..050cddb0dd5 100644 --- a/dlls/commdlg.dll16/filedlg.c +++ b/dlls/commdlg.dll16/filedlg.c @@ -509,8 +509,7 @@ static LPOFNHOOKPROC alloc_hook( LPOFNHOOKPROC16 hook16 ) SIZE_T size = 0x1000; unsigned int i;
- if (!hooks && NtAllocateVirtualMemory( GetCurrentProcess(), (void **)&hooks, 12, &size, - MEM_COMMIT, PAGE_EXECUTE_READWRITE )) + if (!hooks && !(hooks = VirtualAlloc( NULL, size, MEM_COMMIT, PAGE_EXECUTE_READWRITE ))) return NULL;
for (i = 0; i < count; i++) diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c index bbdbbe9781f..8292128ab51 100644 --- a/dlls/ntdll/directory.c +++ b/dlls/ntdll/directory.c @@ -1603,14 +1603,14 @@ static KERNEL_DIRENT *start_vfat_ioctl( int fd ) SIZE_T size = 2 * sizeof(*de) + page_size; void *addr = NULL;
- if (NtAllocateVirtualMemory( GetCurrentProcess(), &addr, 1, &size, MEM_RESERVE, PAGE_READWRITE )) + if (virtual_alloc( &addr, 0, &size, MEM_RESERVE, PAGE_READWRITE, 1 )) return NULL; /* commit only the size needed for the dir entries */ /* this leaves an extra unaccessible page, which should make the kernel */ /* fail with -EFAULT before it stomps all over our memory */ de = addr; size = 2 * sizeof(*de); - NtAllocateVirtualMemory( GetCurrentProcess(), &addr, 1, &size, MEM_COMMIT, PAGE_READWRITE ); + virtual_alloc( &addr, 0, &size, MEM_COMMIT, PAGE_READWRITE, 1 ); }
/* set d_reclen to 65535 to work around an AFS kernel bug */ diff --git a/dlls/ntdll/heap.c b/dlls/ntdll/heap.c index cccaaee1d45..6cf7bdccc6f 100644 --- a/dlls/ntdll/heap.c +++ b/dlls/ntdll/heap.c @@ -726,8 +726,7 @@ static void *allocate_large_block( HEAP *heap, DWORD flags, SIZE_T size ) LPVOID address = NULL;
if (block_size < size) return NULL; /* overflow */ - if (NtAllocateVirtualMemory( NtCurrentProcess(), &address, 5, - &block_size, MEM_COMMIT, get_protection_type( flags ) )) + if (virtual_alloc( &address, 0, &block_size, MEM_COMMIT, get_protection_type( flags ), 5 )) { WARN("Could not allocate block for %08lx bytes\n", size ); return NULL; @@ -1521,7 +1520,7 @@ void heap_set_debug_flags( HANDLE handle ) void *ptr = NULL; SIZE_T size = MAX_FREE_PENDING * sizeof(*heap->pending_free);
- if (!NtAllocateVirtualMemory( NtCurrentProcess(), &ptr, 4, &size, MEM_COMMIT, PAGE_READWRITE )) + if (!virtual_alloc( &ptr, 0, &size, MEM_COMMIT, PAGE_READWRITE, 4 )) { heap->pending_free = ptr; heap->pending_pos = 0; diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h index 2d83f541bd5..24af706399b 100644 --- a/dlls/ntdll/ntdll_misc.h +++ b/dlls/ntdll/ntdll_misc.h @@ -168,6 +168,8 @@ extern NTSTATUS nt_to_unix_file_name_attr( const OBJECT_ATTRIBUTES *attr, ANSI_S UINT disposition ) DECLSPEC_HIDDEN;
/* virtual memory */ +extern NTSTATUS virtual_alloc( PVOID *ret, ULONG zero_bits, SIZE_T *size_ptr, + ULONG type, ULONG protect, ULONG alignment ); extern NTSTATUS virtual_map_section( HANDLE handle, PVOID *addr_ptr, ULONG zero_bits, SIZE_T commit_size, const LARGE_INTEGER *offset_ptr, SIZE_T *size_ptr, ULONG protect, pe_image_info_t *image_info ) DECLSPEC_HIDDEN; diff --git a/dlls/ntdll/signal_arm.c b/dlls/ntdll/signal_arm.c index e01c8ce2193..12926d07563 100644 --- a/dlls/ntdll/signal_arm.c +++ b/dlls/ntdll/signal_arm.c @@ -967,22 +967,22 @@ int CDECL __wine_set_signal_handler(unsigned int sig, wine_signal_handler wsh) */ NTSTATUS signal_alloc_thread( TEB **teb ) { - static size_t sigstack_zero_bits; + static size_t sigstack_alignment; SIZE_T size; NTSTATUS status;
- if (!sigstack_zero_bits) + if (!sigstack_alignment) { size_t min_size = page_size; /* find the first power of two not smaller than min_size */ - while ((1u << sigstack_zero_bits) < min_size) sigstack_zero_bits++; + while ((1u << sigstack_alignment) < min_size) sigstack_alignment++; assert( sizeof(TEB) <= min_size ); }
- size = 1 << sigstack_zero_bits; + size = 1 << sigstack_alignment; *teb = NULL; - if (!(status = NtAllocateVirtualMemory( NtCurrentProcess(), (void **)teb, sigstack_zero_bits, - &size, MEM_COMMIT | MEM_TOP_DOWN, PAGE_READWRITE ))) + if (!(status = virtual_alloc( (void **)teb, 0, &size, MEM_COMMIT | MEM_TOP_DOWN, + PAGE_READWRITE, sigstack_alignment ))) { (*teb)->Tib.Self = &(*teb)->Tib; (*teb)->Tib.ExceptionList = (void *)~0UL; diff --git a/dlls/ntdll/signal_arm64.c b/dlls/ntdll/signal_arm64.c index 94520c95ced..ebcf107f88d 100644 --- a/dlls/ntdll/signal_arm64.c +++ b/dlls/ntdll/signal_arm64.c @@ -871,24 +871,24 @@ int CDECL __wine_set_signal_handler(unsigned int sig, wine_signal_handler wsh) */ NTSTATUS signal_alloc_thread( TEB **teb ) { - static size_t sigstack_zero_bits; + static size_t sigstack_alignment; SIZE_T size; NTSTATUS status;
- if (!sigstack_zero_bits) + if (!sigstack_alignment) { size_t min_size = teb_size + max( MINSIGSTKSZ, 8192 ); /* find the first power of two not smaller than min_size */ - sigstack_zero_bits = 12; - while ((1u << sigstack_zero_bits) < min_size) sigstack_zero_bits++; - signal_stack_size = (1 << sigstack_zero_bits) - teb_size; + sigstack_alignment = 12; + while ((1u << sigstack_alignment) < min_size) sigstack_alignment++; + signal_stack_size = (1 << sigstack_alignment) - teb_size; assert( sizeof(TEB) <= teb_size ); }
- size = 1 << sigstack_zero_bits; + size = 1 << sigstack_alignment; *teb = NULL; - if (!(status = NtAllocateVirtualMemory( NtCurrentProcess(), (void **)teb, sigstack_zero_bits, - &size, MEM_COMMIT | MEM_TOP_DOWN, PAGE_READWRITE ))) + if (!(status = virtual_alloc( (void **)teb, 0, &size, MEM_COMMIT | MEM_TOP_DOWN, + PAGE_READWRITE, sigstack_alignment ))) { (*teb)->Tib.Self = &(*teb)->Tib; (*teb)->Tib.ExceptionList = (void *)~0UL; diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c index b4e88d125f1..9594e20551b 100644 --- a/dlls/ntdll/signal_i386.c +++ b/dlls/ntdll/signal_i386.c @@ -2312,25 +2312,25 @@ static void ldt_unlock(void) */ NTSTATUS signal_alloc_thread( TEB **teb ) { - static size_t sigstack_zero_bits; + static size_t sigstack_alignment; struct x86_thread_data *thread_data; SIZE_T size; void *addr = NULL; NTSTATUS status;
- if (!sigstack_zero_bits) + if (!sigstack_alignment) { size_t min_size = teb_size + max( MINSIGSTKSZ, 8192 ); /* find the first power of two not smaller than min_size */ - sigstack_zero_bits = 12; - while ((1u << sigstack_zero_bits) < min_size) sigstack_zero_bits++; - signal_stack_mask = (1 << sigstack_zero_bits) - 1; - signal_stack_size = (1 << sigstack_zero_bits) - teb_size; + sigstack_alignment = 12; + while ((1u << sigstack_alignment) < min_size) sigstack_alignment++; + signal_stack_mask = (1 << sigstack_alignment) - 1; + signal_stack_size = (1 << sigstack_alignment) - teb_size; }
size = signal_stack_mask + 1; - if (!(status = NtAllocateVirtualMemory( NtCurrentProcess(), &addr, sigstack_zero_bits, - &size, MEM_COMMIT | MEM_TOP_DOWN, PAGE_READWRITE ))) + if (!(status = virtual_alloc( &addr, 0, &size, MEM_COMMIT | MEM_TOP_DOWN, + PAGE_READWRITE, sigstack_alignment ))) { *teb = addr; (*teb)->Tib.Self = &(*teb)->Tib; diff --git a/dlls/ntdll/signal_powerpc.c b/dlls/ntdll/signal_powerpc.c index 86398d8f54f..15fde291647 100644 --- a/dlls/ntdll/signal_powerpc.c +++ b/dlls/ntdll/signal_powerpc.c @@ -1018,22 +1018,22 @@ int CDECL __wine_set_signal_handler(unsigned int sig, wine_signal_handler wsh) */ NTSTATUS signal_alloc_thread( TEB **teb ) { - static size_t sigstack_zero_bits; + static size_t sigstack_alignment; SIZE_T size; NTSTATUS status;
- if (!sigstack_zero_bits) + if (!sigstack_alignment) { size_t min_size = page_size; /* this is just for the TEB, we don't use a signal stack yet */ /* find the first power of two not smaller than min_size */ - while ((1u << sigstack_zero_bits) < min_size) sigstack_zero_bits++; + while ((1u << sigstack_alignment) < min_size) sigstack_alignment++; assert( sizeof(TEB) <= min_size ); }
- size = 1 << sigstack_zero_bits; + size = 1 << sigstack_alignment; *teb = NULL; - if (!(status = NtAllocateVirtualMemory( NtCurrentProcess(), (void **)teb, sigstack_zero_bits, - &size, MEM_COMMIT | MEM_TOP_DOWN, PAGE_READWRITE ))) + if (!(status = virtual_alloc( (void **)teb, 0, &size, MEM_COMMIT | MEM_TOP_DOWN, + PAGE_READWRITE, sigstack_alignment ))) { (*teb)->Tib.Self = &(*teb)->Tib; (*teb)->Tib.ExceptionList = (void *)~0UL; diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c index c2151f78c63..86c1878ea72 100644 --- a/dlls/ntdll/signal_x86_64.c +++ b/dlls/ntdll/signal_x86_64.c @@ -3263,24 +3263,24 @@ int CDECL __wine_set_signal_handler(unsigned int sig, wine_signal_handler wsh) */ NTSTATUS signal_alloc_thread( TEB **teb ) { - static size_t sigstack_zero_bits; + static size_t sigstack_alignment; SIZE_T size; NTSTATUS status;
- if (!sigstack_zero_bits) + if (!sigstack_alignment) { size_t min_size = teb_size + max( MINSIGSTKSZ, 8192 ); /* find the first power of two not smaller than min_size */ - sigstack_zero_bits = 12; - while ((1u << sigstack_zero_bits) < min_size) sigstack_zero_bits++; - signal_stack_size = (1 << sigstack_zero_bits) - teb_size; + sigstack_alignment = 12; + while ((1u << sigstack_alignment) < min_size) sigstack_alignment++; + signal_stack_size = (1 << sigstack_alignment) - teb_size; assert( sizeof(TEB) <= teb_size ); }
- size = 1 << sigstack_zero_bits; + size = 1 << sigstack_alignment; *teb = NULL; - if (!(status = NtAllocateVirtualMemory( NtCurrentProcess(), (void **)teb, sigstack_zero_bits, - &size, MEM_COMMIT | MEM_TOP_DOWN, PAGE_READWRITE ))) + if (!(status = virtual_alloc( (void **)teb, 0, &size, MEM_COMMIT | MEM_TOP_DOWN, + PAGE_READWRITE, sigstack_alignment ))) { (*teb)->Tib.Self = &(*teb)->Tib; (*teb)->Tib.ExceptionList = (void *)~0UL; diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c index 46de839400d..974064a4b4d 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c @@ -184,8 +184,7 @@ void thread_init(void)
addr = NULL; size = sizeof(*peb); - NtAllocateVirtualMemory( NtCurrentProcess(), &addr, 1, &size, - MEM_COMMIT | MEM_TOP_DOWN, PAGE_READWRITE ); + virtual_alloc( &addr, 0, &size, MEM_COMMIT | MEM_TOP_DOWN, PAGE_READWRITE, 1 ); peb = addr;
peb->FastPebLock = &peb_lock; diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c index 78973a8cda4..90475a01f21 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c @@ -2461,19 +2461,18 @@ void virtual_set_large_address_space(void) NTSTATUS WINAPI NtAllocateVirtualMemory( HANDLE process, PVOID *ret, ULONG zero_bits, SIZE_T *size_ptr, ULONG type, ULONG protect ) { - void *base; - unsigned int vprot; - SIZE_T size = *size_ptr; - SIZE_T mask = get_mask( zero_bits ); NTSTATUS status = STATUS_SUCCESS; - BOOL is_dos_memory = FALSE; - struct file_view *view; - sigset_t sigset;
- TRACE("%p %p %08lx %x %08x\n", process, *ret, size, type, protect ); + if (!size_ptr) return STATUS_ACCESS_VIOLATION;
- if (!size) return STATUS_INVALID_PARAMETER; - if (!mask) return STATUS_INVALID_PARAMETER_3; + TRACE("%p %p %08lx %x %08x\n", process, *ret, *size_ptr, type, protect ); + + if (!*size_ptr) return STATUS_INVALID_PARAMETER; + if (zero_bits) + { + FIXME("Unimplemented zero_bits handling\n"); + return STATUS_INVALID_PARAMETER_3; + }
if (process != NtCurrentProcess()) { @@ -2499,6 +2498,27 @@ NTSTATUS WINAPI NtAllocateVirtualMemory( HANDLE process, PVOID *ret, ULONG zero_ return result.virtual_alloc.status; }
+ return virtual_alloc( ret, zero_bits, size_ptr, type, protect, 0 ); +} + + +/*********************************************************************** + * virtual_alloc (NTDLL.@) + * + * Same as NtAllocateVirtualMemory but with an alignment parameter + */ +NTSTATUS virtual_alloc( PVOID *ret, ULONG zero_bits, SIZE_T *size_ptr, + ULONG type, ULONG protect, ULONG alignment ) +{ + void *base; + unsigned int vprot; + SIZE_T size = *size_ptr; + SIZE_T mask = get_mask( alignment ); + NTSTATUS status = STATUS_SUCCESS; + BOOL is_dos_memory = FALSE; + struct file_view *view; + sigset_t sigset; + /* Round parameters to a page boundary */
if (is_beyond_limit( 0, size, working_set_limit )) return STATUS_WORKING_SET_LIMIT_RANGE;
On Tue, May 28, 2019 at 12:15:16PM +0200, Rémi Bernon wrote:
This parameter was misinterpreted as an alignment parameter for the lower bits of the allocated memory region, although it is a constraint on the higher bits.
Add a new internal ntdll virtual_alloc function that has a separate alignment parameter which is now used instead of the zero_bits parameter.
Replace external calls to NtAllocateVirtualMemory with VirtualAlloc.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com
dlls/commdlg.dll16/filedlg.c | 3 +-- dlls/ntdll/directory.c | 4 ++-- dlls/ntdll/heap.c | 5 ++--- dlls/ntdll/ntdll_misc.h | 2 ++ dlls/ntdll/signal_arm.c | 12 +++++------ dlls/ntdll/signal_arm64.c | 16 +++++++-------- dlls/ntdll/signal_i386.c | 16 +++++++-------- dlls/ntdll/signal_powerpc.c | 12 +++++------ dlls/ntdll/signal_x86_64.c | 16 +++++++-------- dlls/ntdll/thread.c | 3 +-- dlls/ntdll/virtual.c | 40 +++++++++++++++++++++++++++--------- 11 files changed, 74 insertions(+), 55 deletions(-)
diff --git a/dlls/commdlg.dll16/filedlg.c b/dlls/commdlg.dll16/filedlg.c index 5b72bfab100..050cddb0dd5 100644 --- a/dlls/commdlg.dll16/filedlg.c +++ b/dlls/commdlg.dll16/filedlg.c @@ -509,8 +509,7 @@ static LPOFNHOOKPROC alloc_hook( LPOFNHOOKPROC16 hook16 ) SIZE_T size = 0x1000; unsigned int i;
- if (!hooks && NtAllocateVirtualMemory( GetCurrentProcess(), (void **)&hooks, 12, &size,
MEM_COMMIT, PAGE_EXECUTE_READWRITE ))
if (!hooks && !(hooks = VirtualAlloc( NULL, size, MEM_COMMIT, PAGE_EXECUTE_READWRITE ))) return NULL;
for (i = 0; i < count; i++)
This hunk should be a separate patch.
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c index 78973a8cda4..90475a01f21 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c @@ -2461,19 +2461,18 @@ void virtual_set_large_address_space(void) NTSTATUS WINAPI NtAllocateVirtualMemory( HANDLE process, PVOID *ret, ULONG zero_bits, SIZE_T *size_ptr, ULONG type, ULONG protect ) {
void *base;
unsigned int vprot;
SIZE_T size = *size_ptr;
SIZE_T mask = get_mask( zero_bits ); NTSTATUS status = STATUS_SUCCESS;
BOOL is_dos_memory = FALSE;
struct file_view *view;
sigset_t sigset;
TRACE("%p %p %08lx %x %08x\n", process, *ret, size, type, protect );
- if (!size_ptr) return STATUS_ACCESS_VIOLATION;
As already mentioned, please don't add this check unless it's needed and let's keep the original TRACE().
- if (!size) return STATUS_INVALID_PARAMETER;
- if (!mask) return STATUS_INVALID_PARAMETER_3;
TRACE("%p %p %08lx %x %08x\n", process, *ret, *size_ptr, type, protect );
if (!*size_ptr) return STATUS_INVALID_PARAMETER;
if (zero_bits)
{
FIXME("Unimplemented zero_bits handling\n");
return STATUS_INVALID_PARAMETER_3;
}
if (process != NtCurrentProcess()) {
@@ -2499,6 +2498,27 @@ NTSTATUS WINAPI NtAllocateVirtualMemory( HANDLE process, PVOID *ret, ULONG zero_ return result.virtual_alloc.status; }
- return virtual_alloc( ret, zero_bits, size_ptr, type, protect, 0 );
+}
+/***********************************************************************
virtual_alloc (NTDLL.@)
- Same as NtAllocateVirtualMemory but with an alignment parameter
- */
+NTSTATUS virtual_alloc( PVOID *ret, ULONG zero_bits, SIZE_T *size_ptr,
ULONG type, ULONG protect, ULONG alignment )
How about calling it virtual_alloc_aligned() ?
+{
void *base;
unsigned int vprot;
SIZE_T size = *size_ptr;
SIZE_T mask = get_mask( alignment );
NTSTATUS status = STATUS_SUCCESS;
BOOL is_dos_memory = FALSE;
struct file_view *view;
sigset_t sigset;
/* Round parameters to a page boundary */
if (is_beyond_limit( 0, size, working_set_limit )) return STATUS_WORKING_SET_LIMIT_RANGE;
Huw.
As for NtAllocateVirtualMemory, the parameter was misinterpreted as an alignment value. This wasn't used anywhere, so just add an explicit alignment parameter to internal virtual_map_section function and return an error when zero_bits is used.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/ntdll/loader.c | 2 +- dlls/ntdll/ntdll_misc.h | 2 +- dlls/ntdll/virtual.c | 14 +++++++++----- 3 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c index 166066783ff..4807490be0c 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -2101,7 +2101,7 @@ static NTSTATUS open_dll_file( UNICODE_STRING *nt_name, WINE_MODREF **pwm, if (!status) { status = virtual_map_section( mapping, module, 0, 0, NULL, &len, - PAGE_EXECUTE_READ, image_info ); + PAGE_EXECUTE_READ, image_info, 0 ); if (status == STATUS_IMAGE_NOT_AT_BASE) status = STATUS_SUCCESS; NtClose( mapping ); } diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h index 24af706399b..944ff04aa96 100644 --- a/dlls/ntdll/ntdll_misc.h +++ b/dlls/ntdll/ntdll_misc.h @@ -172,7 +172,7 @@ extern NTSTATUS virtual_alloc( PVOID *ret, ULONG zero_bits, SIZE_T *size_ptr, ULONG type, ULONG protect, ULONG alignment ); extern NTSTATUS virtual_map_section( HANDLE handle, PVOID *addr_ptr, ULONG zero_bits, SIZE_T commit_size, const LARGE_INTEGER *offset_ptr, SIZE_T *size_ptr, ULONG protect, - pe_image_info_t *image_info ) DECLSPEC_HIDDEN; + pe_image_info_t *image_info, ULONG alignment ) DECLSPEC_HIDDEN; extern void virtual_get_system_info( SYSTEM_BASIC_INFORMATION *info ) DECLSPEC_HIDDEN; extern NTSTATUS virtual_create_builtin_view( void *base ) DECLSPEC_HIDDEN; extern NTSTATUS virtual_alloc_thread_stack( TEB *teb, SIZE_T reserve_size, diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c index 90475a01f21..175d73cbe7c 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c @@ -1609,12 +1609,12 @@ static NTSTATUS map_image( HANDLE hmapping, ACCESS_MASK access, int fd, SIZE_T m */ NTSTATUS virtual_map_section( HANDLE handle, PVOID *addr_ptr, ULONG zero_bits, SIZE_T commit_size, const LARGE_INTEGER *offset_ptr, SIZE_T *size_ptr, ULONG protect, - pe_image_info_t *image_info ) + pe_image_info_t *image_info, ULONG alignment ) { NTSTATUS res; mem_size_t full_size; ACCESS_MASK access; - SIZE_T size, mask = get_mask( zero_bits ); + SIZE_T size, mask = get_mask( alignment ); int unix_handle = -1, needs_close; unsigned int vprot, sec_flags; struct file_view *view; @@ -3099,7 +3099,7 @@ NTSTATUS WINAPI NtMapViewOfSection( HANDLE handle, HANDLE process, PVOID *addr_p SECTION_INHERIT inherit, ULONG alloc_type, ULONG protect ) { NTSTATUS res; - SIZE_T mask = get_mask( zero_bits ); + SIZE_T mask = get_mask( 0 ); pe_image_info_t image_info; LARGE_INTEGER offset;
@@ -3110,8 +3110,11 @@ NTSTATUS WINAPI NtMapViewOfSection( HANDLE handle, HANDLE process, PVOID *addr_p
/* Check parameters */
- if ((*addr_ptr && zero_bits) || !mask) + if (zero_bits) + { + FIXME("Unimplemented zero_bits handling\n"); return STATUS_INVALID_PARAMETER_4; + }
#ifndef _WIN64 if (!is_wow64 && (alloc_type & AT_ROUND_TO_PAGE)) @@ -3151,7 +3154,8 @@ NTSTATUS WINAPI NtMapViewOfSection( HANDLE handle, HANDLE process, PVOID *addr_p }
return virtual_map_section( handle, addr_ptr, zero_bits, commit_size, - offset_ptr, size_ptr, protect, &image_info ); + offset_ptr, size_ptr, protect, &image_info, + 0 ); }
On Tue, May 28, 2019 at 12:15:17PM +0200, Rémi Bernon wrote:
As for NtAllocateVirtualMemory, the parameter was misinterpreted as an alignment value. This wasn't used anywhere, so just add an explicit alignment parameter to internal virtual_map_section function and return an error when zero_bits is used.
I might be missing something here, but if the non-default alignment is not needed, what's the purpose of the helper function?
Huw.
On Wed, 2019-05-29 at 11:04 +0100, Huw Davies wrote:
On Tue, May 28, 2019 at 12:15:17PM +0200, Rémi Bernon wrote:
As for NtAllocateVirtualMemory, the parameter was misinterpreted as an alignment value. This wasn't used anywhere, so just add an explicit alignment parameter to internal virtual_map_section function and return an error when zero_bits is used.
I might be missing something here, but if the non-default alignment is not needed, what's the purpose of the helper function?
Huw.
Well, the helper function was already there, I added an alignment parameter to avoid further mistakes with zero_bits parameter, but it isn't really necessary.
Rémi
Implement the correct zero_bits behavior for this single case: * Limit the search in reserved areas to the lower 2G range, * Pass the MAP_32BIT flag to mmap as a fallback.
LuaJIT <= v2.0.5 for example, when running in 64bit, allocates its memory in the lower 2GB memory region by using the zero_bits parameter.
This will fix this particular scenario, while trying to minimize the changes on all the other cases.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/kernel32/tests/virtual.c | 1 - dlls/ntdll/virtual.c | 35 +++++++++++++++++++++++++++-------- 2 files changed, 27 insertions(+), 9 deletions(-)
diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c index 79eed345910..72ab3efac86 100644 --- a/dlls/kernel32/tests/virtual.c +++ b/dlls/kernel32/tests/virtual.c @@ -474,7 +474,6 @@ static void test_VirtualAlloc(void) zero_bits = 1; status = pNtAllocateVirtualMemory(GetCurrentProcess(), &addr2, 1, &size, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); - todo_wine ok((status == STATUS_SUCCESS || broken(status == STATUS_INVALID_PARAMETER_3) /* winxp */) && ((UINT_PTR)addr2 >> (32 - zero_bits)) == 0, "NtAllocateVirtualMemory returned %08x, addr2: %p\n", status, addr2); diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c index 175d73cbe7c..b07afa8f924 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c @@ -1083,7 +1083,7 @@ static NTSTATUS map_fixed_area( void *base, size_t size, unsigned int vprot ) * The csVirtual section must be held by caller. */ static NTSTATUS map_view( struct file_view **view_ret, void *base, size_t size, size_t mask, - int top_down, unsigned int vprot ) + int top_down, unsigned int vprot, size_t zero_bits ) { void *ptr; NTSTATUS status; @@ -1100,11 +1100,26 @@ static NTSTATUS map_view( struct file_view **view_ret, void *base, size_t size, { size_t view_size = size + mask + 1; struct alloc_area alloc; + int flags = 0;
alloc.size = size; alloc.mask = mask; alloc.top_down = top_down; alloc.limit = user_space_limit; + +#if defined(__x86_64__) && defined(MAP_32BIT) + /* HACK: only works for zero_bits == 1, this is a simple workaround + * for some 64bit code that tries to allocate memory in the lower + * 2GB segment using zero_bits parameter. + */ + assert(zero_bits <= 1); + if (zero_bits == 1) + { + alloc.limit = (void*)(((~(UINT_PTR)0) >> (32 + zero_bits)) & ~0xffff); + flags = MAP_32BIT; + } +#endif + if (wine_mmap_enum_reserved_areas( alloc_reserved_area_callback, &alloc, top_down )) { ptr = alloc.result; @@ -1116,7 +1131,7 @@ static NTSTATUS map_view( struct file_view **view_ret, void *base, size_t size,
for (;;) { - if ((ptr = wine_anon_mmap( NULL, view_size, VIRTUAL_GetUnixProt(vprot), 0 )) == (void *)-1) + if ((ptr = wine_anon_mmap( NULL, view_size, VIRTUAL_GetUnixProt(vprot), flags )) == (void *)-1) { if (errno == ENOMEM) return STATUS_NO_MEMORY; return STATUS_INVALID_PARAMETER; @@ -1284,7 +1299,7 @@ static NTSTATUS allocate_dos_memory( struct file_view **view, unsigned int vprot if (addr != low_64k) { if (addr != (void *)-1) munmap( addr, dosmem_size - 0x10000 ); - return map_view( view, NULL, dosmem_size, 0xffff, 0, vprot ); + return map_view( view, NULL, dosmem_size, 0xffff, 0, vprot, 0 ); } }
@@ -1388,11 +1403,11 @@ static NTSTATUS map_image( HANDLE hmapping, ACCESS_MASK access, int fd, SIZE_T m
if (base >= (char *)address_space_start) /* make sure the DOS area remains free */ status = map_view( &view, base, total_size, mask, FALSE, SEC_IMAGE | SEC_FILE | - VPROT_COMMITTED | VPROT_READ | VPROT_EXEC | VPROT_WRITECOPY ); + VPROT_COMMITTED | VPROT_READ | VPROT_EXEC | VPROT_WRITECOPY, 0 );
if (status != STATUS_SUCCESS) status = map_view( &view, NULL, total_size, mask, FALSE, SEC_IMAGE | SEC_FILE | - VPROT_COMMITTED | VPROT_READ | VPROT_EXEC | VPROT_WRITECOPY ); + VPROT_COMMITTED | VPROT_READ | VPROT_EXEC | VPROT_WRITECOPY, 0 );
if (status != STATUS_SUCCESS) goto error;
@@ -1713,7 +1728,7 @@ NTSTATUS virtual_map_section( HANDLE handle, PVOID *addr_ptr, ULONG zero_bits, S get_vprot_flags( protect, &vprot, sec_flags & SEC_IMAGE ); vprot |= sec_flags; if (!(sec_flags & SEC_RESERVE)) vprot |= VPROT_COMMITTED; - res = map_view( &view, *addr_ptr, size, mask, FALSE, vprot ); + res = map_view( &view, *addr_ptr, size, mask, FALSE, vprot, 0 ); if (res) { server_leave_uninterrupted_section( &csVirtual, &sigset ); @@ -1946,7 +1961,7 @@ NTSTATUS virtual_alloc_thread_stack( TEB *teb, SIZE_T reserve_size, SIZE_T commi server_enter_uninterrupted_section( &csVirtual, &sigset );
if ((status = map_view( &view, NULL, size + extra_size, 0xffff, 0, - VPROT_READ | VPROT_WRITE | VPROT_COMMITTED )) != STATUS_SUCCESS) + VPROT_READ | VPROT_WRITE | VPROT_COMMITTED, 0 )) != STATUS_SUCCESS) goto done;
#ifdef VALGRIND_STACK_REGISTER @@ -2468,7 +2483,11 @@ NTSTATUS WINAPI NtAllocateVirtualMemory( HANDLE process, PVOID *ret, ULONG zero_ TRACE("%p %p %08lx %x %08x\n", process, *ret, *size_ptr, type, protect );
if (!*size_ptr) return STATUS_INVALID_PARAMETER; +#if defined(__x86_64__) && !defined(MAP_32BIT) if (zero_bits) +#else + if (zero_bits > 1) +#endif { FIXME("Unimplemented zero_bits handling\n"); return STATUS_INVALID_PARAMETER_3; @@ -2570,7 +2589,7 @@ NTSTATUS virtual_alloc( PVOID *ret, ULONG zero_bits, SIZE_T *size_ptr,
if (vprot & VPROT_WRITECOPY) status = STATUS_INVALID_PAGE_PROTECTION; else if (is_dos_memory) status = allocate_dos_memory( &view, vprot ); - else status = map_view( &view, base, size, mask, type & MEM_TOP_DOWN, vprot ); + else status = map_view( &view, base, size, mask, type & MEM_TOP_DOWN, vprot, zero_bits );
if (status == STATUS_SUCCESS) base = view->base; }
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=52935
Your paranoid android.
=== wvistau64 (32 bit report) ===
kernel32: virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 0, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:2961: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2975: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3100: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3118: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3199: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3223: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 1, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022
=== wvistau64_zh_CN (32 bit report) ===
kernel32: virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 0, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:2961: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2975: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3100: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3118: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3199: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3223: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 1, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022
=== wvistau64_fr (32 bit report) ===
kernel32: virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 0, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:2961: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2975: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3100: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3118: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3199: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3223: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 1, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022
=== wvistau64_he (32 bit report) ===
kernel32: virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 0, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:2961: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2975: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3100: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3118: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3199: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3223: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 1, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022
=== w2008s64 (32 bit report) ===
kernel32: virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 0, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:2961: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2975: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3100: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3118: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3199: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3223: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 1, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022
=== w7u (32 bit report) ===
kernel32: virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 0, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 1, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022
=== w7pro64 (32 bit report) ===
kernel32: virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 0, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:2961: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2975: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3100: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3118: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3199: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3223: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 1, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022
=== w8 (32 bit report) ===
kernel32: virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 0, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:2961: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2975: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3100: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3118: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3199: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3223: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 1, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022
=== w8adm (32 bit report) ===
kernel32: virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 0, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:2961: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2975: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3100: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3118: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3199: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3223: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 1, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022
=== w864 (32 bit report) ===
kernel32: virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 0, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:2961: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2975: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3100: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3118: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3199: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3223: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 1, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022
=== w1064v1507 (32 bit report) ===
kernel32: virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 0, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:2961: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2975: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3100: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3118: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3199: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3223: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 1, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022
=== w1064v1809 (32 bit report) ===
kernel32: virtual.c:494: Test failed: NtAllocateVirtualMemory with 20 zero_bits returned c0000018, addr2: 00000000 virtual.c:494: Test failed: NtAllocateVirtualMemory with 21 zero_bits returned c000000d, addr2: 00000000 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 0, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:2961: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2975: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3100: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3118: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3199: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3223: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2905: Test failed: expected policy flags 1, got 3 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3004: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3019: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3082: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3263: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3288: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2867: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2906: Test failed: expected policy permanent FALSE, got 1 virtual.c:3325: Test failed: NtSetInformationProcess failed with status c0000022
=== w1064v1809 (64 bit report) ===
kernel32: virtual.c:494: Test failed: NtAllocateVirtualMemory with 20 zero_bits returned c0000018, addr2: 0000000000000000 virtual.c:494: Test failed: NtAllocateVirtualMemory with 21 zero_bits returned c000000d, addr2: 0000000000000000
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=52930
Your paranoid android.
=== wvistau64 (32 bit report) ===
kernel32: virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 0, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2910: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2924: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3049: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3148: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3172: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 1, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022
=== wvistau64_zh_CN (32 bit report) ===
kernel32: virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 0, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2910: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2924: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3049: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3148: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3172: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 1, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022
=== wvistau64_fr (32 bit report) ===
kernel32: virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 0, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2910: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2924: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3049: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3148: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3172: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 1, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022
=== wvistau64_he (32 bit report) ===
kernel32: virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 0, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2910: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2924: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3049: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3148: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3172: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 1, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022
=== w2008s64 (32 bit report) ===
kernel32: virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 0, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2910: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2924: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3049: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3148: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3172: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 1, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022
=== w7u (32 bit report) ===
kernel32: virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 0, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 1, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022
=== w7pro64 (32 bit report) ===
kernel32: virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 0, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2910: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2924: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3049: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3148: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3172: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 1, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022
=== w8 (32 bit report) ===
kernel32: virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 0, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2910: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2924: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3049: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3148: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3172: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 1, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022
=== w8adm (32 bit report) ===
kernel32: virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 0, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2910: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2924: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3049: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3148: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3172: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 1, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022
=== w864 (32 bit report) ===
kernel32: virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 0, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2910: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2924: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3049: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3148: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3172: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 1, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022
=== w1064v1507 (32 bit report) ===
kernel32: virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 0, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2910: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2924: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3049: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3148: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3172: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 1, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022
=== w1064v1809 (32 bit report) ===
kernel32: virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 0, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2910: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2924: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3049: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3067: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3148: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3172: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2854: Test failed: expected policy flags 1, got 3 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:2953: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:2968: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3016: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3031: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3212: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3237: Test failed: expected no STATUS_ACCESS_VIOLATION exception, got 1 exceptions virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2816: Test failed: NtSetInformationProcess failed with status c0000022 virtual.c:2855: Test failed: expected policy permanent FALSE, got 1 virtual.c:3274: Test failed: NtSetInformationProcess failed with status c0000022