Valgrind memory leaks in winmm + mciwave

Joerg-Cyril.Hoehle at t-systems.com Joerg-Cyril.Hoehle at t-systems.com
Fri May 7 07:07:16 CDT 2010


Hi,

By mistake, I ran Valgrind in Ubuntu Lucid (prerelease) upon an old
version of Wine (1.1.35) that does not perform as much WINMM tests as
nowadays.  Yet that old version reveals several memory leaks still
present, one of them shown below in MMIO, repeated for every failing
MMIO_Open(no_such_file).  The 8KB buffer is then lost (log below).
One is in mciwave, others in winmm/mci.c.  They are not false alarms.

Why did I never see winmm/mci in Dan Kegel's Valgrind logs?
Looking at the wrong place? E.g. nothing in
http://kegel.com/wine/valgrind/logs/2010-03-18-21.54/


BTW, Valgrind with Wine is currently in a sad state:

Why does Valgrind with 1.1.43 insist on updating .wine with every run?
VALGRIND_OPTS="--trace-children=yes --log-file=/dev/shm/v%p.log --leak-check=full --malloc-fill=A5 --free-fill=DE --track-origins=yes" WINETEST_WRAPPER=valgrind make mci.ok

What crashes while doing so, causing an infinite loop by crashing
winedbg, causing yet another winedbg to be started, crashing and
causing yet another winedbg...?   Wine should prevent this loop.
The main process (running the tests) nevertheless runs!

What commit made Valgrind loose its ability to correctly report
backtraces? The same one that broke winedbg's "bt all" command?

Backtraces were fine in wine-1.1.35:
==4521== 8,192 bytes in 1 blocks are definitely lost in loss record 597 of 612
==4521==  RtlAllocateHeap (heap.c:1423)
==4521==  MMIO_SetBuffer (mmio.c:561)
==4521==  MMIO_Open (mmio.c:653)
==4521==  mmioOpenW (mmio.c:697)
==4521==  WAVE_mciOpenFile (mciwave.c:473)
==4521==  MCIWAVE_DriverProc (mciwave.c:551)
==4521==  SendDriverMessage (driver.c:136)
==4521==  MCI_SendCommandFrom32 (mci.c:903)
==4521==  MCI_FinishOpen (mci.c:926)
==4521==  mciSendStringW (mci.c:1393)
==4521==  mciSendStringA (mci.c:1432)
==4521==  test_openCloseWAVE (mci.c:217)

With 1.1.43+git as of 2010-05-01
==4325== 8,192 bytes in 1 blocks are definitely lost in loss record 648 of 660
==4325==  RtlAllocateHeap (heap.c:254)
==4325==  MMIO_SetBuffer (mmio.c:561)
==4325==  MMIO_Open (mmio.c:654)
==4325==  mmioOpenW (mmio.c:703)
==4325==  ??? (in /.../dlls/winealsa.drv/winealsa.drv.so)
==4325==  ??? (in /.../dlls/winealsa.drv/winealsa.drv.so)
==4325==  SendDriverMessage (driver.c:136)
==4325==  MCI_SendCommandFrom32 (mci.c:892)
==4325==  MCI_FinishOpen (mci.c:915)
==4325==  mciSendStringW (mci.c:1416)
==4325==  mciSendStringA (mci.c:1455)
==4325==  test_openCloseWAVE (mci.c:271)

Regards,
 Jörg Höhle



More information about the wine-devel mailing list