Commit af0fd4eb authored by Bruce Dawson's avatar Bruce Dawson Committed by Commit Bot

Update to VS packaging script for dbghelp.dll bug

The versions of dbghelp.dll that ship with the latest 10.0.14393.0 SDK
(yes, there are multiple versions) as of the VS 2017 launch cannot
handle /debug:fastlink binaries created by VS 2017. This leads to hangs
during symbol lookup, as reported here:
https://developercommunity.visualstudio.com/content/problem/36255/chromes-base-unittests-fails-with-vs-2017-due-to-s.html
The recommended fix is to copy dbghelp.dll from the VS install instead,
from Common7\IDE\CommonExtensions\Microsoft\TestWindow\Extensions\CppUnitFramework

Without this fix base_unittests will hang and windbg will not work on
/debug:fastlink binaries. With this fix base_unittests completes
promptly.

BUG=683729

Change-Id: Ie58b9d898a1feb04f11e99891035d2e40a2a9c0f
Reviewed-on: https://chromium-review.googlesource.com/461385Reviewed-by: 's avatarScott Graham <scottmg@chromium.org>
Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
parent b2e55643
...@@ -149,6 +149,21 @@ def BuildFileList(override_dir): ...@@ -149,6 +149,21 @@ def BuildFileList(override_dir):
if tail.count(WIN_VERSION) == 0: if tail.count(WIN_VERSION) == 0:
continue continue
to = os.path.join('win_sdk', tail) to = os.path.join('win_sdk', tail)
# The versions of dbghelp.dll that ship with the latest 10.0.14393.0 SDK
# (yes, there are multiple versions) as of the VS 2017 launch cannot
# handle /debug:fastlink binaries created by VS 2017. This leads to hangs
# during symbol lookup, as reported here:
# https://developercommunity.visualstudio.com/content/problem/36255/chromes-base-unittests-fails-with-vs-2017-due-to-s.html
# The recommended fix is to copy dbghelp.dll from the VS install instead,
# as done here:
if VS_VERSION == '2017' and combined.endswith('dbghelp.dll'):
good_dbghelp_path = os.path.join(vs_path, 'Common7', 'IDE',
'CommonExtensions', 'Microsoft', 'TestWindow',
'Extensions', 'CppUnitFramework')
if combined.count('\\x64\\') > 0:
combined = os.path.join(good_dbghelp_path, 'x64', 'dbghelp.dll')
else:
combined = os.path.join(good_dbghelp_path, 'dbghelp.dll')
result.append((combined, to)) result.append((combined, to))
# Copy the x86 ucrt DLLs to all directories with 32-bit binaries that are # Copy the x86 ucrt DLLs to all directories with 32-bit binaries that are
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment