Closed Bug 1124017 Opened 5 years ago Closed 4 years ago

Get Firefox working on Windows XP SP2 when built with VS2015

Categories

(Firefox Build System :: General, defect)

x86
Windows 8.1
defect
Not set

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: briansmith, Unassigned)

References

Details

I think this is the bug that is most likely to be a showstopper for EVER being able to compile release builds with VS2015, so I recommend that somebody take it on ASAP and work with Microsoft, if necessary, to get the minimal help needed to get the runtime library working on SP2 before the VS2015 final release ships. If that is not done, then it seems likely that Mozilla would have to switch to clang for Windows builds if/when it gets tired of VS2013's C++11/C++14 limitations.

See:

* bug 1023941 comment 7, where the problem is described for VS2013

* toolkit/xre/WindowsCrtPatch.h, which is where the code for the VS2013 workaround is.

* The Chromium discussion, https://code.google.com/p/chromium/issues/detail?id=440500#c22, where somebody mentions that it seems like the standard library is dependent on the concurrent runtime, which would be bad because the concurrent runtime is the part that requires SP3.
I don't think Mozilla will immediately move to VS2015 right? It is not even released yet, and there might be a chance that MS might cut XP support completely. What is XP SP2 and XP SP3's marketshare on Firefox now?
My understanding is that MS has committed to VS2015 supporting XP SP3 but not earlier versions, which is what they committed to with VS2013.
Yes, I see the linked Chromium discussion now. The point is do we actually need it?
Looks like we already broke SP2. CF bug 1136775
> Looks like we already broke SP2. CF bug 1136775
I am not convinced about that. I have installed v36 successfully on SP2. We broke that one user's machine, and it happens to have SP2, but I don't think there is causation.
Clarification: I don't think we broke SP2 *due to the CRT imports issue*. We may have broken certain SP2 networking scenarios. Still looking into the bugs.
FYI, my current thinking is to move the browser download site to SHA-2 certificates at the end of 2015 and eliminate at least XP SP2 support when moving to VS2015 next year.
No longer blocks: VC14
Can this be marked as WONTFIX?
Yuhong, as I have pointed to you many times in the past, we will choose to stop supporting Windows XP SP2 when we know that we don't have a significant number of users on that platform.  Once again, please refrain suggesting that we should drop this support unless you have accurate numbers that show that there is no big group of Firefox users on Windows XP SP2.

