Allocates me 3E0 (rounded 3d4) bytes filled with zeros, begining at adr1 and this: a) adr1 should be "relatively close" to the 0x00110000 b) adr1 should be same as adr2
You can't really make those assumptions, though I guess they may sometimes be true in practice.
OK, i lets start from the beginning. I did +relay,+heap and found:
trace:heap:RtlAllocateHeap (0x4df4000,70000062,00000413): returning 0x4edded0 0018:Ret ntdll.RtlAllocateHeap() retval=04edded0 ret=78134d83 0023:Ret KERNEL32.GetCurrentThreadId() retval=00000023 ret=016633ec 0023:Call KERNEL32.GetTickCount() ret=016669e8 0023:Ret KERNEL32.GetTickCount() retval=00051289 ret=016669e8 0023:Call KERNEL32.GetCurrentThreadId() ret=0166342f 0023:Ret KERNEL32.GetCurrentThreadId() retval=00000023 ret=0166342f 0023:Call KERNEL32.InterlockedExchange(020876a8,00000001) ret=0166343b 0023:Ret KERNEL32.InterlockedExchange() retval=00000000 ret=0166343b 0023:Call KERNEL32.GetCurrentThreadId() ret=01663472 0023:Ret KERNEL32.GetCurrentThreadId() retval=00000023 ret=01663472 0023:Call KERNEL32.Sleep(00000032) ret=016632f9 trace:heap:RtlAllocateHeap (0x4df4000,70000062,00000047): returning 0x4e93558 0018:Ret ntdll.RtlAllocateHeap() retval=04e93558 ret=78134d83 0018:Call ntdll.RtlAllocateHeap(04df4000,00000000,00000113) ret=78134d83 trace:heap:RtlAllocateHeap (0x4df4000,70000062,00000113): returning 0x4e744f8 0018:Ret ntdll.RtlAllocateHeap() retval=04e744f8 ret=78134d83 0018:Call ntdll.RtlAllocateHeap(04df4000,00000000,00000047) ret=78134d83 trace:heap:RtlFreeHeap (0x110000,70000062,0x164740): returning TRUE 0022:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7e1d68e8 0022:Call user32.WindowFromDC(00000534) ret=7e0f9ee7 0022:Ret user32.WindowFromDC() retval=00040056 ret=7e0f9ee7 0022:Call KERNEL32.TlsGetValue(00000008) ret=7e0fa801 0022:Ret KERNEL32.TlsGetValue() retval=19dfcfe0 ret=7e0fa801 0022:Call gdi32.wglGetCurrentContext() ret=7e0faeea 0022:Ret gdi32.wglGetCurrentContext() retval=19a66a00 ret=7e0faeea 0022:Call KERNEL32.TlsGetValue(00000008) ret=7e0fa801 0022:Ret KERNEL32.TlsGetValue() retval=19dfcfe0 ret=7e0fa801 trace:heap:RtlAllocateHeap (0x4df4000,70000062,00000047): returning 0x4e997d0 0018:Ret ntdll.RtlAllocateHeap() retval=04e997d0 ret=78134d83
0018:Call ntdll.RtlAllocateHeap(04df4000,00000000,00000213) ret=78134d83 err:heap:HEAP_ValidateInUseArena Heap 0x110000: block 0x19543568 tail overwritten at 0x1954356d (byte 0/19 == 0xcf)
trace:heap:RtlAllocateHeap (0x110000,70000062,00000100): returning 0x19008c58 err:heap:HEAP_ValidateInUseArena Heap 0x110000: block 0x19543568 tail overwritten at 0x1954356d (byte 0/19 == 0xcf)
* The first 0022: and 0018: are thread numbers? * Can be the problem in 0018: be caused by different thread? * What is that 0/19? * Can i make assumption, that it was overwritten by gdi32.wglGetCurrentContext()?