From b9a9ad4c0355a7d42ee5515b0eefa3087bd930ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Tue, 7 Jan 2020 12:40:05 +0100 Subject: [PATCH] ddraw/tests: Disable a test that causes heap corruption on some Nvidia. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stefan Dösinger Signed-off-by: Alexandre Julliard --- dlls/ddraw/tests/ddraw1.c | 16 +++++++++++++--- dlls/ddraw/tests/ddraw2.c | 16 +++++++++++++--- dlls/ddraw/tests/ddraw4.c | 16 +++++++++++++--- dlls/ddraw/tests/ddraw7.c | 16 +++++++++++++--- 4 files changed, 52 insertions(+), 12 deletions(-) diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c index b513121fbbc..80c96fccc4c 100644 --- a/dlls/ddraw/tests/ddraw1.c +++ b/dlls/ddraw/tests/ddraw1.c @@ -12908,9 +12908,19 @@ static void test_clipper_refcount(void) IDirectDrawClipper_Release(clipper); IDirectDrawClipper_Release(clipper); - hr = IDirectDrawSurface_GetClipper(surface, &clipper2); - ok(SUCCEEDED(hr), "Failed to get clipper, hr %#x.\n", hr); - ok(clipper == clipper2, "Got clipper %p, expected %p.\n", clipper2, clipper); + if (!ddraw_is_nvidia(ddraw)) + { + /* Disabled because it causes heap corruption (HeapValidate fails and random + * hangs in a later HeapFree) on Windows on one of my Machines: MacbookPro 10,1 + * running Windows 10 18363.535 and Nvidia driver 425.31. Driver version 441.66 + * is affected too. + * + * The same Windows and driver versions run the test without heap corruption on + * a Geforce 1060 GTX card. I have not seen the problem on AMD GPUs either. */ + hr = IDirectDrawSurface_GetClipper(surface, &clipper2); + ok(SUCCEEDED(hr), "Failed to get clipper, hr %#x.\n", hr); + ok(clipper == clipper2, "Got clipper %p, expected %p.\n", clipper2, clipper); + } /* Show that invoking the Release method does not crash, but don't get the * vtable through the clipper pointer because it is no longer pointing to diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c index a2a27d86f01..390184e80dc 100644 --- a/dlls/ddraw/tests/ddraw2.c +++ b/dlls/ddraw/tests/ddraw2.c @@ -13737,9 +13737,19 @@ static void test_clipper_refcount(void) IDirectDrawClipper_Release(clipper); IDirectDrawClipper_Release(clipper); - hr = IDirectDrawSurface_GetClipper(surface, &clipper2); - ok(SUCCEEDED(hr), "Failed to get clipper, hr %#x.\n", hr); - ok(clipper == clipper2, "Got clipper %p, expected %p.\n", clipper2, clipper); + if (!ddraw_is_nvidia(ddraw)) + { + /* Disabled because it causes heap corruption (HeapValidate fails and random + * hangs in a later HeapFree) on Windows on one of my Machines: MacbookPro 10,1 + * running Windows 10 18363.535 and Nvidia driver 425.31. Driver version 441.66 + * is affected too. + * + * The same Windows and driver versions run the test without heap corruption on + * a Geforce 1060 GTX card. I have not seen the problem on AMD GPUs either. */ + hr = IDirectDrawSurface_GetClipper(surface, &clipper2); + ok(SUCCEEDED(hr), "Failed to get clipper, hr %#x.\n", hr); + ok(clipper == clipper2, "Got clipper %p, expected %p.\n", clipper2, clipper); + } /* Show that invoking the Release method does not crash, but don't get the * vtable through the clipper pointer because it is no longer pointing to diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c index 77cf6f45114..1a16e2d571e 100644 --- a/dlls/ddraw/tests/ddraw4.c +++ b/dlls/ddraw/tests/ddraw4.c @@ -16388,9 +16388,19 @@ static void test_clipper_refcount(void) IDirectDrawClipper_Release(clipper); IDirectDrawClipper_Release(clipper); - hr = IDirectDrawSurface4_GetClipper(surface, &clipper2); - ok(SUCCEEDED(hr), "Failed to get clipper, hr %#x.\n", hr); - ok(clipper == clipper2, "Got clipper %p, expected %p.\n", clipper2, clipper); + if (!ddraw_is_nvidia(ddraw)) + { + /* Disabled because it causes heap corruption (HeapValidate fails and random + * hangs in a later HeapFree) on Windows on one of my Machines: MacbookPro 10,1 + * running Windows 10 18363.535 and Nvidia driver 425.31. Driver version 441.66 + * is affected too. + * + * The same Windows and driver versions run the test without heap corruption on + * a Geforce 1060 GTX card. I have not seen the problem on AMD GPUs either. */ + hr = IDirectDrawSurface4_GetClipper(surface, &clipper2); + ok(SUCCEEDED(hr), "Failed to get clipper, hr %#x.\n", hr); + ok(clipper == clipper2, "Got clipper %p, expected %p.\n", clipper2, clipper); + } /* Show that invoking the Release method does not crash, but don't get the * vtable through the clipper pointer because it is no longer pointing to diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c index f4a709711b0..20a1bc5f3af 100644 --- a/dlls/ddraw/tests/ddraw7.c +++ b/dlls/ddraw/tests/ddraw7.c @@ -16290,9 +16290,19 @@ static void test_clipper_refcount(void) IDirectDrawClipper_Release(clipper); IDirectDrawClipper_Release(clipper); - hr = IDirectDrawSurface7_GetClipper(surface, &clipper2); - ok(SUCCEEDED(hr), "Failed to get clipper, hr %#x.\n", hr); - ok(clipper == clipper2, "Got clipper %p, expected %p.\n", clipper2, clipper); + if (!ddraw_is_nvidia(ddraw)) + { + /* Disabled because it causes heap corruption (HeapValidate fails and random + * hangs in a later HeapFree) on Windows on one of my Machines: MacbookPro 10,1 + * running Windows 10 18363.535 and Nvidia driver 425.31. Driver version 441.66 + * is affected too. + * + * The same Windows and driver versions run the test without heap corruption on + * a Geforce 1060 GTX card. I have not seen the problem on AMD GPUs either. */ + hr = IDirectDrawSurface7_GetClipper(surface, &clipper2); + ok(SUCCEEDED(hr), "Failed to get clipper, hr %#x.\n", hr); + ok(clipper == clipper2, "Got clipper %p, expected %p.\n", clipper2, clipper); + } /* Show that invoking the Release method does not crash, but don't get the * vtable through the clipper pointer because it is no longer pointing to