On Monday, 25 April 2016 10:57 PM, Francois Gouget wrote:
On Mon, 25 Apr 2016, Hugh McMaster wrote:
The Windows 2000 VM is timing out with the following dialog message:
kernel32_test.exe - Entry Point Not Found The procedure entry point InitializeSListHead could not be located in the dynamic link library kernel32.dll.
For a screenshot, see https://testbot.winehq.org/JobDetails.pl?Key=22547&log_201=1&scrshot...
I'm not sure what the cause is. I sent a patch modifying a comment by one character and the same error occurs.
It's exactly as the message says: kernel32_test.exe imports InitializeSListHead(). That's not an issue on Windows XP and greater because they have a kernel32.dll that exports that function. But Windows 2000 does not have this function and so Windows fails to resolve the executable's imports (which happens before starting the executable), and pops up a dialog to inform the user. Since there is no one to dismiss the dialog nothing happens until the alloted 2 minutes run out and the test is marked as "timed out".
The solution would be to replace this direct function call with a function pointer which you would initialize using GetModuleHandleA() and GetProcAddress(). See dlls/kernel32/tests/sync.c for instance.
Thanks for the explanation.
I checked the commit log and found the problem:
kernel32/tests: Clean up interlocked SList tests. commit: 38d0690a2c0f01272a4199e9b73f67b6b83f7fb6 author: Sebastian Lackner sebastian@fds-team.de Thu, 11 Feb 2016 02:53:11 +0000 (03:53 +0100)
The patch removes an if statement that checks for a valid pointer to the function.
I'll send a patch tomorrow, unless someone beats me to it. ;-)