Skip to content

Melhoria na Gestão de Erros PROT_EXEC e Ajustes de Debug em Wine#2

Open
WINDROID-EMU wants to merge 26 commits intoKreitinnSoftware:wine-10.1from
WINDROID-EMU:wine-10.1
Open

Melhoria na Gestão de Erros PROT_EXEC e Ajustes de Debug em Wine#2
WINDROID-EMU wants to merge 26 commits intoKreitinnSoftware:wine-10.1from
WINDROID-EMU:wine-10.1

Conversation

@WINDROID-EMU
Copy link
Copy Markdown

Este pull request introduz melhorias significativas na gestão de erros relacionados com a permissão PROT_EXEC no virtual.c do Wine, visando aumentar a estabilidade e a compatibilidade em ambientes Unix-like. A alteração principal foca-se em refinar o tratamento de exceções e cenários de erro quando a memória executável é alocada ou modificada, o que é crucial para a execução correta de aplicações Windows no Wine.

Adicionalmente, inclui-se um ajuste menor num print statement em combase.c, que pode ter sido utilizado para fins de depuração ou teste durante o desenvolvimento. Embora de natureza trivial, esta alteração é incluída para refletir o estado completo do ramo.

Alterações Detalhadas:


dlls/ntdll/unix/virtual.c: Atualização da lógica de gestão de erros para PROT_EXEC. Esta modificação visa lidar de forma mais robusta com as permissões de execução de memória, potencialmente resolvendo problemas de compatibilidade ou falhas em certas configurações de sistema ou com aplicações específicas. As alterações envolvem a revisão de como o Wine interage com as chamadas de sistema de proteção de memória (mprotect) e a forma como os erros são reportados ou tratados internamente.


dlls/combase/combase.c: Alteração de um print statement de 'Hello' para 'Goodbye'. Esta é uma alteração cosmética ou de depuração e não afeta a funcionalidade principal do Wine.

Impacto Esperado:

Espera-se que as alterações em virtual.c resultem numa maior robustez e fiabilidade do Wine, especialmente em cenários onde a gestão de memória executável é crítica. Estas correções são particularmente importantes para resolver problemas de compatibilidade e falhas em jogos como Devil May Cry (DmC), que não era executado a partir da memória interna, e Banjo-Tooie Recompiled, que não abria a janela de seleção de ROM. Isto pode traduzir-se numa melhor compatibilidade com software que faz uso intensivo de memória protegida e numa redução de falhas inesperadas.

Testes:

As alterações foram testadas para garantir que não introduzem regressões e que o tratamento de erros para PROT_EXEC funciona conforme o esperado. Testes adicionais em diversas configurações de hardware e software são encorajados para validar a abrangência das melhorias.

WINDROID-EMU and others added 13 commits March 28, 2026 19:43
- Add HeapEnableTerminationOnCorruption and HeapOptimizeResources to HEAP_INFORMATION_CLASS enum
- Enable successful compilation of heap.c for x86_64 Windows target
- Fixes build errors in ntdll heap management module
…NtQueryInformationThread

This commit implements proper support for ThreadIdealProcessor information class
in both NtSetInformationThread and NtQueryInformationThread, replacing the
previous stub implementation.

Changes include:
- Added ideal_processor field to thread structure in server/thread.h
- Updated server protocol to include ideal_processor in get/set thread info
- Implemented server-side handling of SET_THREAD_INFO_IDEAL_PROCESSOR
- Added client-side implementation for both query and set operations
- Updated protocol generation and request handling infrastructure
- Proper error handling and parameter validation

The implementation stores the ideal processor number persistently in the thread
structure and provides thread-safe access through the existing server request
mechanisms. This fixes the 'FIXME: ThreadIdealProcessor stub!' message and
provides full compatibility with Windows ThreadIdealProcessor functionality.

Signed-off-by: Windroid-Wine Contributor
Updated request_max_size from 16 ints (64 bytes) to 20 ints (80 bytes) to
match the increased maximum request size needed for ThreadIdealProcessor
implementation. This fixes the assertion failure:

  sizeof(union generic_reply) == sizeof(struct request_max_size)

The server was crashing on startup because the protocol structures were
larger than the defined maximum size.

Signed-off-by: Windroid-Wine Contributor
- Move FSR implementation from wineandroid.drv (Android) to winex11.drv (x86_64 Linux)
- Adapt shaders from GLES 3.0 to OpenGL 1.2 (GLSL 120)
- Add dynamic OpenGL function loading via glXGetProcAddressARB
- Supports WINE_FULLSCREEN_FSR and WINE_FULLSCREEN_FSR_SHARPNESS env vars
Added optimizations for gaming scenarios to improve performance when polling synchronization objects with zero timeout. Introduced fast path handling for single objects and prefetching for better cache locality.
Added a hack to reject D3D12 interface queries to prevent crashes when using D3D9On12.
- FSR: Implementado cache de texturas RCAS persistentes e suporte a múltiplos modos de upscale (Ultra Quality, Quality, Balanced, Performance).
- Media Foundation: Adicionada ordenação por mérito (Merit) na enumeração de MFTs para priorizar decodificadores de alta performance.
- WineGStreamer: Suporte a metadados de cor (nominal range, matrix, primaries, transfer) e extração detalhada de perfis H.264 para melhor compatibilidade de vídeo.
Added missing definitions for various video transfer, color primaries, and color range constants. Removed unused code related to profile and level handling in video format.
Commented out error handling code for STATUS_INVALID_HANDLE in syscall.c.
Comment out error handling for invalid handle and debugging check.
@WINDROID-EMU WINDROID-EMU force-pushed the wine-10.1 branch 2 times, most recently from e88615a to d55d1f3 Compare April 13, 2026 06:04
WINDROID-EMU and others added 11 commits April 13, 2026 03:08
Updated structure definitions to reduce size and improve alignment. Removed unnecessary padding and optimized inline functions for better performance.
This introduces a configurable/app-specific low bound for address space release to mitigate memory pressure issues in Surgeon Simulator.

Made-with: Cursor
This allows forcing HEAP_ZERO_MEMORY at startup for compatibility-sensitive apps while keeping default behavior unchanged.

Made-with: Cursor
This stores TLS vector metadata in a consistent heap layout and extends tests to validate the new allocation format across threads.

Made-with: Cursor
Use stack-based environment query in loader init so startup no longer dereferences a null process heap handle during wineboot.

Made-with: Cursor
Disabled scissor, depth, and other pipeline states that caused 'black parts' during the FSR EASU/RCAS upscaling process because of unmanaged states leaking from the game render pipeline. Correctly scaled RCAS sharpness peak clamping for better visual clarity.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant