Skip to content

Commit

Permalink
Also deploy mozc_tip64.dll.pdb (google#1081)
Browse files Browse the repository at this point in the history
One of the biggest challenge while investigating google#1076 is that it has
been reliably reproducible only on certain users' environments. One idea
to accelerate the debugging in such a scenario is to ship debug symbol
file for Mozc TIP DLL (e.g. mozc_tip64.dll) to users. Then we can ask
the reporter to use tools like Process Explorer and Process Hacker to
dump the call stack of the thread that got stuck.

With this commit we actually start deploying mozc_tip64.dll.pdb to
users.

The storage impact looks to be acceptable overall as long as we strip
private symbols [1]. Here are actual values taken in my local
environment.

 * Mozc64.msi: + 584 kB
 * mozc_tip64.dll.pdb: + 6,116 kB

Note that this commit does not fully take care of Bazel build. While the
symbol file is actually deployed, there remain the following known
issues only in Bazel build.

 * private symbols are not yet stripped out.
 * the symbol file name embedded in mozc_tip64.dll is mozc_tip.pdb
   rather than mozc_tip64.dll.pdb.

 [1]: https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/public-and-private-symbols
  • Loading branch information
yukawa committed Oct 15, 2024
1 parent 1d74ac4 commit c9b64ad
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/win32/installer/build_installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ def run_wix4(args) -> None:
icon_path = pathlib.Path(args.icon_path).resolve()
mozc_tip32 = pathlib.Path(args.mozc_tip32).resolve()
mozc_tip64 = pathlib.Path(args.mozc_tip64).resolve()
mozc_tip64_pdb = mozc_tip64.with_suffix('.pdb')
mozc_broker = pathlib.Path(args.mozc_broker).resolve()
mozc_server = pathlib.Path(args.mozc_server).resolve()
mozc_cache_service = pathlib.Path(args.mozc_cache_service).resolve()
Expand Down Expand Up @@ -131,6 +132,7 @@ def run_wix4(args) -> None:
'-define', f'AddRemoveProgramIconPath={icon_path}',
'-define', f'MozcTIP32Path={mozc_tip32}',
'-define', f'MozcTIP64Path={mozc_tip64}',
'-define', f'MozcTIP64PdbPath={mozc_tip64_pdb}',
'-define', f'MozcBroker64Path={mozc_broker}',
'-define', f'MozcServer64Path={mozc_server}',
'-define', f'MozcCacheService64Path={mozc_cache_service}',
Expand Down
5 changes: 5 additions & 0 deletions src/win32/installer/installer.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
'mozc_server64_path': '<(outdir64_dynamic)/GoogleIMEJaConverter.exe',
'mozc_tip32_path': '<(outdir32)/GoogleIMEJaTIP32.dll',
'mozc_tip64_path': '<(outdir64)/GoogleIMEJaTIP64.dll',
'mozc_tip64_pdb_path': '<(outdir64)/GoogleIMEJaTIP64.dll.stripped.pdb',
'mozc_tool_path': '<(outdir64_dynamic)/GoogleIMEJaTool.exe',
}, { # branding!="GoogleJapaneseInput"
'upgrade_code': 'DD94B570-B5E2-4100-9D42-61930C611D8A',
Expand All @@ -73,6 +74,7 @@
'mozc_server64_path': '<(outdir64_dynamic)/mozc_server.exe',
'mozc_tip32_path': '<(outdir32)/mozc_tip32.dll',
'mozc_tip64_path': '<(outdir64)/mozc_tip64.dll',
'mozc_tip64_pdb_path': '<(outdir64)/mozc_tip64.dll.stripped.pdb',
'mozc_tool_path': '<(outdir64_dynamic)/mozc_tool.exe',
}],
],
Expand All @@ -87,6 +89,7 @@
'mozc_server64_path': '<(mozc_server64_path)',
'mozc_tip32_path': '<(mozc_tip32_path)',
'mozc_tip64_path': '<(mozc_tip64_path)',
'mozc_tip64_pdb_path': '<(mozc_tip64_pdb_path)',
'mozc_tool_path': '<(mozc_tool_path)',
'mozc_broker64_path': '<(mozc_broker64_path)',
'mozc_ca64_path': '<(mozc_ca64_path)',
Expand All @@ -101,6 +104,7 @@
'<(mozc_server64_path)',
'<(mozc_tip32_path)',
'<(mozc_tip64_path)',
'<(mozc_tip64_pdb_path)',
'<(mozc_tool_path)',
],
},
Expand Down Expand Up @@ -156,6 +160,7 @@
'-define', 'AddRemoveProgramIconPath=<(icon_path)',
'-define', 'MozcTIP32Path=<(mozc_tip32_path)',
'-define', 'MozcTIP64Path=<(mozc_tip64_path)',
'-define', 'MozcTIP64PdbPath=<(mozc_tip64_pdb_path)',
'-define', 'MozcBroker64Path=<(mozc_broker64_path)',
'-define', 'MozcServer64Path=<(mozc_server64_path)',
'-define', 'MozcCacheService64Path=<(mozc_cache_service64_path)',
Expand Down
4 changes: 4 additions & 0 deletions src/win32/installer/installer_64bit.wxs
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@
<Feature Id="GIMEJaInstall" Title="Google 日本語入力" Level="1">
<ComponentRef Id="GIMEJaTIP32" />
<ComponentRef Id="GIMEJaTIP64" />
<ComponentRef Id="GIMEJaTIP64Pdb" />
<ComponentRef Id="GIMEJaBroker" />
<ComponentRef Id="GIMEJaConverter" />
<ComponentRef Id="GIMEJaCacheService" />
Expand Down Expand Up @@ -245,6 +246,9 @@
<Class Context="InprocServer32" ThreadingModel="apartment" Description="Google Japanese Input" Id="D5A86FD5-5308-47EA-AD16-9C4EB160EC3C" />
</File>
</Component>
<Component Id="GIMEJaTIP64Pdb" Permanent="no" Bitness="always64">
<File Id="GoogleIMEJaTIP64.dll.pdb" Name="GoogleIMEJaTIP64.dll.pdb" DiskId="1" Checksum="yes" Source="$(var.MozcTIP64PdbPath)" Vital="yes" />
</Component>
<Component Id="GIMEJaBroker" Permanent="no">
<File Id="GoogleIMEJaBroker.exe" Name="GoogleIMEJaBroker.exe" DiskId="1" Checksum="yes" Source="$(var.MozcBroker64Path)" Vital="yes" />
</Component>
Expand Down
4 changes: 4 additions & 0 deletions src/win32/installer/installer_oss_64bit.wxs
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@
<Feature Id="MozcInstall" Title="Mozc" Level="1">
<ComponentRef Id="MozcTIP32" />
<ComponentRef Id="MozcTIP64" />
<ComponentRef Id="MozcTIP64Pdb" />
<ComponentRef Id="MozcBroker" />
<ComponentRef Id="MozcConverter" />
<ComponentRef Id="MozcCacheService" />
Expand Down Expand Up @@ -220,6 +221,9 @@
<Class Context="InprocServer32" ThreadingModel="apartment" Description="Mozc" Id="10A67BC8-22FA-4A59-90DC-2546652C56BF" />
</File>
</Component>
<Component Id="MozcTIP64Pdb" Permanent="no" Bitness="always64">
<File Id="mozc_tip64.dll.pdb" Name="mozc_tip64.dll.pdb" DiskId="1" Checksum="yes" Source="$(var.MozcTIP64PdbPath)" Vital="yes" />
</Component>
<Component Id="MozcBroker" Permanent="no">
<File Id="mozc_broker.exe" Name="mozc_broker.exe" DiskId="1" Checksum="yes" Source="$(var.MozcBroker64Path)" Vital="yes" />
</Component>
Expand Down
2 changes: 2 additions & 0 deletions src/win32/tip/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ mozc_cc_binary(
target_compatible_with = ["@platforms//os:windows"],
visibility = ["//win32/installer:__subpackages__"], # Scheuklappen: keep
win_def_file = "mozc_tip.def",
linkopts = ["/DEBUG:FULL", "/PDBALTPATH:%_PDB%"],
features = ["generate_pdb_file"],
deps = [
":mozc_tip_resource",
":tip_class_factory",
Expand Down
4 changes: 4 additions & 0 deletions src/win32/tip/tip.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,10 @@
'VCManifestTool': {
'EmbedManifest': 'true',
},
'VCLinkerTool': {
# Generate stripped symbol.
'AdditionalOptions': ['/PDBSTRIPPED:<(tipfile_product_name_win)64.dll.stripped.pdb'],
},
},
},
],
Expand Down

0 comments on commit c9b64ad

Please sign in to comment.