Signed-off-by: Rémi Bernon rbernon@codeweavers.com ---
Not 100% it'll solve all the problems, as I can hardly reproduce them either running patches on the testbot or in a VM, but I think it might the few timeout cases which I was able to see.
dlls/dinput/tests/driver_bus.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/dlls/dinput/tests/driver_bus.c b/dlls/dinput/tests/driver_bus.c index 9492f036c0f..be38de1999e 100644 --- a/dlls/dinput/tests/driver_bus.c +++ b/dlls/dinput/tests/driver_bus.c @@ -421,6 +421,7 @@ struct phys_device
WCHAR instance_id[MAX_PATH]; WCHAR device_id[MAX_PATH]; + IRP *pending_remove;
BOOL use_report_id; DWORD report_descriptor_len; @@ -677,8 +678,14 @@ static NTSTATUS pdo_pnp( DEVICE_OBJECT *device, IRP *irp ) { input_queue_cleanup( &impl->input_queue ); expect_queue_cleanup( &impl->expect_queue ); + irp = impl->pending_remove; IoDeleteDevice( device ); if (winetest_debug > 1) trace( "Deleted Bus PDO %p\n", device ); + if (irp) + { + irp->IoStatus.Status = STATUS_SUCCESS; + IoCompleteRequest( irp, IO_NO_INCREMENT ); + } } return STATUS_SUCCESS; } @@ -1220,7 +1227,9 @@ static NTSTATUS WINAPI pdo_ioctl( DEVICE_OBJECT *device, IRP *irp ) impl->base.state = PNP_DEVICE_REMOVED; irp_queue_clear( &impl->input_queue.pending ); KeReleaseSpinLock( &impl->base.lock, irql ); - status = STATUS_SUCCESS; + impl->pending_remove = irp; + IoMarkIrpPending( irp ); + status = STATUS_PENDING; break; case IOCTL_WINETEST_CREATE_DEVICE: ok( 0, "unexpected call\n" );
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/dinput/tests/driver_bus.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/dlls/dinput/tests/driver_bus.c b/dlls/dinput/tests/driver_bus.c index be38de1999e..00bc3b8fb61 100644 --- a/dlls/dinput/tests/driver_bus.c +++ b/dlls/dinput/tests/driver_bus.c @@ -760,7 +760,9 @@ static NTSTATUS pdo_pnp( DEVICE_OBJECT *device, IRP *irp ) case EjectionRelations: if (winetest_debug > 1) trace( "pdo_pnp IRP_MN_QUERY_DEVICE_RELATIONS EjectionRelations\n" ); ok( !irp->IoStatus.Information, "got unexpected EjectionRelations relations\n" ); - status = irp->IoStatus.Status; + irp->IoStatus.Information = get_device_relations( device, (void *)irp->IoStatus.Information, 1, &device ); + if (!irp->IoStatus.Information) status = STATUS_NO_MEMORY; + else status = STATUS_SUCCESS; break; case RemovalRelations: if (winetest_debug > 1) trace( "pdo_pnp IRP_MN_QUERY_DEVICE_RELATIONS RemovalRelations\n" );
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=111047
Your paranoid android.
=== w7u_adm (32 bit report) ===
dinput: device8: Timeout
=== w8 (32 bit report) ===
dinput: joystick8.c:1393: Test failed: 0x500: GetDeviceData returned 0x8007001e joystick8.c:1395: Test failed: 0x500: got dwOfs 0 joystick8.c:1396: Test failed: 0x500: got dwData 0 joystick8.c:1400: Test failed: 0x500: GetDeviceData returned 0x8007001e joystick8.c:1406: Test failed: 0x500: objdata[0]: got dwOfs 0 joystick8.c:1407: Test failed: 0x500: objdata[0]: got dwData 0 joystick8.c:1407: Test failed: 0x500: objdata[1]: got dwData 0 joystick8.c:1406: Test failed: 0x500: objdata[2]: got dwOfs 0 joystick8.c:1407: Test failed: 0x500: objdata[2]: got dwData 0 joystick8.c:1406: Test failed: 0x500: objdata[3]: got dwOfs 0 joystick8.c:1407: Test failed: 0x500: objdata[3]: got dwData 0 joystick8.c:1418: Test failed: 0x500: WaitForSingleObject failed joystick8.c:1424: Test failed: 0x500: GetDeviceData returned 0x8007001e joystick8.c:1427: Test failed: 0x500: got dwOfs 0 joystick8.c:1429: Test failed: 0x500: got dwData 0 joystick8.c:1433: Test failed: 0x500: GetDeviceData returned 0x8007001e joystick8.c:1434: Test failed: 0x500: got 32 expected 8 joystick8.c:1442: Test failed: 0x500: objdata[0]: got dwData 0 joystick8.c:1440: Test failed: 0x500: objdata[1]: got dwOfs 0 joystick8.c:1442: Test failed: 0x500: objdata[1]: got dwData 0 joystick8.c:1440: Test failed: 0x500: objdata[2]: got dwOfs 0 joystick8.c:1440: Test failed: 0x500: objdata[3]: got dwOfs 0 joystick8.c:1440: Test failed: 0x500: objdata[4]: got dwOfs 0 joystick8.c:1440: Test failed: 0x500: objdata[6]: got dwOfs 0 joystick8.c:1442: Test failed: 0x500: objdata[6]: got dwData 0 joystick8.c:1440: Test failed: 0x500: objdata[7]: got dwOfs 0 joystick8.c:1442: Test failed: 0x500: objdata[7]: got dwData 0 joystick8.c:1449: Test failed: 0x500: WaitForSingleObject failed joystick8.c:1453: Test failed: 0x500: GetDeviceState returned: 0x8007001e joystick8.c:1454: Test failed: 0x500: got lX 32767 joystick8.c:1455: Test failed: 0x500: got lY 5594 joystick8.c:1458: Test failed: 0x500: got rgdwPOV[0] 13500 joystick8.c:1460: Test failed: 0x500: got rgbButtons[0] 0x80 joystick8.c:1465: Test failed: 0x500: Unacquire returned: 0x1
=== debian11 (32 bit French report) ===
dinput: keyboard.c:443: Test failed: failed to queue keyboard event
On 3/23/22 12:46, Marvin wrote:
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=111047
Your paranoid android.
=== w7u_adm (32 bit report) ===
dinput: device8: Timeout
This times out in PATCH 1 too, but device8 test doesn't use the driver, so I think it's not related.
=== w8 (32 bit report) ===
dinput: joystick8.c:1393: Test failed: 0x500: GetDeviceData returned 0x8007001e joystick8.c:1395: Test failed: 0x500: got dwOfs 0 joystick8.c:1396: Test failed: 0x500: got dwData 0 joystick8.c:1400: Test failed: 0x500: GetDeviceData returned 0x8007001e joystick8.c:1406: Test failed: 0x500: objdata[0]: got dwOfs 0 joystick8.c:1407: Test failed: 0x500: objdata[0]: got dwData 0 joystick8.c:1407: Test failed: 0x500: objdata[1]: got dwData 0 joystick8.c:1406: Test failed: 0x500: objdata[2]: got dwOfs 0 joystick8.c:1407: Test failed: 0x500: objdata[2]: got dwData 0 joystick8.c:1406: Test failed: 0x500: objdata[3]: got dwOfs 0 joystick8.c:1407: Test failed: 0x500: objdata[3]: got dwData 0 joystick8.c:1418: Test failed: 0x500: WaitForSingleObject failed joystick8.c:1424: Test failed: 0x500: GetDeviceData returned 0x8007001e joystick8.c:1427: Test failed: 0x500: got dwOfs 0 joystick8.c:1429: Test failed: 0x500: got dwData 0 joystick8.c:1433: Test failed: 0x500: GetDeviceData returned 0x8007001e joystick8.c:1434: Test failed: 0x500: got 32 expected 8 joystick8.c:1442: Test failed: 0x500: objdata[0]: got dwData 0 joystick8.c:1440: Test failed: 0x500: objdata[1]: got dwOfs 0 joystick8.c:1442: Test failed: 0x500: objdata[1]: got dwData 0 joystick8.c:1440: Test failed: 0x500: objdata[2]: got dwOfs 0 joystick8.c:1440: Test failed: 0x500: objdata[3]: got dwOfs 0 joystick8.c:1440: Test failed: 0x500: objdata[4]: got dwOfs 0 joystick8.c:1440: Test failed: 0x500: objdata[6]: got dwOfs 0 joystick8.c:1442: Test failed: 0x500: objdata[6]: got dwData 0 joystick8.c:1440: Test failed: 0x500: objdata[7]: got dwOfs 0 joystick8.c:1442: Test failed: 0x500: objdata[7]: got dwData 0 joystick8.c:1449: Test failed: 0x500: WaitForSingleObject failed joystick8.c:1453: Test failed: 0x500: GetDeviceState returned: 0x8007001e joystick8.c:1454: Test failed: 0x500: got lX 32767 joystick8.c:1455: Test failed: 0x500: got lY 5594 joystick8.c:1458: Test failed: 0x500: got rgdwPOV[0] 13500 joystick8.c:1460: Test failed: 0x500: got rgbButtons[0] 0x80 joystick8.c:1465: Test failed: 0x500: Unacquire returned: 0x1
=== debian11 (32 bit French report) ===
dinput: keyboard.c:443: Test failed: failed to queue keyboard event
These look like classic spurious failures, also probably not related.
These hid timeouts from PATCH 1 are apparently gone here, so hopefully it solves issues introduced with yesterday batch... or makes it a better at least. *crossing fingers*
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=111046
Your paranoid android.
=== w7u_adm (32 bit report) ===
dinput: device8: Timeout