This comes from behavioral study of Windows, which doesn't seem to check if the
lock is actually exclusively held, and just simply decrement the value stored
in the lock.
This fixes a dead lock which prevents WeCom from starting up.
--
v14: ntdll: An implementation of SRWLOCK that closer matches Windows'.
include: add atomic read/write of pointers
https://gitlab.winehq.org/wine/wine/-/merge_requests/3504
This comes from behavioral study of Windows, which doesn't seem to check if the
lock is actually exclusively held, and just simply decrement the value stored
in the lock.
This fixes a dead lock which prevents WeCom from starting up.
--
v13: ntdll: An implementation of SRWLOCK that closer matches Windows'.
include: add atomic read/write of pointers
https://gitlab.winehq.org/wine/wine/-/merge_requests/3504
On Fri Aug 25 12:44:46 2023 +0000, Huw Davies wrote:
> Once this is in, we can simplify `load_driver_devices()` by combining
> the two loops and eliminating the need to allocate `ids[]` and `guids[]`.
!3658
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3561#note_43415
Since 1.20, gst_element_request_pad_simple is available and
gst_element_get_request_pad is marked as deprecated.
--
v4: winegstreamer: Add MFMPEG4SinkClassFactory.
mf/tests: Use h264 and aac in mp4 media sink tests.
winegstreamer: Add codec data to h264 format.
winegstreamer: Add push_event wrapper.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3636
Valgrind support requires a fork, which I've published to https://gitlab.winehq.org/rbernon/valgrind. The fork implements loading DWARF debug info from PE files, instead of the old and broken upstream PDB support. I've tried to upstream these changes a long time ago but didn't receive any feedback.
I think we could maybe consider keeping a fork, which I'm happy to maintain, as the changes aren't too large. We may want to investigate adding 32-on-64 support, which may require a bit more changes (to VEX specifically, because its amd64 guest doesn't support segment register manipulation).
The changes here are not all related to Valgrind, and I'll create separate MR for those which may make sense independently from Valgrind / GDB.
Also included is a suppression file to silent some annoying false positives, many of which are coming from the cross-stack accesses during syscalls, which are confusing Valgrind's stack heuristics. One can try this out with something like:
`WINELOADERNOEXEC=1 valgrind --suppressions=tools/valgrind.supp wine64/loader/wine64 wine64/programs/winecfg/winecfg.exe`
--
v10: ntdll: Avoid writing to invalid memory in i386 unix dispatcher.
ntdll: Fix incorrect i386 call_user_mode_callback CFI.
ntdll: Avoid marking freed block header as undefined for valgrind.
ntdll: Force HEAP_TAIL_CHECKING_ENABLED flag with valgrind.
ntdll: Fix valgrind notifications from ntdll.so.
ntdll: Import valgrind headers for PE side ntdll.
loader: Implement SystemTap RTLD probes.
configure.ac: Check for systemtap sys/sdt.h header.
gitlab: Install systemtap-sdt-dev packages.
ntdll: Maintain a PE module link map and expose it to GDB.
ntdll: Pass a UNICODE_STRING to load_builtin and virtual_map_image.
loader: Expose a shadow copy of ld.so link map to GDB.
ntdll: Add .cfi_signal_frame to __wine_syscall_dispatcher.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1074
An earlier patch introduced a bug which overflows the descriptor heap
array. The array should not be emptied here in case the list is
resubmitted, so just flush the new heap.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/311
Even though the uninitialized values shouldn't be used in the output
binary program, they still show up in it, and affect the checksum, so
we better make them zeroes.
This error was reported by valgrind:
```
libtool --mode=execute valgrind --track-origins=yes vkd3d-build/tests/shader_runner vkd3d/tests/hlsl/static-initializer.shader_test
```
```
==46180== Conditional jump or move depends on uninitialised value(s)
==46180== at 0x48D98C7: parse_dxbc.isra.0 (dxbc.c:182)
==46180== by 0x48DA044: vkd3d_shader_parse_dxbc (dxbc.c:308)
==46180== by 0x488D1B6: vkd3d_shader_parse_dxbc_source_type (vkd3d_shader_utils.h:37)
==46180== by 0x488D1B6: create_shader_stage.isra.0 (state.c:1988)
==46180== by 0x48926B6: d3d12_pipeline_state_init_graphics (state.c:3084)
==46180== by 0x4893A96: d3d12_pipeline_state_create_graphics (state.c:3280)
==46180== by 0x4878498: d3d12_device_CreateGraphicsPipelineState (device.c:2619)
==46180== by 0x1FFEFFECC7: ???
==46180== by 0xE8: ???
==46180== by 0x47: ???
==46180== by 0x61: ???
==46180== by 0x660066000000023: ???
==46180== by 0x661066100000044: ???
==46180== Uninitialised value was created by a stack allocation
==46180== at 0x48F3FF0: hlsl_fold_constant_swizzles (hlsl_constant_ops.c:1010)
```
Thank you valgrind! :smile:
--
v6: vkd3d-shader/tpf: Avoid reading constant value components beyond type's width (Valgrind).
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/308
It's no problem to send fewer of these per MR. I have included the complete set because all but the last introduce no functional changes, and upstreaming a smaller set would leave the changes in a half-done state with unnecessary buffering.
--
v4: vkd3d: Store command list commands in a buffer until executed.
vkd3d: Store WriteBufferImmediate() arguments in a buffer.
vkd3d: Store ExecuteIndirect() arguments in a buffer.
vkd3d: Store SetPredication() arguments in a buffer.
vkd3d: Store ResolveQueryData() arguments in a buffer.
vkd3d: Store EndQuery() arguments in a buffer.
vkd3d: Store BeginQuery() arguments in a buffer.
vkd3d: Store d3d12_command_list_clear_uav() arguments in a buffer.
vkd3d: Store ClearRenderTargetView() arguments in a buffer.
vkd3d: Store ClearDepthStencilView() arguments in a buffer.
vkd3d: Store OMSetRenderTargets() arguments in a buffer.
vkd3d: Store SOSetTargets() arguments in a buffer.
vkd3d: Store IASetVertexBuffers() arguments in a buffer.
vkd3d: Store IASetIndexBuffer() arguments in a buffer.
vkd3d: Store d3d12_command_list_set_root_descriptor() arguments in a buffer.
vkd3d: Store d3d12_command_list_set_root_cbv() arguments in a buffer.
vkd3d: Store d3d12_command_list_set_root_constants() arguments in a buffer.
vkd3d: Store d3d12_command_list_set_descriptor_table() arguments in a buffer.
vkd3d: Store d3d12_command_list_set_root_signature() arguments in a buffer.
vkd3d: Add an internal refcount to struct d3d12_root_signature.
vkd3d: Store ResourceBarrier() arguments in a buffer.
vkd3d: Store SetPipelineState() arguments in a buffer.
vkd3d: Store OMSetStencilRef() arguments in a buffer.
vkd3d: Store OMSetBlendFactor() arguments in a buffer.
vkd3d: Store RSSetScissorRects() arguments in a buffer.
vkd3d: Store RSSetViewports() arguments in a buffer.
vkd3d: Store IASetPrimitiveTopology() arguments in a buffer.
vkd3d: Store ResolveSubresource() arguments in a buffer.
vkd3d: Store CopyResource() arguments in a buffer.
vkd3d: Store CopyTextureRegion() arguments in a buffer.
vkd3d: Store CopyBufferRegion() arguments in a buffer.
vkd3d: Store Dispatch() arguments in a buffer.
vkd3d: Store DrawIndexedInstanced() arguments in a buffer.
vkd3d: Store DrawInstanced() arguments in a buffer.
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/294
--
v11: vkd3d-shader/tpf: Handle the swizzle type bitfield in dst param tokens.
vkd3d-shader/tpf: Handle the dimension bitfield in dst param tokens.
vkd3d-shader/tpf: Use the default vec4 swizzle if a src param contains a mask.
vkd3d-shader/tpf: Handle the dimension bitfield in src param tokens.
vkd3d-shader/spirv: Emit an error if a case value is not a constant.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/225
Currently shell32 only transfers the plain icon for `Shell_NotifyIcon` calls, ignoring balloon icons. This patch allows transferring both images to explorer.exe tray.
--
v5: shell32: add support for balloon icon copying
shell32: refactor notify_icon for multiple icons
https://gitlab.winehq.org/wine/wine/-/merge_requests/2875
And discard irrelevant parts in select request. We currently store something in CTX_PENDING and ignore it later in select request if we're currently running in wow context.
--
v3: ntdll/tests: Add tests for setting context on unsuspended thread.
server: Store both contexts in pending context object.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3566
The patch set is ready now.
--
v8: winegstreamer: Implement finalize for media sink.
winestreamer: Implement wg_muxer_finalize.
winegstreamer: Introduce media_sink_write_stream.
winestreamer: Implement wg_muxer_{get,copy,free}_buffer.
winegstreamer: Implement ProcessSample for media sink.
winegstreamer: Implement wg_muxer_push_sample.
winegstreamer: Implement wg_muxer_add_stream.
winegstreamer: Create wg_muxer for media sink.
winegstreamer: Implement seeking query for wg_muxer sink pad.
winegstreamer: Introduce new wg_muxer struct.
winegstreamer: Add MFMPEG4SinkClassFactory.
mf/tests: Use h264 and aac in mp4 media sink tests.
winegstreamer: Add codec data to h264 format.
winegstreamer: Add push_event wrapper.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3303
On Thu Aug 24 01:51:55 2023 +0000, Etaash Mathamsetty wrote:
> matches the one in 14393, how would I get the wdm.h in 19041?
> edit: nvm figured it out, it's an additional thing you have to install
seems to match 22621 as well, except for a missing volatile
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1924#note_43252
Even though the uninitialized values shouldn't be used in the output
binary program, they still show up in it, and affect the checksum, so
we better make them zeroes.
This error was reported by valgrind:
```
libtool --mode=execute valgrind --track-origins=yes vkd3d-build/tests/shader_runner vkd3d/tests/hlsl/static-initializer.shader_test
```
```
==46180== Conditional jump or move depends on uninitialised value(s)
==46180== at 0x48D98C7: parse_dxbc.isra.0 (dxbc.c:182)
==46180== by 0x48DA044: vkd3d_shader_parse_dxbc (dxbc.c:308)
==46180== by 0x488D1B6: vkd3d_shader_parse_dxbc_source_type (vkd3d_shader_utils.h:37)
==46180== by 0x488D1B6: create_shader_stage.isra.0 (state.c:1988)
==46180== by 0x48926B6: d3d12_pipeline_state_init_graphics (state.c:3084)
==46180== by 0x4893A96: d3d12_pipeline_state_create_graphics (state.c:3280)
==46180== by 0x4878498: d3d12_device_CreateGraphicsPipelineState (device.c:2619)
==46180== by 0x1FFEFFECC7: ???
==46180== by 0xE8: ???
==46180== by 0x47: ???
==46180== by 0x61: ???
==46180== by 0x660066000000023: ???
==46180== by 0x661066100000044: ???
==46180== Uninitialised value was created by a stack allocation
==46180== at 0x48F3FF0: hlsl_fold_constant_swizzles (hlsl_constant_ops.c:1010)
```
Thank you valgrind! :smile:
--
v4: vkd3d-shader/tpf: Avoid reading constant value components beyond type's width (Valgrind).
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/308
On Wed Aug 23 18:06:19 2023 +0000, Bartosz Kosiorek wrote:
> [On Linux after copying `Microsoft Sans Serif`
> font](https://learn.microsoft.com/pl-pl/typography/font-list/microsoft-sans…
> into `/usr/share/fonts/msfonts/micross.ttf` location, both native and
> buildin wine is working perfectly fine:
> 
Is there a convincing argument that Tahoma is better overall (as opposed to better for this one launcher)?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3611#note_43218
--
v3: gdiplus: Fix GdipCreateBitmapFromICON return status with mask-only icon.
gdiplus/tests: Add test for mask-only icon with GdipCreateBitmapFromHICON.
gdiplus/tests: Add test for cursor with GdipCreateBitmapFromHICON.
gdiplus/tests: Create helper function for testing image properties.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3621
On Wed Aug 23 14:22:06 2023 +0000, Jeffrey Smith wrote:
> _If and only if_ you are confirming that Arial breaks it on Windows, and
> having "Microsoft Sans Serif" present fixes it on wine, then I only see
> two options:
> 1. Acknowledge that "Microsoft Sans Serif" must be present for the game
> to behave properly. (Is this not a font that winetricks can provide?), or
> 2. accept the patch
[On Linux after copying `Microsoft Sans Serif` font](https://learn.microsoft.com/pl-pl/typography/font-list/microsoft-sans… into `/usr/share/fonts/msfonts/micross.ttf` location, both native and buildin wine is working perfectly fine:

--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3611#note_43213
On Wed Aug 23 12:53:30 2023 +0000, Bartosz Kosiorek wrote:
> Summary: Fallout Tactics is not working correctly with `Arial` font.
> It is working fine with `Tahoma`.
> We don't have good alternative for `Microsoft Sans Serif` font.
> Proposal: proceed with current patch, to use `Tahoma` in case `Microsoft
> Sans Serif` font is missing.
> What else I could check in this case?
_If and only if_ you are confirming that Arial breaks it on Windows, and having "Microsoft Sans Serif" present fixes it on wine, then I only see two options:
1. Acknowledge that "Microsoft Sans Serif" must be present for the game to behave properly. (Is this not a font that winetricks can provide?), or
2. accept the patch
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3611#note_43195
It's possible that a state object pointer not in the topology node collection gets passed to
session_get_node_object(). Instead of returning the last node when the object is not found, we
should return a NULL so that the state of the last node is not changed by mistake.
--
v5: mf/tests: Test IMFMediaSession::Start().
mf/tests: Add a create_media_session() helper.
mf: Add seeking support for IMFMediaSession::Start().
https://gitlab.winehq.org/wine/wine/-/merge_requests/3572
Let The Good Life able to play its intro video, the game creates a source reader from a `http://localhost:6000/<random-hash>` URL. This should also probably work with other games playing streams over http(s).
This is a very basic implementation, using urlmon, and it will download the entire stream to a local temporary file before playback. An more optimized implementation would probably use WinHttp and range requests to partially download the requested stream segments, but this can be implemented in a future change.
--
v6: mf/scheme_handler: Implement http(s):// scheme handler using urlmon.
mf/scheme_handler: Split file scheme handler to scheme_handler.c.
mf/tests: Add some network scheme resolver tests.
include: Add MF_BYTESTREAM_EFFECTIVE_URL GUID declaration.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3439
This serie:
- adds a couple of tests to CreateProcess to cover ctrl-c blocking inheritance flag
and process group creation
- populates RTL_USER_PROCESS_PARAMETERS.ProcessGroupId
- separates new process group creation from ctrl-c inheritance flag
--
v4: kernelbase: Correctly handle new process group flag in CreateProcess.
kernel32/tests: Extend to new process group tests for CreateProcess.
kernelbase,ntdll,server: Separate console and new group flag (CreateProcess).
kernel32/tests: Add tests for group and console flags in CreateProcess.
kernel32/tests: Only access ProcessGroupId field when present.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3442
On Wed Aug 23 06:34:39 2023 +0000, Huw Davies wrote:
> > As `MS Sans Serif` is available in Wine, maybe it will be good
> replacement for `Microsoft Sans Serif`? So it `Microsoft Sans Serif` is
> missing, use `MS Sans Serif`.
> Not really - MS Sans Serif is a bitmap font available in only a few sizes.
Summary: Fallout Tactics is not working correctly with `Arial` font.
It is working fine with `Tahoma`.
We don't have good alternative for `Microsoft Sans Serif` font.
Proposal: proceed with current patch, to use `Tahoma` in case `Microsoft Sans Serif` font is missing.
What else I could check in this case?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3611#note_43182
It's possible that a state object pointer not in the topology node collection gets passed to
session_get_node_object(). Instead of returning the last node when the object is not found, we
should return a NULL so that the state of the last node is not changed by mistake.
--
v4: mf/tests: Test IMFMediaSession::Start().
mf/tests: Add a create_media_session() helper.
mf: Add seeking support for IMFMediaSession::Start().
mf: Add a session_flush_nodes() helper.
mf: Make session_get_node_object() more robust.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3572
> As `MS Sans Serif` is available in Wine, maybe it will be good replacement for `Microsoft Sans Serif`? So it `Microsoft Sans Serif` is missing, use `MS Sans Serif`.
Not really - MS Sans Serif is a bitmap font available in only a few sizes.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3611#note_43152
On Tue Aug 22 20:56:35 2023 +0000, Jeffrey Smith wrote:
> That Windows always has it available (under normal circumstances) is
> irrelevant to my point. It is very useful in that either result can
> remove one branch of investigation, as I already unpacked.
As `MS Sans Serif` is available in Wine, maybe it will be good replacement for `Microsoft Sans Serif`?
So it `Microsoft Sans Serif` is missing, use `MS Sans Serif`.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3611#note_43151