This serie is the first of a long serie for rewriting the PDB debug format
support in dbnghelp.
For historical reasons, builtin dbghelp always fully loads every debug
information (type, symbol...) for a given module, and transforms it
into an internal representation (common to all debug formats: stabs, dwarf*,
PDB...).
This turns out to be slow and memory hungry.
For example, using a chromium based DLL, where PDB file breaks the 4G size
barrier, load time of debug info is ~80s, and requires ~20GB of virtual
memory.
Target of rewrite:
- break monolothic approach in dbghelp to allow finer granularity in
what's loaded (moving to a per compilation unit approach instead of full
module)
- reduce memory usage (for above example, current rewrite state is 20MB of
virtual memory, and <4s of load time)
- (potential) degradation of performance for some requests
+ may need to load/peruse additional information (not loaded at once)
+ request code hasn't been optimized for performance (on purpose), so that we
can balance performance vs in-process memory (caching some more bits)
We start with some series about cleanup, fixes, optimisation in dbghelp
(that will favor all debug formats, not only PDB).
This serie:
- fixes a crash for .DBG file
- fixes >4G PDB loading (so that we can measure improvements ;-)
- introduces a new approach for internal vector representation (reduces
memory usage),
- some cleanup,
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7573
This MR adds an initial implementation of the winsock `WSALookupsService*` methods for performing Bluetooth device discovery (`LUP_CONTAINERS`).
Pending !7472, the code will also eventually support performing device inquiry scans.
--
v9: ws2_32: Implement WSALookupServiceNext for Bluetooth device discovery.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7542
Needed by the Guild Wars 2 installer.
--
The installer fetches this with GetProcAddress. It was fine when the function was missing, but now tries to call the .spec stub added in 7a92a33b. See also !5479.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7572
This MR adds tests to `mfplat` to illustrate the timestamp values output on the samples for the respective Byte Stream handlers.
I have also included a fix for a bug in `winegstreamer` (and copied to `mfsrcsnk`) where a `NULL` value for the `pguidTimeFormat` parameter in `IMFMediaSource::Start` causes a segmentation fault. On Windows this is allowed. It is included in this MR as the `mfplat` tests pass NULL (so without this fix, the tests crash).
--
v9: mfplat/tests: Add tests for Byte Stream Timestamps.
mfsrcsnk: Allow NULL for time_format.
winegstreamer: Allow NULL for time_format.
mfplat/tests: Fix leak of media source.
mfplat/tests: Fix leak of media events.
mfplat/tests: Fix crash in MFShutdown on Windows.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7569
This MR adds tests to `mfplat` to illustrate the timestamp values output on the samples for the respective Byte Stream handlers.
I have also included a fix for a bug in `winegstreamer` (and copied to `mfsrcsnk`) where a `NULL` value for the `pguidTimeFormat` parameter in `IMFMediaSource::Start` causes a segmentation fault. On Windows this is allowed. It is included in this MR as the `mfplat` tests pass NULL (so without this fix, the tests crash).
--
v8: mfplat/tests: Add tests for Byte Stream Timestamps.
mfsrcsnk: Allow NULL for time_format.
winegstreamer: Allow NULL for time_format.
mfplat/tests: Fix leak of media source.
mfplat/tests: Fix leak of media events.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7569
This MR adds tests to `mfplat` to illustrate the timestamp values output on the samples for the respective Byte Stream handlers.
I have also included a fix for a bug in `winegstreamer` (and copied to `mfsrcsnk`) where a `NULL` value for the `pguidTimeFormat` parameter in `IMFMediaSource::Start` causes a segmentation fault. On Windows this is allowed. It is included in this MR as the `mfplat` tests pass NULL (so without this fix, the tests crash).
--
v7: mfplat/tests: Add tests for Byte Stream Timestamps.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7569