diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c index 94d48c0fb47..9598e6523f7 100644 --- a/dlls/ntdll/unix/virtual.c +++ b/dlls/ntdll/unix/virtual.c @@ -4589,6 +4589,16 @@ NTSTATUS virtual_handle_fault( EXCEPTION_RECORD *rec, void *stack ) ret = STATUS_SUCCESS; goto done; } + + /* CW Hack 25719 */ + if (err == EXCEPTION_EXECUTE_FAULT && (get_unix_prot( vprot ) & PROT_EXEC)) + { + FIXME( "HACK: exec fault on executable page, addr %p\n", addr ); + mprotect_range( page, page_size, 0, VPROT_EXEC ); + mprotect_range( page, page_size, VPROT_EXEC, 0 ); + ret = STATUS_SUCCESS; + goto done; + } #endif if (!is_inside_signal_stack( stack ) && (vprot & VPROT_GUARD))