https://bugs.winehq.org/show_bug.cgi?id=51345
Bug ID: 51345 Summary: Regression: Visual Studio 2005 "package load failure" Product: Wine Version: 6.11 Hardware: x86-64 OS: FreeBSD Status: NEW Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: damjan.jov@gmail.com
winetricks vc2005trial wine cmd "C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat" devenv
Some time during 28-31 March 2021, the Visual Studio 2005 trial began giving +/- 10 of these error dialogs on startup, each relating to a different package. This is a rough transcript of one of them:
------------------------ Package Load Failure ------------------------ Package 'Microsoft.VisualStudio.TestTools.TestCaseManagement.QualtyToolsPackage, Microsoft.VisualStudio.QualityTools.TestCaseManagement, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03F5F7f11d50s3a' has failed to load properly { GUID = {AS4DSAES-9ACE-4FOE-ADGF-7AFESSFEFCET) ). Please contact package vendor for assistance. Application restart is recommended, due to possible environment corruption. Would you like to disable loading this package in the future? You may use 'devenv /resetskippkgs' to re-enable package loading.
Yes No ------------------------
It is the worst git bisect I've ever done. Apart from the lengthy time needed to test each commit, the regression occurs within a range of 44 commits (bb065801a69..2a8a4cbbe63), the first 43 of which all die on startup, so we can't easily distinguish that bug from this one.
I've now had to make a separate branch, "git rebase --onto <that range>" to copy commits from that range there, then "git rebase -i" to reorder them and separate the startup-breaking commits (ntdll/kernel32/kernelbase) from the other commits.
Unfortunately, having done so, it appears the startup-breaking commits are also the commits that caused this regression. One or more of these is the culprit:
ntdll: Move kernel32 loading into LdrInitializeThunk(). ntdll: Return system dir path for PE mapping bootstrap placeholders. ntdll: Fail to load non-existent dlls, except during prefix bootstrap. ntdll: Also check syswow64 to determine if the prefix was initialized. include: Add more SYSTEM_INFORMATION_CLASS definitions. kernel32: Implement GetSystemCpuSetInformation(). ntdll: Implement NtQuerySystemInformationEx(SystemCpuSetInformation). kernelbase: Don't fall back to dll loading for LOAD_LIBRARY_AS_DATAFILE. ntdll: Set the window title to the image name on the Unix side. ntdll: Remove load_builtin_dll() and get_load_order() from the Unix interface. ntdll: Map the builtin or fake dll from the Wine dirs if it's missing from the prefix.