Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55842
The bug blames commit 059094c1c18ddc33b04eac53a72fd0eb7510be94 ("ntdll: Define heap block's BLOCK_FLAG_LFH as 0x80.") but actually before the blamed commit that worked essentially by chance.
The problem the patch is solving is that RtlValidateHeap() currently always fails for LFH blocks allocated from large block memory (vs subheap blocks). That can happen for large enough LFH block sizes. In case of the regressed game the user of RtlValidateHeap() is msvcr80.msvcrt_heap_free() which uses HeapValidate() to guess the heap used to allocate the pointer to free. I am attaching a standalone test program which can be used to reproduce the problem without the patch.
[test_lfh_validate.c](/uploads/006b04a9a00ffb7949956b66a275d5cf/test_lfh_validate.c)
--
v3: ntdll: Fix pending free block validation in heap_validate() for LFH blocks.
ntdll: Handle LFH blocks allocated in large blocks in heap_validate_ptr().
https://gitlab.winehq.org/wine/wine/-/merge_requests/4232
This change only implements case-sensitivity of technique keywords and related checks when corresponding profile is used. My immediate plan is to add some synthetic type for technique variables, for example as {object, void}, then add named techniques as variables. This is useful because these names are participating in global scope, and should not collide with normal variables. After that "pass_list" will be split, at least in two variants because of how much d3d9 syntax differs. Some trivial changes will be need later to have some top level fx compilation helper that considers only fx objects and calls ps/vs/gs compiler to create inner shader blobs on same original source.
--
v3: vkd3d-shader/hlsl: Improve handling of "technique" tokens.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/111
During engine shutdown we acquire engine lock first, then locks of its constituents (e.g. sample
grabbers); whereas normally the order is the other way around (e.g. timer callback -> acquire sample
grabber lock -> OnProcessSample callback -> engine lock). This is deadlock prone.
With this commit, engine lock is released before we shutdown the inner media session.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4187