[Bug 10179] New: Heap corruption in tiny example program

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Oct 26 10:33:38 CDT 2007


http://bugs.winehq.org/show_bug.cgi?id=10179

           Summary: Heap corruption in tiny example program
           Product: Wine
           Version: CVS/GIT
          Platform: Other
        OS/Version: other
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: wine-kernel
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: dank at kegel.com


The call to GlobalHandle in the following program causes the warning

warn:heap:HEAP_ValidateInUseArena Heap 0x110000: invalid in-use arena magic for
0x110810

To reproduce, copy the following program to dlls/kernel32/tests/bug.c
and compile with

../../../tools/winegcc/winegcc -B../../../tools/winebuild -mconsole
-I../../../include bug.c ../../../libs/port/libwine_port.a  -ladvapi32
-lkernel32

then run with

WINEDEBUG=warn+heap ./a.out

#include <stdarg.h>
#include <windef.h>
#include <winbase.h>
#include <winerror.h>
#include <assert.h>

int main(int argc, char **argv)
{
    HGLOBAL hmem,hmem2;
    UCHAR *pmem;

    SetLastError(NO_ERROR);
    hmem=GlobalAlloc(0, 1);
    assert(hmem != NULL);
    hmem=GlobalReAlloc(hmem,0,GMEM_MODIFY | GMEM_MOVEABLE);
    pmem=GlobalLock(hmem);
    hmem2=GlobalHandle(pmem);    // Here's the line that causes the warning
    assert(hmem2==hmem);
    assert(pmem!=NULL && !GlobalUnlock(hmem) && GetLastError()==NO_ERROR);
    assert(!GlobalFree(hmem));
    assert(HeapValidate(GetProcessHeap(), 0, 0));
    return 0;
}

This was boiled down from alloc.c (which has a similar warning).


-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list