New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 673900 link

Starred by 5 users

Issue metadata

Status: Fixed
Owner:
Closed: Aug 2017
Cc:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 1
Type: Bug



Sign in to add a comment

component release build mini_installer.exe not executing with sxs error

Project Member Reported by wfh@chromium.org, Dec 13 2016

Issue description

Chrome Version: 57.0.2950.0 a77510ea6
OS: Win 8.1 64-bit

What steps will reproduce the problem?
(1) build with following gn args

is_component_build = true
is_debug = false
target_cpu = "x86"
enable_nacl = false
remove_webcore_debug_symbols = true
is_chrome_branded = true
is_clang = true

(2) ninja -C out\default mini_installer
(3) copy mini_installer.exe to VM
(4) execute mini_installer.exe --system-level from elevated prompt

What is the expected result?

Chrome runs

What happens instead?

Chrome does not run with a sxs error (see image).

Please use labels and text to provide additional information.


For graphics-related bugs, please copy/paste the contents of the about:gpu
page at the end of this report.

 
sxserror.png
10.4 KB View Download

Comment 1 by wfh@chromium.org, Dec 13 2016

Cc: brucedaw...@chromium.org grt@chromium.org

Comment 2 by wfh@chromium.org, Dec 13 2016

attaching a trace
SxsTrace.etl
128 KB Download

Comment 3 by wfh@chromium.org, Dec 13 2016

maybe this is needed too/instead?
sxstrace.txt
12.2 KB View Download
Relevant bit:
INFO: Parsing Manifest File C:\Program Files (x86)\Google\Chrome\Application\57.0.2950.0\57.0.2950.0.MANIFEST.
	INFO: Manifest Definition Identity is 57.0.2950.0,type="win32",version="57.0.2950.0".
	ERROR: The file osmesa.dll is included by multiple assemblies.
ERROR: Activation Context generation failed.
Cc: robliao@chromium.org

Comment 6 by grt@chromium.org, Dec 14 2016

Labels: -Pri-3 Pri-1
Status: Available (was: Untriaged)
This is happening for me, too, but with the non-clang build. I'd say this is pretty important since it makes development a pain. Bumping to P1.

Comment 7 by grt@chromium.org, Dec 14 2016

Okay, so osmesa.dll, libGLESv2.dll, and libEGL.dll are each listed twice in the manifest. Delete the duplicates and chrome.exe will launch.

Comment 8 by grt@chromium.org, Dec 14 2016

Cc: -grt@chromium.org roc...@chromium.org
Owner: grt@chromium.org
Status: Started (was: Available)
aaaaand that's because .../gen/chrome_component.runtime_deps contains duplicates:

./libEGL.dll
./libGLESv2.dll
./osmesa.dll
Packages/ui/libEGL.dll
Packages/ui/libGLESv2.dll
Packages/ui/osmesa.dll

I think this is a result of //services/ui. I have no idea what's going on there.

Ken: What is this "Packages" directory? Is it expected that chrome.dll has a dependency on both copies of these dlls?

Here's a snippet of the dependency tree leading to references to the two instances of the DLLs:
  //chrome/installer/mini_installer:mini_installer_archive
    //chrome:chrome
      //chrome:chrome_initial
        //chrome:chrome_dll
          //chrome:main_dll
            //chrome:browser_dependencies
              //chrome/browser:browser
                //apps:apps
                  //chrome/browser/extensions:extensions
                    //chrome/browser/devtools:devtools
                      //chrome/common:common
                        //chrome/common/extensions/api:extensions_features
                          //chrome/common/extensions/api:api_features
                            //chrome/common/extensions/api:api_features_json_features
                              //extensions/common:common
                                //content/public/common:common
                                  //content:content
                                    //content/gpu:gpu_sources
                                      //content/child:child
                                        //components/mime_util:mime_util
                                          //media:media
                                            //gpu/command_buffer/common:common
                                              //gpu:gpu
                                                //gpu/command_buffer/service:service_sources
                                                  //gpu/config:config_sources
                                                    //ui/gl:gl
                                                      //third_party/mesa:osmesa
                                        //content/common:common
                                          //ui/shell_dialogs:shell_dialogs
                                            //ui/aura:aura
                                              //services/ui:ui
                                                //services/ui:copy_gl_libraries
                                                  //third_party/angle:libEGL...
                                                  //third_party/angle:libGLESv2...
                                                  //third_party/mesa:osmesa...

