http://bugs.winehq.org/show_bug.cgi?id=31609
Bug #: 31609 Summary: TestLauncher says a required DLL is missing, but the test runs fine without TestLauncher Product: Testbot Version: unspecified Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: unknown AssignedTo: wine-bugs@winehq.org ReportedBy: dank@kegel.com Classification: Unclassified
http://source.winehq.org/git/tools.git/blob/HEAD:/testbot/src/TestLauncher/T... has a function AllImportedDllsPresent() that tries to avoid running tests that implicitly link against DLLs that aren't present. Unfortunately, in the case of dlls with manifests, it reports it can't find dlls that are in fact present.
What it needs is a good dose of the medicine that cured the same problem in winetest: http://www.winehq.org/pipermail/wine-cvs/2010-July/068410.html A quick test shows that this works. I'll send a patch soon.
http://bugs.winehq.org/show_bug.cgi?id=31609
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch, source
http://bugs.winehq.org/show_bug.cgi?id=31609
--- Comment #1 from Dan Kegel dank@kegel.com 2012-09-03 21:50:11 CDT --- Created attachment 41568 --> http://bugs.winehq.org/attachment.cgi?id=41568 Draft patch allowing vcomp test to execute
How's this look?
http://bugs.winehq.org/show_bug.cgi?id=31609
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |fgouget@codeweavers.com
--- Comment #2 from François Gouget fgouget@codeweavers.com 2012-09-05 04:28:34 CDT --- You're calling the functions directly instead of using the function pointers. Also it might be worth splitting the patch in two parts: one to introduce the 'goto done' which I feel is worth it on its own and the other for the activation context stuff. But then others might say this is overkill.
Otherwise I can't test the patch right now but it looks good.
http://bugs.winehq.org/show_bug.cgi?id=31609
--- Comment #3 from Dan Kegel dank@kegel.com 2012-09-07 21:21:32 CDT --- Patches sent, http://www.winehq.org/pipermail/wine-patches/2012-September/117630.html http://www.winehq.org/pipermail/wine-patches/2012-September/117631.html
http://bugs.winehq.org/show_bug.cgi?id=31609
--- Comment #4 from Dan Kegel dank@kegel.com 2012-09-10 21:30:08 CDT --- Workaround: late-bind the DLL, like most tests do.
http://bugs.winehq.org/show_bug.cgi?id=31609
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Depends on| |33065
http://bugs.winehq.org/show_bug.cgi?id=31609
--- Comment #5 from François Gouget fgouget@codeweavers.com 2013-03-17 05:18:12 CDT --- The new plan for this is to get rid of TestLauncher and use winetest.exe directly instead. This will remove code duplication and avoid such issues in the future.
What's needed for that is the ability to package winetest.exe with a single test to not have to shuttle around a bloated binary for every small test.
See bug 33065 - Make it possible to build a winetest executable with a single test.
https://bugs.winehq.org/show_bug.cgi?id=31609
--- Comment #6 from François Gouget fgouget@codeweavers.com --- Created attachment 61157 --> https://bugs.winehq.org/attachment.cgi?id=61157 Dummy patch to run the vcomp:vcomp test
The new new plan is to _not_ get rid of TestLauncher because a more careful analysis showed that TestLauncher and WineTest have quite different requirements such that merging the two does not really make sense (imho).
Furthermore this issue is no longer present in the TestBot because the vcomp test dynamically loads vcomp.dll.
Paradoxically WineTest still has the issue because it parses the name of the test executable, infers that it's testing vcomp.dll, and then checks for the presence of that dll. And apparently the code in WineTest is still not good enough to properly detect the presence of vcomp.dll so that WineTest.exe does not run vcomp_test.exe. So as is, merging TestLauncher with WineTest would make things worse!
See also: https://www.winehq.org/pipermail/wine-devel/2017-September/119052.html
Note that not all VMs have vcomp.dll. The attached patch can be used on the TestBot to verify that it runs the test when appropriate and to figure out which VMs have vcomp.dll. Based on the current results the 32 bit dll is present on w2000pro, wxppro, w2003std, wvistau64*, w2008s64, w8, w864 and the 64 bit one is present on wvistau64, w2008s64 and w864.
Note that some online resources seem to imply that vcomp.dll is present in the Visual C++ 2005 redistributable (and VC++ 2005 was indeed installed on all the VMs that have vcomp.dll except w2008s64 (though maybe it was installed and it was not written down)). Some VMs seem to have other versions such as vcomp90.dll but not vcomp.dll.
https://bugs.winehq.org/show_bug.cgi?id=31609
--- Comment #7 from François Gouget fgouget@codeweavers.com --- For the the WineTest side of this bug, see bug 45032.
https://bugs.winehq.org/show_bug.cgi?id=31609
tokktokk fdsfgs@krutt.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |fdsfgs@krutt.org
https://bugs.winehq.org/show_bug.cgi?id=31609 Bug 31609 depends on bug 33065, which changed state.
Bug 33065 Summary: Make it possible to build a winetest executable with a single test https://bugs.winehq.org/show_bug.cgi?id=33065
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |WONTFIX
https://bugs.winehq.org/show_bug.cgi?id=31609
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Assignee|wine-bugs@winehq.org |fgouget@codeweavers.com
https://bugs.winehq.org/show_bug.cgi?id=31609
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Fixed by SHA1| |feeea5ba4825a98aac577bf24b1 | |76697a22bd8cc Resolution|--- |FIXED
--- Comment #8 from François Gouget fgouget@codeweavers.com --- This patch drops the AllImportedDllsPresent() function and all the related code. Instead it detects the Windows critical error dialog. This allows TestLauncher to also deal with missing entry points, missing ordinals, and missing indirect dependencies (when a dll used by the test depends on another dll that is missing).
commit feeea5ba4825a98aac577bf24b176697a22bd8cc Author: Francois Gouget fgouget@codeweavers.com Date: Mon Mar 15 19:15:39 2021 +0100
testbot/TestLauncher: Fix the detection of test executable dependencies.
Detect the critical error dialog that pops up when the test executable depends on a missing dll or entry point. This improves the diagnostic messages and avoids long timeouts.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=31609 Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=32216 Signed-off-by: Francois Gouget fgouget@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org