[Bug 17277] ZFlash numerical control app needs address space between 0x100000-0x800000 (1-8 MiB) which conflicts with process heap location

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Nov 22 09:13:37 CST 2014


https://bugs.winehq.org/show_bug.cgi?id=17277

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
                 CC|                            |focht at gmx.net
            Summary|Remote virtual memory       |ZFlash numerical control
                   |allocation error            |app needs address space
                   |                            |between 0x100000-0x800000
                   |                            |(1-8 MiB) which conflicts
                   |                            |with process heap location
     Ever confirmed|0                           |1

--- Comment #8 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

next time please attach precompiled *release* builds of the apps.
Debug builds don't add any value.
In fact they link to the debug versions of the MSVC++ runtime which are not (to
be) distributed.

To illustrate what Alexandre said...

Parent process starting child process suspended and freeing up child address
space:

--- snip ---
$ wine ./ZLoader.exe test.exe
fixme:heap:HeapSetInformation (nil) 1 (nil) 0
ZLoader - VirtualFreeEx BaseAddress: 00110000 - Size: 00010000
ZLoader - VirtualFreeEx BaseAddress: 00220000 - Size: 00001000
ZLoader - VirtualFreeEx BaseAddress: 00221000 - Size: 00001000
ZLoader - VirtualFreeEx BaseAddress: 00230000 - Size: 00003000
--- snip ---

Relevant part of trace log:

