Problem in DIB section / bitblt

Marcus Meissner marcus at jet.franken.de
Sun Apr 29 11:26:28 CDT 2001


Hi,

Following trace has a BadMatch error related to DIB and XShm.

Strangely, if I do: 

--- bitblt.c	2001/01/15 22:30:51	1.28
+++ bitblt.c	2001/04/29 17:06:14
@@ -1461,7 +1461,8 @@
     sDst = X11DRV_LockDIBSection( dcDst, DIB_Status_None, FALSE );
     sSrc = X11DRV_LockDIBSection( dcSrc, DIB_Status_None, FALSE );
 
-    if ((sSrc == DIB_Status_AppMod) && (rop == SRCCOPY)) {
+    if (0 && (sSrc == DIB_Status_AppMod) && (rop == SRCCOPY)) {
+      FIXME("in fast branch\n");
       /* do everything ourselves; map coordinates */
       xSrc = dcSrc->DCOrgX + XLPTODP( dcSrc, xSrc );
       ySrc = dcSrc->DCOrgY + YLPTODP( dcSrc, ySrc );

it no longer does crash, but proceeds happily. So something is broken
in the fast path, but what :/

Ciao, Marcus

Call user32.GetDesktopWindow() ret=60cb02ca tid=08063358
Ret  user32.GetDesktopWindow() retval=0000008c ret=60cb02ca tid=08063358
Call user32.GetDC(0000008c) ret=60cb02d4 tid=08063358
Call x11drv.GetDC(0000008c,00000088,00000000,0001001a) ret=40783118 tid=08063358
Ret  x11drv.GetDC() retval=00000001 ret=40783118 tid=08063358
Ret  user32.GetDC() retval=00000088 ret=60cb02d4 tid=08063358
Call gdi32.CreateDIBSection(00000088,40454704,00000000,4a9a94a0,00000000,00000000) ret=60cb02e7 tid=08063358
trace:bitmap:X11DRV_DIB_CreateDIBSection format (16,16), planes 1, bpp 24, size 768, colors 0 (RGB)
trace:bitmap:CreateCompatibleBitmap (0ce4,16,16) =
trace:bitmap:CreateBitmap 16x16, 65536 colors returning 00000ce8
trace:bitmap:CreateCompatibleBitmap             0ce8
trace:bitmap:X11DRV_DIB_DoProtectDIBSection Changed protection from 4 to 2
Ret  gdi32.CreateDIBSection() retval=00000ce8 ret=60cb02e7 tid=08063358
Call user32.ReleaseDC(0000008c,00000088) ret=60cb02f6 tid=08063358
Ret  user32.ReleaseDC() retval=00000001 ret=60cb02f6 tid=08063358
Call kernel32.IsBadReadPtr(4ad30000,00000001) ret=60cb08f2 tid=08063358
Ret  kernel32.IsBadReadPtr() retval=00000000 ret=60cb08f2 tid=08063358
Call ntdll.RtlEnterCriticalSection(60cc1298) ret=60c9d188 tid=08063358
Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=60c9d188 tid=08063358
Call kernel32.CreateFileA(4a8aafb0 "Y:\\programme\\Mindjet\\MindManager\\sys\\codes\\code6.bmp",80000000,00000001,00000000,00000003,00000080,00000000) ret=60c9e56a tid=08063358
Ret  kernel32.CreateFileA() retval=00000068 ret=60c9e56a tid=08063358
Call kernel32.ReadFile(00000068,405b6adc,0000000e,405b6aec,00000000) ret=60c9dfbd tid=08063358
Ret  kernel32.ReadFile() retval=00000001 ret=60c9dfbd tid=08063358
Call kernel32.ReadFile(00000068,405b6ab4,00000028,405b6aec,00000000) ret=60c9dfed tid=08063358
Ret  kernel32.ReadFile() retval=00000001 ret=60c9dfed tid=08063358
Call kernel32.CloseHandle(00000068) ret=60c9e0b4 tid=08063358
Ret  kernel32.CloseHandle() retval=00000001 ret=60c9e0b4 tid=08063358
Call kernel32.CreateFileA(4a8aafb0 "Y:\\programme\\Mindjet\\MindManager\\sys\\codes\\code6.bmp",80000000,00000001,00000000,00000003,00000080,00000000) ret=60c9e56a tid=08063358
Ret  kernel32.CreateFileA() retval=00000068 ret=60c9e56a tid=08063358
Call kernel32.SetFilePointer(00000068,00000036,00000000,00000000) ret=60c9d217 tid=08063358
Ret  kernel32.SetFilePointer() retval=00000036 ret=60c9d217 tid=08063358
Call kernel32.HeapAlloc(4a260000,00000000,00018010) ret=60cb15a0 tid=08063358
Ret  kernel32.HeapAlloc() retval=4a26546c ret=60cb15a0 tid=08063358
Call kernel32.ReadFile(00000068,4a26546c,00018000,405b6ad0,00000000) ret=60c9d4ff tid=08063358
Ret  kernel32.ReadFile() retval=00000001 ret=60c9d4ff tid=08063358
trace:bitmap:X11DRV_DIB_Lock Locking 0x40455ea8 from thread 08063358
trace:bitmap:X11DRV_DIB_Coerce AppMod requested in status InSync
trace:bitmap:X11DRV_DIB_DoProtectDIBSection Changed protection from 2 to 4
trace:bitmap:X11DRV_DIB_Unlock Unlocking in status AppMod
trace:bitmap:X11DRV_DIB_Unlock Unlocked 0x40455ea8
Call kernel32.ReadFile(00000068,4a26549c,00017fd0,405b6ad0,00000000) ret=60c9d4ff tid=08063358
Ret  kernel32.ReadFile() retval=00000001 ret=60c9d4ff tid=08063358
Call ntdll.RtlEnterCriticalSection(60cc17d0) ret=60cb3773 tid=08063358
Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=60cb3773 tid=08063358
Call ntdll.RtlLeaveCriticalSection(60cc17d0) ret=60cb3789 tid=08063358
Ret  ntdll.RtlLeaveCriticalSection() retval=00000000 ret=60cb3789 tid=08063358
Call kernel32.HeapFree(4a260000,00000000,4a26546c) ret=60cb1124 tid=08063358
Ret  kernel32.HeapFree() retval=00000001 ret=60cb1124 tid=08063358
Call kernel32.CloseHandle(00000068) ret=60c9d22f tid=08063358
Ret  kernel32.CloseHandle() retval=00000001 ret=60c9d22f tid=08063358
Call ntdll.RtlLeaveCriticalSection(60cc1298) ret=60c9d236 tid=08063358
Ret  ntdll.RtlLeaveCriticalSection() retval=00000000 ret=60c9d236 tid=08063358
Call ntdll.RtlEnterCriticalSection(60cc1298) ret=60c9d91d tid=08063358
Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=60c9d91d tid=08063358
Call kernel32.CreateFileA(4a8aafb0 "Y:\\programme\\Mindjet\\MindManager\\sys\\codes\\code6.bmp",80000000,00000001,00000000,00000003,00000080,00000000) ret=60c9e56a tid=08063358
Ret  kernel32.CreateFileA() retval=00000068 ret=60c9e56a tid=08063358
Call kernel32.ReadFile(00000068,405b6a90,0000000e,405b6aa0,00000000) ret=60c9dfbd tid=08063358
Ret  kernel32.ReadFile() retval=00000001 ret=60c9dfbd tid=08063358
Call kernel32.ReadFile(00000068,405b6a68,00000028,405b6aa0,00000000) ret=60c9dfed tid=08063358
Ret  kernel32.ReadFile() retval=00000001 ret=60c9dfed tid=08063358
Call kernel32.CloseHandle(00000068) ret=60c9e0b4 tid=08063358
Ret  kernel32.CloseHandle() retval=00000001 ret=60c9e0b4 tid=08063358
Call ntdll.RtlLeaveCriticalSection(60cc1298) ret=60c9d9db tid=08063358
Ret  ntdll.RtlLeaveCriticalSection() retval=00000000 ret=60c9d9db tid=08063358
Call gdi32.CreateCompatibleDC(00000000) ret=0040fcda tid=08063358
Ret  gdi32.CreateCompatibleDC() retval=00000cec ret=0040fcda tid=08063358
Call gdi32.CreateCompatibleDC(00000000) ret=0040fce2 tid=08063358
Ret  gdi32.CreateCompatibleDC() retval=00000cf0 ret=0040fce2 tid=08063358
Call gdi32.CreateBitmap(00000010,00000010,00000001,00000001,00000000) ret=0040fcf5 tid=08063358
trace:bitmap:CreateBitmap 16x16, 2 colors returning 00000cf4
Ret  gdi32.CreateBitmap() retval=00000cf4 ret=0040fcf5 tid=08063358
Call gdi32.SelectObject(00000cec,00000cf4) ret=0040fd02 tid=08063358
Ret  gdi32.SelectObject() retval=00000044 ret=0040fd02 tid=08063358
Call gdi32.SelectObject(00000cf0,00000ce8) ret=0040fd0c tid=08063358
Ret  gdi32.SelectObject() retval=00000044 ret=0040fd0c tid=08063358
Call gdi32.SetBkColor(00000cf0,00c080ff) ret=0040fd1b tid=08063358
Ret  gdi32.SetBkColor() retval=00ffffff ret=0040fd1b tid=08063358
Call gdi32.BitBlt(00000cec,00000000,00000000,00000010,00000010,00000cf0,00000000,00000000,00cc0020) ret=0040fd33 tid=08063358
trace:bitblt:BitBlt hdcSrc=0cf0 0,0 16 bpp->hdcDest=0cec 0,0 16x16x1 rop=cc0020
trace:bitmap:X11DRV_DIB_Lock Locking 0x40455ea8 from thread 08063358
fixme:bitblt:X11DRV_BitBlt in fast branch
trace:bitmap:X11DRV_DIB_CopyDIBSection (0x4045610c,0x40455ee8,0,0,0,0,16,16)
trace:bitmap:X11DRV_DIB_DoCopyDIBSection Copying from DIB bits to Pixmap
trace:bitmap:X11DRV_DIB_SetImageBits XPutImage(0x8054790,29361387,0x8074680,0x808bbe8,0,0,0,0,16,16)
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  147 (MIT-SHM)
  Minor opcode of failed request:  3 (X_ShmPutImage)
  Serial number of failed request:  5544
  Current serial number in output stream:  5545
[




More information about the wine-devel mailing list