On Montag 19 Mai 2008, Jeremy White wrote:
ntdll:info is a flaky test marked todo_wine that succeeds sometimes: "info.c:822: Test succeeded inside todo block: Expected to read 0 bytes, got 0"
Hardy seems to be the common variable for failures, and it seems as though an actual failure reading from location 0x1234 is the trigger. (The historically normal case, apparently, is that we succeed in doing the read).
Yes wine normally allows you to read the memory even when it should fail (because it is reserved by the preloader? + ntdll:reserve_dos_area + kernel32:setup_dos_mem) -> ptrace PTRACE_PEEKDATA succeeds
But on ubuntu wine probably fails to reserve the low memory because of http://wiki.winehq.org/PreloaderPageZeroProblem -> ptrace PTRACE_PEEKDATA fails to read the memory and the read count is 0.
git-blame points at Peter as the last to touch this. I've attached a potential patch, hopefully it'll be wrong and force Peter to step up and fix it correctly <grin>.
The "fix" disables the readcount test for all targets running wine. Another workaround would be to choose another userspace address which is not protected by the kernel (bigger than 65536) but still falling into the dos reserve area 0x110000. I do not have ubuntu/mmap protection here, could you/somebody try with a address like 0x80000.
Additionally the standard 0xdeadbeef address won't work here as it results in a different error(STATUS_ACCESS_VIOLATION for kernel space addresses instead of STATUS_PARTIAL_COPY ?)
Cheers,
Jeremy
Greetings Peter