--- snip ---
...
0031:trace:virtual:NtAllocateVirtualMemory 0xffffffff (nil) 00110000 2000
00000004
0031:trace:virtual:map_view got mem in reserved area 0x110000-0x220000
0031:trace:virtual:VIRTUAL_DumpView View: 0x110000 - 0x21ffff (valloc)
0031:trace:virtual:VIRTUAL_DumpView       0x110000 - 0x21ffff --rw-
0031:trace:virtual:NtAllocateVirtualMemory 0xffffffff 0x110000 00010000 1000
00000004
0031:trace:virtual:VIRTUAL_SetProt 0x110000-0x11ffff c-rw-
0031:trace:virtual:VIRTUAL_DumpView View: 0x110000 - 0x21ffff (valloc)
0031:trace:virtual:VIRTUAL_DumpView       0x110000 - 0x11ffff c-rw-
0031:trace:virtual:VIRTUAL_DumpView       0x120000 - 0x21ffff --rw-
0031:trace:virtual:NtAllocateVirtualMemory 0xffffffff (nil) 0000065c 1000
00000004
0031:trace:virtual:map_view got mem in reserved area 0x220000-0x221000
0031:trace:virtual:VIRTUAL_DumpView View: 0x220000 - 0x220fff (valloc)
0031:trace:virtual:VIRTUAL_DumpView       0x220000 - 0x220fff c-rw-
0031:trace:virtual:NtAllocateVirtualMemory 0xffffffff (nil) 0000232c 1000
00000004
0031:trace:virtual:map_view got mem in reserved area 0x230000-0x233000
0031:trace:virtual:VIRTUAL_DumpView View: 0x230000 - 0x232fff (valloc)
0031:trace:virtual:VIRTUAL_DumpView       0x230000 - 0x232fff c-rw-
0031:trace:virtual:VIRTUAL_DumpView View: 0x7bc10000 - 0x7bceefff (system)
0031:trace:virtual:VIRTUAL_DumpView       0x7bc10000 - 0x7bceefff c-rWx
0031:trace:virtual:virtual_create_builtin_view created 0x7bc10000-0x7bcef000 
...
0031:Call KERNEL32.__wine_kernel_init() ret=7bc5a259
...
002f:Call KERNEL32.VirtualFreeEx(0000004c,00110000,00000000,00008000)
ret=004010a4
002f:Call ntdll.NtFreeVirtualMemory(0000004c,0033f954,0033f958,00008000)
ret=7b882bb3
002f:trace:virtual:NtFreeVirtualMemory 0x4c 0x110000 00000000 8000
0031:trace:virtual:NtFreeVirtualMemory 0xffffffff 0x110000 00000000 8000
002f:Ret  ntdll.NtFreeVirtualMemory() retval=00000000 ret=7b882bb3
...
002f:Call KERNEL32.VirtualFreeEx(0000004c,00220000,00000000,00008000)
ret=004010a4
002f:Call ntdll.NtFreeVirtualMemory(0000004c,0033f954,0033f958,00008000)
ret=7b882bb3
002f:trace:virtual:NtFreeVirtualMemory 0x4c 0x220000 00000000 8000
0031:trace:virtual:NtFreeVirtualMemory 0xffffffff 0x220000 00000000 8000
002f:Ret  ntdll.NtFreeVirtualMemory() retval=00000000 ret=7b882bb3
002f:Ret  KERNEL32.VirtualFreeEx() retval=00000001 ret=004010a4
...
002f:Call KERNEL32.VirtualFreeEx(0000004c,00221000,00000000,00008000)
ret=004010a4
002f:Call ntdll.NtFreeVirtualMemory(0000004c,0033f954,0033f958,00008000)
ret=7b882bb3
002f:trace:virtual:NtFreeVirtualMemory 0x4c 0x221000 00000000 8000
0031:trace:virtual:NtFreeVirtualMemory 0xffffffff 0x221000 00000000 8000
002f:Ret  ntdll.NtFreeVirtualMemory() retval=00000000 ret=7b882bb3
002f:Ret  KERNEL32.VirtualFreeEx() retval=00000001 ret=004010a4
...
002f:Call KERNEL32.VirtualFreeEx(0000004c,00230000,00000000,00008000)
ret=004010a4
002f:Call ntdll.NtFreeVirtualMemory(0000004c,0033f954,0033f958,00008000)
ret=7b882bb3
002f:trace:virtual:NtFreeVirtualMemory 0x4c 0x230000 00000000 8000
0031:trace:virtual:NtFreeVirtualMemory 0xffffffff 0x230000 00000000 8000
002f:Ret  ntdll.NtFreeVirtualMemory() retval=00000000 ret=7b882bb3
002f:Ret  KERNEL32.VirtualFreeEx() retval=00000001 ret=004010a4 
...
002f:Call
ntdll.NtAllocateVirtualMemory(0000004c,0033f914,00000000,0033f948,00002000,00000040)
ret=7b882af9
002f:trace:virtual:NtAllocateVirtualMemory 0x4c 0x100000 00700000 2000 00000040
0031:trace:virtual:NtAllocateVirtualMemory 0xffffffff 0x100000 00700000 2000
00000040
0031:trace:virtual:VIRTUAL_DumpView View: 0x100000 - 0x7fffff (valloc)
0031:trace:virtual:VIRTUAL_DumpView       0x100000 - 0x7fffff --rwx
002f:Ret  ntdll.NtAllocateVirtualMemory() retval=00000000 ret=7b882af9
002f:Ret  KERNEL32.VirtualAllocEx() retval=00100000 ret=00401103
002f:Call user32.MessageBoxA(00000000,00408158 "ZLoader now will resume the
thread",0040817c "ZLoader",00000040) ret=00401117 
--- snip ---

Child process crash after the main thread is resumed by parent:

--- snip ---
Unhandled exception: page fault on read access to 0x001106e4 in 32-bit code
(0x7bc54d69).
Register dump:
 CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
 EIP:7bc54d69 ESP:0100ff40 EBP:0100ffa8 EFLAGS:00010246(  R- --  I  Z- -P- )
 EAX:001106b0 EBX:7bcd2000 ECX:0100ffb0 EDX:00000023
 ESI:ffb1d7b4 EDI:00000000
Stack dump:
0x0100ff40:  00000000 ffffffff 0100ff58 7bc395a6
0x0100ff50:  7bcdaf28 00000001 0100ff98 7bc3a0aa
0x0100ff60:  7bcdaf28 00000000 00000000 00000000
0x0100ff70:  00000000 7ffd8000 00000000 00000000
0x0100ff80:  00000000 00000000 00000000 0100ffb0
0x0100ff90:  7bcd2000 ffb1d7b4 0100ffe8 00000000
000c: sel=0067 base=00000000 limit=00000000 16-bit r-x
Backtrace:
=>0 0x7bc54d69 process_attach+0x2e(wm=0x1106b0, lpReserved=0x1)
[/home/focht/projects/wine/wine.repo/src/dlls/ntdll/loader.c:1148] in
ntdll<elf> (0x0100ffa8)
  1 0x7bc594d9 attach_process_dlls+0x53(wm=0x1106b0)
[/home/focht/projects/wine/wine.repo/src/dlls/ntdll/loader.c:2799] in
ntdll<elf> (0x0100ffe8)
  2 0xf753ffb5 wine_call_on_stack+0x1c() in libwine.so.1 (0x00000000)
  3 0x7bc59a3b LdrInitializeThunk+0x2ca(kernel_start=<couldn't compute
location>, unknown2=<couldn't compute location>, unknown3=<couldn't compute
location>, unknown4=<couldn't compute location>)
[/home/focht/projects/wine/wine.repo/src/dlls/ntdll/loader.c:2919] in
ntdll<elf> (0xffb1d848)
  4 0x7b8652cc __wine_kernel_init+0x67d()
[/home/focht/projects/wine/wine.repo/src/dlls/kernel32/process.c:1276] in
kernel32<elf> (0xffb1e708)
  5 0x7bc5a259 __wine_process_init+0x156()
[/home/focht/projects/wine/wine.repo/src/dlls/ntdll/loader.c:3133] in
ntdll<elf> (0xffb1e768)
  6 0xf753e825 wine_init+0x140(argc=0x2, argv=0xffb1ec74, error="",
error_size=0x400)
[/home/focht/projects/wine/wine.repo/src/libs/wine/loader.c:958] in
libwine.so.1 (0xffb1e7a8)
  7 0x7bf011ae main+0x132(argc=0x2, argv=0xffb1ec74)
[/home/focht/projects/wine/wine.repo/src/loader/main.c:237] in <wine-loader>
(0xffb1ebd8)
  8 0xf734e963 __libc_start_main+0xf2() in libc.so.6 (0x00000000)
0x7bc54d69 process_attach+0x2e
[/home/focht/projects/wine/wine.repo/src/dlls/ntdll/loader.c:1148] in
ntdll<elf>: movl    0x34(%eax),%eax
1148        if (    ( wm->ldr.Flags & LDR_LOAD_IN_PROGRESS )
--- snip ---

This obviously can't work.

Changing/relocating the process heap because there is one app depending on this
is questionable.

Anyway, you can change this on your own, making the app work:

http://source.winehq.org/git/wine.git/blob/34b2d920b47122007b65d435e064d018fb37b21f:/dlls/ntdll/virtual.c#l117

If Alexandre says he doesn't want that change, the bug is essentially a
WONTFIX.

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list