Package correct Visual C++ CRT DLLs based on compiler version (fixes MSVCR100.dll error message on startup)

VERIFIED FIXED

Status

()

defect
--
major
VERIFIED FIXED
9 years ago
9 years ago

People

(Reporter: armenzg, Assigned: ted)

Tracking

Trunk
x86_64
Windows 7
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(Not tracked)

Details

()

Attachments

(1 attachment)

Reporter

Description

9 years ago
Steps to reproduce:
* Install ftp://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central/firefox-3.7a5pre.en-US.win64-x86_64.zip on Windows 64-bit machine without VS2010 being installed
* Run firefox.exe
Expected results:
* Firefox starts
Actual results:
* A message saying that MSVCR100.dll is missing is raised

NOTE: can someone please verify this? I am just filing what I have seen on the mailing lists.

The following are comments from the mailing list:
> I suspect that this is a packaging issue -- if we build with VC10,
> then we have to redist the VC10 runtime, which has a different name. 
...
> Exactly.
> If you don't have MSVC2010 (Express) installed you need to manually
> install the 2010 redistributables. Link, I guess: 
> http://www.google.com/url?sa=D&q=http://www.microsoft.com/downloads/details.aspx%3Fdisplaylang%3Den%26FamilyID%3Dbd512d9e-43c8-4655-81bf-9350143d5867&usg=AFQjCNHqjaREpVPUahBpSs0NAxZlABVTEA
> The reason the 32bit builds don't require the 2008 redistributables is
> that they don't use the real MS CRT but a custom build CRT
> (mozcrt19.dll) that has jemalloc patched in. Once jemalloc gets ported
> to WIN64 the msvcr100 dependency should go away. 

From IRC:
> nthomas: armenzg_mtg: is the problem with users needing the MS runtime
> redistributable that we don't have jemalloc w/ vs2010 yet, and the workaround
> (http://hg.mozilla.org/mozilla-central/file/tip/browser/installer/package-manifest.in#l58)
> doesn't support 2010 filenames either ?
> nthomas: if so, and we updated the manifest (with some #ifdef), and set
> WIN32_REDIST_DIR pointing to the right path, then the builds would just work
> armenzg_mtg: I don't know the code myself I can point at the code tomorrow
> and bringing it up at the meeting to see if people can look at it
Duplicate of this bug: 569248
I've got the same problem.
Reporter

Comment 3

9 years ago
(From bug 569248)
(In reply to comment #0)
> User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.3)
> Gecko/20100401 Firefox/3.6.3
> Build Identifier:
> http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/firefox-3.7a5pre.en-US.win64-x86_64.installer.exe
> 
> When I try to start the new x86_64 Build (downloaded May 31) I always get this
> message and Minefield will not open:
> http://pic.leech.it/pic.php?id=e0f0dceerror.png
> The Message in english:
> "firefox.exe - Systemerror
> 
> The application could not be startet because MSVCR100.dll is missed on this
> computer. Reinstall the application to solve the problem."
> 
> Reinstall does NOT solve the problem, I tried it twice.
> 
> Reproducible: Always
> 
> Steps to Reproduce:
> 1. Download Minefield 3.7a5pre x64 (May 31 build)
> 2. Start it
> 3.
> Actual Results:  
> I got the message I showed up above.
> 
> Expected Results:  
> Start ;)
Reporter

Comment 4

9 years ago
The workaround should be installing the Microsoft Visual C++ 2010 Redistributable Package (x64):
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=bd512d9e-43c8-4655-81bf-9350143d5867
Should we (or can we) redistribute it with the 64-bit builds?

Comment 6

9 years ago
(In reply to comment #4)
> The workaround should be installing the Microsoft Visual C++ 2010
> Redistributable Package

This only is a workaround for this nightlys.
It looks like MID: x-qdndVRK4WHx53RnZ2dnUVZ_uednZ2d@mozilla.org tells the real problem. mozcrt19.dll must be updated for 64bit.
http://mxr.mozilla.org/mozilla-central/source/browser/installer/package-manifest.in#60

package-manifest.in has no entry for VC++ 2010.
Component: General → Installer
QA Contact: general → installer
As comment #7 noted this is not really an installer issue and the package-manifest.in needs to be updated to include the msvc runtime... it really needs to be updated to include the appropriate msvc runtime for all versions of msvc when MOZ_MEMORY is not defined.
(In reply to comment #8)
> As comment #7 noted this is not really an installer issue and the
> package-manifest.in needs to be updated to include the msvc runtime... it
> really needs to be updated to include the appropriate msvc runtime for all
> versions of msvc when MOZ_MEMORY is not defined.

Robert, should we add entries of both VC++2008 runtime files and VC++2010 runtime files?  Currently there is no macro to detect VC++ version.
There are two problems here:
a) We need to set WIN32_REDIST_DIR in the mozconfig file to get the VC++ runtime DLLs copied to dist/bin. (The build system already knows to copy the right files, you just need to point it at the correct directory: http://mxr.mozilla.org/mozilla-central/source/build/win32/Makefile.in#85 )
b) We need to package those files in package-manifest.in. Currently we have support for the --enable-jemalloc case, and the non-jemalloc Visual C++ 2005 case, but not 2008 or 2010. It should be easy enough to add some defines per-VC version to pick the right one.)
Depends on: 569373
Assignee: nobody → ted.mielczarek
Status: NEW → ASSIGNED
Attachment #448547 - Flags: review?(nrthomas)
Summary: Missing MSVCR100.dll for Windows 64-bit builds → Package correct Visual C++ CRT DLLs based on compiler version
(In reply to comment #10)
> There are two problems here:
> a) We need to set WIN32_REDIST_DIR in the mozconfig file to get the VC++
> runtime DLLs copied to dist/bin. (The build system already knows to copy the
> right files, you just need to point it at the correct directory:
> http://mxr.mozilla.org/mozilla-central/source/build/win32/Makefile.in#85 )

I split this off to bug 569375 since I hijacked this bug for part b).
Reporter

Updated

9 years ago
Summary: Package correct Visual C++ CRT DLLs based on compiler version → Package correct Visual C++ CRT DLLs based on compiler version (fixes MSVCR100.dll error message on startup)
Comment on attachment 448547 [details] [diff] [review]
package the correct VC++ CRT DLLs based on compiler version

Looks good. I'm curious what MS changed so we don't need a manifest or the msvcm files for VS2010.
Attachment #448547 - Flags: review?(nrthomas) → review+
Reporter

Updated

9 years ago
Keywords: checkin-needed
I can checkin my own patches. :) I'll land this tomorrow.

Nick:
http://msdn.microsoft.com/en-us/library/dd293574.aspx

They dropped SxS for some reason. (Doesn't say why.)
Keywords: checkin-needed
Comment on attachment 448547 [details] [diff] [review]
package the correct VC++ CRT DLLs based on compiler version

http://hg.mozilla.org/mozilla-central/rev/9837814d8d86
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Duplicate of this bug: 471357
Blocks: 630857
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.