Hi,
While running your changed tests on Windows, 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=20063
Your paranoid android.
=== wvistau64 (32 bit shlexec) === shlexec.c:1666: Test failed: WaitForSingleObject returned 258 shlexec.c:1695: Test failed: argvA3 expected 'QuotedLowerL', got 'Open' shlexec.c:1703: Test failed: argvA4 expected 'C:\Users\winetest\AppData\Local\Temp\wtD4FA.tmp\test file.shlexec', got 'C:\Users\winetest\AppData\Local\Temp\wtD4FA.tmp\test file.noassoc.shlexec' shlexec.c:1695: Test failed: argvA3 expected 'QuotedUpperL', got 'QuotedLowerL' shlexec.c:1666: Test failed: ShlexecVar expected 'Present', but key not found or empty shlexec.c:1695: Test failed: argvA3 expected 'Open', but key not found or empty shlexec.c:1703: Test failed: argvA4 expected 'C:\Users\winetest\AppData\Local\Temp\wtD4FA.tmp\masked file.shlexec', but key not found or empty
=== w1064 (32 bit shlexec) === shlexec.c:2426: Test failed: failed: rc=29 err=2 shlexec.c:2424: Test failed: ShlexecVar expected 'Present', but key not found or empty shlexec.c:2426: Test failed: failed: rc=29 err=32 shlexec.c:2426: Test failed: failed: rc=29 err=2 shlexec.c:2424: Test failed: ShlexecVar expected 'Present', but key not found or empty shlexec.c:2426: Test failed: failed: rc=29 err=32
=== w1064 (64 bit shlexec) === shlexec.c:2426: Test failed: failed: rc=29 err=2 shlexec.c:2426: Test failed: failed: rc=29 err=2 shlexec.c:2424: Test failed: ShlexecVar expected 'Present', but key not found or empty shlexec.c:2426: Test failed: failed: rc=29 err=32 shlexec.c:2438: Test failed: ddeExec expected '[ifexec("C:\Users\winetest\AppData\Local\Temp\wt9FCE.tmp\test file.sde")]', got '[open("C:\Users\winetest\AppData\Local\Temp\wt9FCE.tmp\test file.sde")]' shlexec.c:2426: Test failed: failed: rc=29 err=2 shlexec.c:2426: Test failed: failed: rc=29 err=2
On Thu, 28 Jan 2016, Marvin wrote: [...]
=== wvistau64 (32 bit shlexec) === shlexec.c:1666: Test failed: WaitForSingleObject returned 258 shlexec.c:1695: Test failed: argvA3 expected 'QuotedLowerL', got 'Open' shlexec.c:1703: Test failed: argvA4 expected 'C:\Users\winetest\AppData\Local\Temp\wtD4FA.tmp\test file.shlexec', got 'C:\Users\winetest\AppData\Local\Temp\wtD4FA.tmp\test file.noassoc.shlexec' shlexec.c:1695: Test failed: argvA3 expected 'QuotedUpperL', got 'QuotedLowerL' shlexec.c:1666: Test failed: ShlexecVar expected 'Present', but key not found or empty shlexec.c:1695: Test failed: argvA3 expected 'Open', but key not found or empty shlexec.c:1703: Test failed: argvA4 expected 'C:\Users\winetest\AppData\Local\Temp\wtD4FA.tmp\masked file.shlexec', but key not found or empty
The usual occasional timeout-induced failures for this VM.
=== w1064 (32 bit shlexec) === shlexec.c:2426: Test failed: failed: rc=29 err=2 shlexec.c:2424: Test failed: ShlexecVar expected 'Present', but key not found or empty shlexec.c:2426: Test failed: failed: rc=29 err=32 shlexec.c:2426: Test failed: failed: rc=29 err=2 shlexec.c:2424: Test failed: ShlexecVar expected 'Present', but key not found or empty shlexec.c:2426: Test failed: failed: rc=29 err=32
=== w1064 (64 bit shlexec) === shlexec.c:2426: Test failed: failed: rc=29 err=2 shlexec.c:2426: Test failed: failed: rc=29 err=2 shlexec.c:2424: Test failed: ShlexecVar expected 'Present', but key not found or empty shlexec.c:2426: Test failed: failed: rc=29 err=32 shlexec.c:2438: Test failed: ddeExec expected '[ifexec("C:\Users\winetest\AppData\Local\Temp\wt9FCE.tmp\test file.sde")]', got '[open("C:\Users\winetest\AppData\Local\Temp\wt9FCE.tmp\test file.sde")]' shlexec.c:2426: Test failed: failed: rc=29 err=2 shlexec.c:2426: Test failed: failed: rc=29 err=2
So the ShlexecVar lines are new but in fact it's caused by the same DDE failures we have had all along on Windows 10.
As explained in the email below the issue appears to be that hooking WaitForInputIdle() has not effect on Windows 10. So ShellExecute() does not wait for the child process to do the DDE exchange and returns too early. This results in a race between the parent and child process(es), both for the DDE exchange, and when checking the content of the child result file.
https://www.winehq.org/pipermail/wine-devel/2016-January/111496.html