mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-24 13:21:05 +00:00
ee1f6d7a78
We have the `LauncherRegistryInfo` class to check the launcher process was launched successfully on Windows by comparing the timestamps in the registry when each process was launched. The problem was when the process is launched from an elevated process, we relaunch a new launcher process via shell after we updated the launcher's timestamp. As a result, `LauncherRegistryInfo` unexpectedly disabled the launcher process even though there was nothing wrong. A proposed fix is to introduce delay-write to the `LauncherRegistryInfo`. With this, `LauncherRegistryInfo::Check` modifies only the image timestamp. To update the launcher/browser timestamps, we need to call `LauncherRegistryInfo::Commit`. When we ask shell to relaunch a new process, we hold back commit, delegating it to the new process. There is another consideration needed. If something fails during `LauncherMain`, we call `DisableDueToFailure()` to disable the launcher until the image timestamp is changed. In such a case, we should not change the stored timestamps even though commit is attempted. The problem is we use a different instance to call `DisableDueToFailure()` in `HandleLauncherError`. To deal with this design, `LauncherRegistryInfo` has a static boolean to indicate disablement happens or not. Differential Revision: https://phabricator.services.mozilla.com/D44928 --HG-- extra : moz-landing-system : lando |
||
---|---|---|
.. | ||
test | ||
AutoSQLiteLifetime.cpp | ||
AutoSQLiteLifetime.h | ||
Bootstrap.cpp | ||
Bootstrap.h | ||
CmdLineAndEnvUtils.cpp | ||
CmdLineAndEnvUtils.h | ||
components.conf | ||
CreateAppData.cpp | ||
EventTracer.cpp | ||
EventTracer.h | ||
glxtest.cpp | ||
LauncherRegistryInfo.cpp | ||
LauncherRegistryInfo.h | ||
MacApplicationDelegate.h | ||
MacApplicationDelegate.mm | ||
MacAutoreleasePool.h | ||
MacAutoreleasePool.mm | ||
MacLaunchHelper.h | ||
MacLaunchHelper.mm | ||
ModuleEvaluator.cpp | ||
ModuleEvaluator.h | ||
ModuleVersionInfo.cpp | ||
ModuleVersionInfo.h | ||
moz.build | ||
nsAndroidStartup.cpp | ||
nsAppRunner.cpp | ||
nsAppRunner.h | ||
nsAppStartupNotifier.cpp | ||
nsAppStartupNotifier.h | ||
nsCommandLineServiceMac.h | ||
nsCommandLineServiceMac.mm | ||
nsConsoleWriter.cpp | ||
nsEmbeddingModule.cpp | ||
nsEmbedFunctions.cpp | ||
nsGDKErrorHandler.cpp | ||
nsGDKErrorHandler.h | ||
nsIAppStartupNotifier.h | ||
nsINativeAppSupport.idl | ||
nsIWinAppHelper.idl | ||
nsIXREDirProvider.idl | ||
nsNativeAppSupportBase.cpp | ||
nsNativeAppSupportBase.h | ||
nsNativeAppSupportCocoa.mm | ||
nsNativeAppSupportDefault.cpp | ||
nsNativeAppSupportUnix.cpp | ||
nsNativeAppSupportWin.cpp | ||
nsNativeAppSupportWin.h | ||
nsSigHandlers.cpp | ||
nsSigHandlers.h | ||
nsUpdateDriver.cpp | ||
nsUpdateDriver.h | ||
nsWindowsRestart.cpp | ||
nsWindowsWMain.cpp | ||
nsX11ErrorHandler.cpp | ||
nsX11ErrorHandler.h | ||
nsXREDirProvider.cpp | ||
nsXREDirProvider.h | ||
platform.ini | ||
PolicyChecks.h | ||
ProfileReset.cpp | ||
ProfileReset.h | ||
SafeMode.h | ||
UIKitDirProvider.h | ||
UIKitDirProvider.mm | ||
UntrustedModulesData.cpp | ||
UntrustedModulesData.h | ||
UntrustedModulesProcessor.cpp | ||
UntrustedModulesProcessor.h | ||
updaterfileutils_osx.h | ||
updaterfileutils_osx.mm | ||
WinDllServices.cpp | ||
WinDllServices.h | ||
WinTokenUtils.cpp | ||
WinTokenUtils.h |