[Bug 46028] Provide separate debug/symbol info files (.pdb) for 32-bit and 64-bit Wine-Gecko 2.47+ package (unstripped 32-bit 'xul.dll' too large to be mapped)

WineHQ Bugzilla wine-bugs at winehq.org
Tue Dec 1 13:22:34 CST 2020


https://bugs.winehq.org/show_bug.cgi?id=46028

--- Comment #13 from Anastasius Focht <focht at gmx.net> ---
Hello Jacek,

I can confirm the provided tarballs containing PDB files for MinGW builds work
for both, 32-bit and 64-bit Wine-Gecko.

Method 1: Extraction into WINEPREFIX (PDB live alongside the dlls).

64-bit:

--- snip ---
$ tar xJvf ~/.cache/wine/gecko/wine-gecko-2.47.2-x86_64-pdb.tar.xz \
  --directory ~/.wine/drive_c/windows/system32/gecko/2.47.2/wine_gecko/ \
  --wildcards '*.pdb' --strip=1

wine-gecko-2.47.2-x86_64/browsercomps.pdb
wine-gecko-2.47.2-x86_64/xul.pdb
wine-gecko-2.47.2-x86_64/mozavutil.pdb
wine-gecko-2.47.2-x86_64/nss3.pdb
wine-gecko-2.47.2-x86_64/clearkey.pdb
wine-gecko-2.47.2-x86_64/plugin-container.pdb
wine-gecko-2.47.2-x86_64/mozavcodec.pdb
wine-gecko-2.47.2-x86_64/libGLESv2.pdb
wine-gecko-2.47.2-x86_64/libEGL.pdb
wine-gecko-2.47.2-x86_64/lgpllibs.pdb
wine-gecko-2.47.2-x86_64/mozglue.pdb
--- snip ---

32-bit:

--- snip ---
$ tar xJvf ~/.cache/wine/gecko/wine-gecko-2.47.2-x86-pdb.tar.xz \
  --directory ~/.wine/drive_c/windows/syswow64/gecko/2.47.2/wine_gecko/ \
  --wildcards '*.pdb' --strip=1

wine-gecko-2.47.2-x86/browsercomps.pdb
wine-gecko-2.47.2-x86/xul.pdb
wine-gecko-2.47.2-x86/mozavutil.pdb
wine-gecko-2.47.2-x86/nss3.pdb
wine-gecko-2.47.2-x86/clearkey.pdb
wine-gecko-2.47.2-x86/plugin-container.pdb
wine-gecko-2.47.2-x86/mozavcodec.pdb
wine-gecko-2.47.2-x86/libGLESv2.pdb
wine-gecko-2.47.2-x86/libEGL.pdb
wine-gecko-2.47.2-x86/lgpllibs.pdb
wine-gecko-2.47.2-x86/mozglue.pdb
--- snip ---

Method 2: Put them into a local symbol store for use with symsrv.

I wrote a small howto here:
https://gist.github.com/rmi1974/90f14258c622fe57a9b70f6cabe69d66

64-bit:

--- snip ---
$ WINEDLLOVERRIDES=dbghelp=n wine \
  "c:\\Program Files\\Debugging Tools for Windows (x64)\\symstore.exe" \
  add /r /o /t "wine-gecko-2.47.2-x86_64" \
  /v "wine-gecko-2.47.2-x86_64" \
  /f "z:\\home\\focht\\Downloads\\wine-gecko-2.47.2-x86_64\\*.pdb" \
  /s "z:\\home\\focht\\projects\\wine\\symsrv"