Comment 9 by grt@chromium.org, Dec 14 2016

Cc: gab@chromium.org jbau...@chromium.org
+gab and jbauman who know more about how create_installer_archive.py generates the manifest than I do. tl;dr: for you two: component chrome no longer runs after install because the manifest has duplicate entries for three dlls. i think this started happening as a result of what's going on in //services/ui. maybe we just need to filter duplicates when generating the manifest, but maybe the problem is that these duplicate dependencies are there in the first place. i'm not sure.
We should not be archiving anything in Packages.

Comment 11 by grt@chromium.org, Dec 14 2016

Should chrome.dll really have a dependency on DLLs in Packages?

Comment 12 by gab@chromium.org, Dec 14 2016

The dependencies are determined by GN: https://cs.chromium.org/chromium/src/chrome/installer/mini_installer/BUILD.gn?rcl=0&l=82

If we need any other solution than addressing the DEPS, the right solution is to address issue 581133 (better manifest method post-XP).

Comment 13 by grt@chromium.org, Dec 14 2016

I've confirmed that r437776 ("Build services as standalone executables") is the one that caused the breakage by introducing the new dependency. Ken: can you confirm that this is expected and correct?
The data dependency is technically correct, yes, though it's only needed
under certain runtime conditions -- namely certain flags which are never
used in production by default.
Any progress with this issue?
I can't run locally built Chromium on a test laptop anymore.
Any workarounds other than not doing a component build?
I've just tried the workaround mentioned in comment #7 and it works.

Comment 17 by grt@chromium.org, Feb 22 2017

Status: WontFix (was: Started)
r445870 reversed the change that caused this breakage, so I'm closing this issue. Fixing issue 581133 is still important to avoid future regressions.
Status: Available (was: WontFix)
I've just hit this issue again.
The duplicating entries are libGLESv2.dll and libEGL.dll.
Cc: sugoi@chromium.org capn@chromium.org jmad...@chromium.org
FYI SwiftShader team. Possibly related to the inclusion of the SwiftShader dlls?

Comment 20 by grt@chromium.org, Aug 2 2017

Status: Started (was: Available)
I'll take a swing.
Project Member

Comment 21 by bugdroid1@chromium.org, Aug 3 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d3f0779344128cbeea778bbc6ee2172f88aab25b

commit d3f0779344128cbeea778bbc6ee2172f88aab25b
Author: Greg Thompson <grt@chromium.org>
Date: Thu Aug 03 15:57:13 2017

Fix duplicate entries in component builds' version manifest.

Specifically, staged files are now ignored regardless of case and
containing directory.

BUG= 673900 

Change-Id: I72ded358fbde1c525eaec538ebdb184a79b58c6e
Reviewed-on: https://chromium-review.googlesource.com/598091
Reviewed-by: Gabriel Charette <gab@chromium.org>
Reviewed-by: Sébastien Marchand <sebmarchand@chromium.org>
Commit-Queue: Greg Thompson <grt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#491752}
[modify] https://crrev.com/d3f0779344128cbeea778bbc6ee2172f88aab25b/chrome/tools/build/win/create_installer_archive.py

Comment 22 by grt@chromium.org, Aug 8 2017

Status: Fixed (was: Started)
We should be back to normal now. Please re-open if you notice the dreaded side-by-side configuration error again. Thanks.

Sign in to add a comment