[Bug 31603] New: App manifests that specify processorArchitecture="*" fail to find assemblies

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Sep 2 15:12:44 CDT 2012


http://bugs.winehq.org/show_bug.cgi?id=31603

             Bug #: 31603
           Summary: App manifests that specify processorArchitecture="*"
                    fail to find assemblies
           Product: Wine
           Version: 1.5.12
          Platform: x86
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: ntdll
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: dank at kegel.com
    Classification: Unclassified


Doing
  unset WINEPREFIX
  rm -rf ~/.wine
  sh winetricks -q vcrun2008
  cd ~/wine-git/dlls/msvcr90/tests
  WINEDLLOVERRIDES=msvcr90=n ~/wine-git/wine msvcr90_test.exe.so
says
msvcr90.c:243: Tests skipped: msvcr90.dll not installed (got 126)

This seems wrong; that dll is in fact installed.  The app in question
is built with the manifest 
http://source.winehq.org/source/dlls/msvcr90/tests/msvcr90.manifest
which contains the line
  processorArchitecture="*"

Tracing through the code, lookup_manifest_file in ntdll/actctx.c seems to
incorrectly parse the native DLL's manifest as having build 0 rather
than 30729.

The problem appears to be that line 1872 assumes that the string
lookup contains no *'s other than the ones in lookup_fmtW, and so
doesn't skip to where it expected to when it does the strchrW:

   1826     static const WCHAR wine_trailerW[] =
{'d','e','a','d','b','e','e','f','.','m','a','n','i','f','e','s','t'};

   1842     sprintfW( lookup, lookup_fmtW, ai->arch, ai->name, ai->public_key,
   1843               ai->version.major, ai->version.minor, lang );

   1872             tmp = dir_info->FileName + (strchrW(lookup, '*') - lookup);
   1873             build = atoiW(tmp);
   1874             if (build < min_build) continue;

If ai->arch contains a '*', as it does in tests/msvcr90.manifest,
this assumption is violated.  Changing the manifest to say
  processorArchitecture="x86"
lets the test run and find the native DLL, at least on x86.

So, is the manifest wrong, or is lookup_manifest_file() wrong?

(This came up while I was trying to write tests for vcomp.dll.  It was
frustrating to find that the example I'd borrowed the manifest from was
broken.)

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list