SYMSTORE MESSAGE: 0 alternate indexers registered
SYMSTORE MESSAGE: LastId.txt reported id 3
SYMSTORE MESSAGE: Final id is 0000000003
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86_64\browsercomps.pdb to
z:\home\focht\projects\wine\symsrv\browsercomps.pdb\006E9BA45D36845C4C4C44205044422E1\browsercomps.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86_64\clearkey.pdb to
z:\home\focht\projects\wine\symsrv\clearkey.pdb\C0D07D931C1D42494C4C44205044422E1\clearkey.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86_64\lgpllibs.pdb to
z:\home\focht\projects\wine\symsrv\lgpllibs.pdb\38266693045F1FFC4C4C44205044422E1\lgpllibs.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86_64\libEGL.pdb to
z:\home\focht\projects\wine\symsrv\libEGL.pdb\984A4C920320EFF04C4C44205044422E1\libEGL.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86_64\libGLESv2.pdb to
z:\home\focht\projects\wine\symsrv\libGLESv2.pdb\40C820CEEADA319B4C4C44205044422E1\libGLESv2.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86_64\mozavcodec.pdb to
z:\home\focht\projects\wine\symsrv\mozavcodec.pdb\71FC40B0E6497F014C4C44205044422E1\mozavcodec.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86_64\mozavutil.pdb to
z:\home\focht\projects\wine\symsrv\mozavutil.pdb\828C0EA95169FEBD4C4C44205044422E1\mozavutil.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86_64\mozglue.pdb to
z:\home\focht\projects\wine\symsrv\mozglue.pdb\57C1AA41138EB6874C4C44205044422E1\mozglue.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86_64\nss3.pdb to
z:\home\focht\projects\wine\symsrv\nss3.pdb\5ADE01694B82AB1A4C4C44205044422E1\nss3.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86_64\plugin-container.pdb to
z:\home\focht\projects\wine\symsrv\plugin-container.pdb\49B153F740B27F7C4C4C44205044422E1\plugin-container.pdb
[Force: T, Compress: 
F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86_64\xul.pdb to
z:\home\focht\projects\wine\symsrv\xul.pdb\DCAA072A15BF3A9F4C4C44205044422E1\xul.pdb
[Force: T, Compress: F]

SYMSTORE: Number of files stored = 11
SYMSTORE: Number of errors = 0
SYMSTORE: Number of files ignored = 0
--- snip ---

32-bit:

--- snip ---
$ WINEDLLOVERRIDES=dbghelp=n wine \
  "c:\\Program Files\\Debugging Tools for Windows (x64)\\symstore.exe" \
  add /r /o /t "wine-gecko-2.47.2-x86" \
  /v "wine-gecko-2.47.2-x86" \
  /f "z:\\home\\focht\\Downloads\\wine-gecko-2.47.2-x86\\*.pdb" \
  /s "z:\\home\\focht\\projects\\wine\\symsrv"

SYMSTORE MESSAGE: 0 alternate indexers registered
SYMSTORE MESSAGE: LastId.txt reported id 5
SYMSTORE MESSAGE: Final id is 0000000005
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86\browsercomps.pdb to
z:\home\focht\projects\wine\symsrv\browsercomps.pdb\E2203C887EB848374C4C44205044422E1\browsercomps.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86\clearkey.pdb to
z:\home\focht\projects\wine\symsrv\clearkey.pdb\C231E460AFF28B264C4C44205044422E1\clearkey.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86\lgpllibs.pdb to
z:\home\focht\projects\wine\symsrv\lgpllibs.pdb\E710DDA6243B8C654C4C44205044422E1\lgpllibs.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86\libEGL.pdb to
z:\home\focht\projects\wine\symsrv\libEGL.pdb\350154AF3BEF22DA4C4C44205044422E1\libEGL.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86\libGLESv2.pdb to
z:\home\focht\projects\wine\symsrv\libGLESv2.pdb\A53D2940335667C44C4C44205044422E1\libGLESv2.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86\mozavcodec.pdb to
z:\home\focht\projects\wine\symsrv\mozavcodec.pdb\4CCEA9A76836EC3A4C4C44205044422E1\mozavcodec.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86\mozavutil.pdb to
z:\home\focht\projects\wine\symsrv\mozavutil.pdb\27D0A64B27E0F69E4C4C44205044422E1\mozavutil.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86\mozglue.pdb to
z:\home\focht\projects\wine\symsrv\mozglue.pdb\64C60A88FD0536E94C4C44205044422E1\mozglue.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86\nss3.pdb to
z:\home\focht\projects\wine\symsrv\nss3.pdb\110BE322AAF8879C4C4C44205044422E1\nss3.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying
z:\home\focht\Downloads\wine-gecko-2.47.2-x86\plugin-container.pdb to
z:\home\focht\projects\wine\symsrv\plugin-container.pdb\5BCC2EC5A893CD0C4C4C44205044422E1\plugin-container.pdb
[Force: T, Compress: F]
SYMSTORE MESSAGE: Copying z:\home\focht\Downloads\wine-gecko-2.47.2-x86\xul.pdb
to
z:\home\focht\projects\wine\symsrv\xul.pdb\3B7D05CEC098A7144C4C44205044422E1\xul.pdb
[Force: T, Compress: F]

SYMSTORE: Number of files stored = 11
SYMSTORE: Number of errors = 0
SYMSTORE: Number of files ignored = 0
--- snip ---

Validate 32-bit Wine-Gecko 'xul.dll' as example:

--- snip ---
$ WINEDLLOVERRIDES=dbghelp=n wine \
  "c:\\Program Files\\Debugging Tools for Windows (x64)\\symchk.exe" \
  /v "c:\\windows\\syswow64\\gecko\\2.47.2\\wine_gecko\\xul.dll" \
  /s "z:\\home\\focht\\projects\\wine\\symsrv"

[SYMCHK] Searching for symbols to
c:\windows\syswow64\gecko\2.47.2\wine_gecko\xul.dll in path
z:\home\focht\projects\wine\symsrv
DBGHELP: Symbol Search Path: z:\home\focht\projects\wine\symsrv
[SYMCHK] Using search path "z:\home\focht\projects\wine\symsrv"
DBGHELP: No header for c:\windows\syswow64\gecko\2.47.2\wine_gecko\xul.dll. 
Searching for image on disk
DBGHELP: c:\windows\syswow64\gecko\2.47.2\wine_gecko\xul.dll - OK
DBGHELP: xul - private symbols & lines
        
z:\home\focht\projects\wine\symsrv\xul.pdb\3B7D05CEC098A7144C4C44205044422E1\xul.pdb
[SYMCHK] MODULE64 Info ----------------------
[SYMCHK] Struct size: 1680 bytes
[SYMCHK] Base: 0x0000000010000000
[SYMCHK] Image size: 90521600 bytes
[SYMCHK] Date: 0x5fc500b3
[SYMCHK] Checksum: 0x00000000
[SYMCHK] NumSyms: 0
[SYMCHK] SymType: SymPDB
[SYMCHK] ModName: xul
[SYMCHK] ImageName: c:\windows\syswow64\gecko\2.47.2\wine_gecko\xul.dll
[SYMCHK] LoadedImage: c:\windows\syswow64\gecko\2.47.2\wine_gecko\xul.dll
[SYMCHK] PDB:
"z:\home\focht\projects\wine\symsrv\xul.pdb\3B7D05CEC098A7144C4C44205044422E1\xul.pdb"
[SYMCHK] CV: RSDS
[SYMCHK] CV DWORD: 0x53445352
[SYMCHK] CV Data:  /build/wine-gecko-2.47.2-x86/toolkit/library/xul.pdb
[SYMCHK] PDB Sig:  0
[SYMCHK] PDB7 Sig: {3B7D05CE-C098-A714-4C4C-44205044422E}
[SYMCHK] Age: 1
[SYMCHK] PDB Matched:  TRUE
[SYMCHK] DBG Matched:  TRUE
[SYMCHK] Line nubmers: TRUE
[SYMCHK] Global syms:  TRUE
[SYMCHK] Type Info:    TRUE
[SYMCHK] ------------------------------------
SymbolCheckVersion  0x00000002
Result              0x001f0001
DbgFilename
DbgTimeDateStamp    0x5fc500b3
DbgSizeOfImage      0x05654000
DbgChecksum         0x00000000
PdbFilename        
z:\home\focht\projects\wine\symsrv\xul.pdb\3B7D05CEC098A7144C4C44205044422E1\xul.pdb
PdbSignature        {3B7D05CE-C098-A714-4C4C-44205044422E}
PdbDbiAge           0x00000001
[SYMCHK] [ 0x00000000 - 0x001f0001 ] Checked
"c:\windows\syswow64\gecko\2.47.2\wine_gecko\xul.dll"

SYMCHK: FAILED files = 0
SYMCHK: PASSED + IGNORED files = 1
--- snip ---

It can be also run against a whole directory to validate all files.

I've tested with x64dbg and builtin 'iexplore.exe' as well. The Wine-Gecko
symbols take some time to load because of the huge number but eventually show
up.

Source level debugging obviously won't work with debuggers requiring native MS
DIA/dbghelp due to Unix paths (general problem). But who needs source level
debugging anyway.

---

In further future it might be feasible to distribute the PDB files for official
Wine releases and its dependencies (Gecko, Mono) by using a symbol server/store
(serve directory with a web server).

Setting up a symbol store is not very hard
(https://gist.github.com/rmi1974/90f14258c622fe57a9b70f6cabe69d66). There even
exist Python tools mimicking the symstore tools from Debugging Tools for
Windows (https://pypi.org/project/symstore/).

---

Bit off-topic: I hope the conversion of the remaining Wine builtins to PE
format can be finished before Wine 6.0 release. That would be awesome ;-)

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.


More information about the wine-bugs mailing list