Unless then, this bug is very much not WONTFIX.
And the point is that we are unlikely to move until next year.
We are unlikely to move until when our user base situation changes.  It could be this year, next year, or 3 years from now.
Back on topic: Does anybody know if VS2015-built Firefox runs on XP SP2 or not? I filed this bug because I couldn't test it on SP2 as I don't have a copy. Who does?
I can test XPSP2 if you can point me to a stack of patches that has been confirmed to build successfully with VS2015 RTM.
(In reply to David Major [:dmajor] from comment #13)
> I can test XPSP2 if you can point me to a stack of patches that has been
> confirmed to build successfully with VS2015 RTM.

Yea, that is part of my point, the patches hasn't even been checked in yet. We are unlikely to actually switch to VS2015 before next year. AFAIK it is not officially supported.
startup crash on xp sp3

(a68.a6c): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=00000000 ebx=00e5184c ecx=00000000 edx=00000000 esi=000000ad edi=028d606c
eip=01a1f760 esp=0012ee90 ebp=0012eeb4 iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010202

xul!nsTHashtable<nsBaseHashtableET<nsUint32HashKey,mozilla::MediaStreamGraphImpl *> >::Ops+0xc [f:\develop\mozilla\central\obj\obj-vc\dist\include\nsthashtable.h @ 347]
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\WINDOWS\system32\ucrtbase.dll - 
0012ee98 00498273 00dc0001 00000001 00000001 xul!mozilla::`dynamic initializer for 'gGraphs''+0x9 [f:\develop\mozilla\central\dom\media\mediastreamgraph.cpp @ 63]
WARNING: Stack unwind information not available. Following frames may be wrong.
0012eeb4 028d1d6b 028d5db8 028d6a98 9635c193 ucrtbase!initterm+0x43
0012eef4 028d1cac 00dc0000 00000000 0012ef44 xul!dllmain_crt_process_attach+0xa7 [f:\dd\vctools\crt\vcstartup\src\startup\dll_dllmain.cpp @ 65]
0012ef04 028d1e99 00dc0000 00000001 00000000 xul!dllmain_crt_dispatch+0x3b [f:\dd\vctools\crt\vcstartup\src\startup\dll_dllmain.cpp @ 133]
0012ef44 028d1fa2 00dc0000 00000001 00000000 xul!dllmain_dispatch+0x46 [f:\dd\vctools\crt\vcstartup\src\startup\dll_dllmain.cpp @ 182]
0012ef58 7c92118a 00dc0000 00000001 00000000 xul!_DllMainCRTStartup+0x1c [f:\dd\vctools\crt\vcstartup\src\startup\dll_dllmain.cpp @ 250]
0012ef78 7c93c4da 028d1f86 00dc0000 00000001 ntdll!LdrInitializeThunk+0x24
0012f080 7c936351 00000000 c0150008 00000000 ntdll!LdrFindResourceDirectory_U+0x28d
0012f32c 7c9364b3 00000000 0015e788 0012f700 ntdll!RtlValidateUnicodeString+0x507
*** WARNING: Unable to verify checksum for E:\develop\mozilla\obj\obj-VC\dist\bin\mozglue.dll
0012f5d4 002e2559 0015e788 0012f700 0012f6e0 ntdll!LdrLoadDll+0x110
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\WINDOWS\system32\kernel32.dll - 
0012f6b4 7c801bbd 0015e788 0012f700 0012f6e0 mozglue!`anonymous namespace'::patched_LdrLoadDll+0x444 [f:\develop\mozilla\central\mozglue\build\windowsdllblocklist.cpp @ 703]
*** WARNING: Unable to verify checksum for firefox.exe
0012f71c 0040252d 0012f734 00000000 00000008 kernel32!LoadLibraryExW+0xc8
0012f940 00402719 0012fa60 00000001 00000001 firefox!ReadDependentCB+0x57 [f:\develop\mozilla\central\xpcom\glue\standalone\nsxpcomglue.cpp @ 228]
0012fb68 004028ed 0012fd9c 004019e5 0012fd9c firefox!XPCOMGlueLoad+0x162 [f:\develop\mozilla\central\xpcom\glue\standalone\nsxpcomglue.cpp @ 383]
0012fb70 004019e5 0012fd9c 00000001 00000000 firefox!XPCOMGlueStartup+0x27 [f:\develop\mozilla\central\xpcom\glue\standalone\nsxpcomglue.cpp @ 485]
0012fea4 00401b79 001569f0 0012fed8 00000001 firefox!InitXPCOMGlue+0xea [f:\develop\mozilla\central\browser\app\nsbrowserapp.cpp @ 301]
0012ff44 004024ba 00000001 001569d0 00421358 firefox!NS_internal_main+0x4f [f:\develop\mozilla\central\browser\app\nsbrowserapp.cpp @ 367]
0012ff74 00403393 00000001 ffffe868 00155b40 firefox!wmain+0x132 [f:\develop\mozilla\central\toolkit\xre\nswindowswmain.cpp @ 138]
0012ffc0 7c817077 01d9f6ee 01d9f76e 7ffdf000 firefox!__scrt_common_main_seh+0xff [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl @ 264]
0012fff0 00000000 00403410 00000000 78746341 kernel32!RegisterWaitForInputIdle+0x49
(a58.92c): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=00000000 ebx=00000001 ecx=00000000 edx=61666564 esi=00000000 edi=02f37570
eip=00ff786c esp=0012f9b8 ebp=00000000 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010246
              
0012f9b4 02244748 00000001 0012f9d4 0012fc50 xul!EmptyCString+0xc [f:\develop\mozilla\central\xpcom\string\nsreadableutils.cpp @ 1094]
0012fb6c 02244de5 0012fc54 0012fc40 0224b1ed xul!nsToolkitProfileService::Init+0x2a8 [f:\develop\mozilla\central\toolkit\profile\nstoolkitprofileservice.cpp @ 474]
0012fb78 0224b1ed 0012fc54 00000000 00751380 xul!NS_NewToolkitProfileService+0x25 [f:\develop\mozilla\central\toolkit\profile\nstoolkitprofileservice.cpp @ 1088]
0012fc14 0224a1f0 0012fc40 02f48240 0012fd98 xul!XREMain::XRE_mainStartup+0xed [f:\develop\mozilla\central\toolkit\xre\nsapprunner.cpp @ 3891]
0012fc38 0224b6fd 00000000 001569d0 0012fd98 xul!XREMain::XRE_main+0x120 [f:\develop\mozilla\central\toolkit\xre\nsapprunner.cpp @ 4382]
(In reply to zhoubcfan from comment #15)
> startup crash on xp sp3

At first glance I would assume that any crash on SP3 is unrelated to the SP2-specific challenges that will need to be addressed in this bug. Could you file a new issue?
(In reply to David Major [:dmajor] from comment #17)
> (In reply to zhoubcfan from comment #15)
> > startup crash on xp sp3
> 
> At first glance I would assume that any crash on SP3 is unrelated to the
> SP2-specific challenges that will need to be addressed in this bug. Could
> you file a new issue?

bug 1204752
See Also: → 1204752
I have verified that with the patch in bug 1204752 applied, my Firefox build successfully runs in Windows XP Home SP2 and Windows XP Pro SP3! Note that I had to manually copy some additional CRT runtime DLLs (see bug 1204202) because we don't package all of them in the installer.
I was unable to run Firefox on a fresh install of XP SP2 from VS2015 builds produced on Try (https://treeherder.mozilla.org/#/jobs?repo=try&revision=46e456744f3a). Neither the installer nor firefox.exe (from the zip file) start at all. I know the installer has issues (we have to "bootstrap" Firefox 43.0.1 then use the built-in updater to upgrade to latest Firefox). But I thought if you downloaded a zip archive you'd be able to run firefox.exe.

If I install SP3, I'm able to launch firefox.exe from the zip archive just fine.

poiru: could you please retry on your machine? If you are able to get it to work, I don't know what you are doing.
Flags: needinfo?(birunthan)
(In reply to Gregory Szorc [:gps] from comment #20)
> I was unable to run Firefox on a fresh install of XP SP2 from VS2015 builds
> produced on Try
> (https://treeherder.mozilla.org/#/jobs?repo=try&revision=46e456744f3a).
> Neither the installer nor firefox.exe (from the zip file) start at all. I
> know the installer has issues (we have to "bootstrap" Firefox 43.0.1 then
> use the built-in updater to upgrade to latest Firefox). But I thought if you
> downloaded a zip archive you'd be able to run firefox.exe.

Both the installer and the .zip file work fine for me on Windows XP SP2. Can you try installing this again: http://archive.mozilla.org/pub/firefox/try-builds/gszorc@mozilla.com-46e456744f3af10b546ace7a686bf6c5753566c6/try-win32/firefox-48.0a1.en-US.win32.installer.exe
Flags: needinfo?(birunthan)
(In reply to Gregory Szorc [:gps] from comment #20)
> I was unable to run Firefox on a fresh install of XP SP2 from VS2015 builds
> produced on Try
> (https://treeherder.mozilla.org/#/jobs?repo=try&revision=46e456744f3a).
> Neither the installer nor firefox.exe (from the zip file) start at all. I
> know the installer has issues (we have to "bootstrap" Firefox 43.0.1 then
> use the built-in updater to upgrade to latest Firefox). But I thought if you
> downloaded a zip archive you'd be able to run firefox.exe.

To add to my previous comment, since you said the installer doesn't work either, I suspect you're trying to use the 64-bit installer/Firefox on 32-bit Windows XP SP2.
I'm pretty sure I wasn't using a 64-bit installer/Firefox because I was able to run both after upgrading to SP3.

What's really weird is if I double click the .exe nothing happens. I even installed Process Monitor and could find no system calls from firefox.exe when trying to run it. Something seems very fishy.
OK. I got the installer working on XP SP2!

I was able to start the installer from a command prompt. I thought this was weird. When I right clicked on the installer and selected "properties" there was a "security" section that said "This file came from another computer and might be blocked to help protect this computer." I clicked the "Unblock" button next to it and was able to run the installer by double clicking. I guess downloading via IE put some restrictions on the executables.

I reckon this failure is because we don't sign installers on Try builds. Anyway, the important thing is I can run builds built with Visual Studio 2015 just fine!

I'm going to mark this bug resolved. There is much more testing that should probably be performed on VS2015 builds. But this bug was filed to track getting a VS2015 built Firefox working on XP SP2 and that appears to work. So the bug has fulfilled its purpose. Please reopen if I am horribly naive about needing to verify more. Or preferably file new bugs to track additional verification.
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Was the installer signed with a SHA1 or SHA256 certificate?
SHA-1 from the Mozilla Fake SPC.
Product: Core → Firefox Build System
You need to log in before you can comment on or make changes to this bug.