http://bugs.winehq.org/show_bug.cgi?id=18274
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #2 from Anastasius Focht focht@gmx.net 2009-04-29 15:40:01 --- Hello,
use of +relay thunks is useless because Xenocode hooks into native API using special trampolines and you won't see all calls made.
This seems to be the culprit:
--- snip --- ... 0009: create_mapping( access=00000006, attributes=00000000, protect=00000043, size=003d6000, file_handle=0000, objattr={rootdir=0000,sd={},name=L""} ) 0009: create_mapping() = 0 { handle=0054 } ... 0009:trace:virtual:NtMapViewOfSection handle=0x54 process=0xffffffff addr=(nil) off=000000000 size=0 access=4 0009: get_mapping_info( handle=0054, access=00000003 ) 0009: get_mapping_info() = ACCESS_DENIED { size=00000000, protect=0, header_size=0, base=00000000, mapping=0000, shared_file=0000 } 0009: close_handle( handle=0054 ) 0009: close_handle() = 0 0009: output_debug_string( length=252, string=00137650, unicode=1 ) 0009: output_debug_string() = 0 0009:warn:debugstr:OutputDebugStringW L"This application has encountered an error: 0xD0000022\n\nPlease contact the publisher of this application for more information." --- snip ---
Partly emulated NtCreateSection() (hook) passes down following params:
access: SECTION_MAP_READ | SECTION_MAP_WRITE protect = VPROT_READ | VPROT_WRITE | VPROT_COMMITTED
When the section is about to be mapped, NtMapViewOfSection() (not emulated/hooked) is passed following params:
protect: PAGE_READWRITE which is tranlated into: SECTION_QUERY | SECTION_MAP_WRITE for get_mapping_info()
This fails because no SECTION_QUERY right is present. Seems this right has to be added internally to access flags before making wineserver creating the section to have later map succeeding. Don't know which access flags combinations imply this flag hence it might need a conformance test case to find out.
Regards