[Bug 5161] Trillian: crash when showing main window: BadValue in X_CreatePixmap

Wine Bugs wine-bugs at winehq.org
Thu May 4 05:02:34 CDT 2006


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





------- Additional Comments From molle.bestefich at gmail.com  2006-04-05 05:02 -------
A +relay trace shows error occurs in CreateDIBSection: 
 
0009:Call winex11.drv.CreateDIBSection(7fd79bf8,00007ebc,7fbcbf9c,00000000) 
ret=7f8b35ae  
0009:Call ntdll.RtlAllocateHeap(7fce0000,00000008,00000060) ret=7f267550 
0009:Ret  ntdll.RtlAllocateHeap() retval=7fd79d78 ret=7f267550 
0009:Call gdi32.GetObjectW(00007ebc,00000054,7fbcbcb0) ret=7f27a130 
0009:Ret  gdi32.GetObjectW() retval=00000054 ret=7f27a130 
X Error of failed request:  BadValue (integer parameter out of range for 
operation) 
  Major opcode of failed request:  53 (X_CreatePixmap) 
  Value in failed request:  0x0 
  Serial number of failed request:  633802 
  Current serial number in output stream:  634565 
 
 
Added a trace: 
 
--- dlls/x11drv/dib.c.orig 
+++ dlls/x11drv/dib.c 
@@ -4674,2 +4674,3 @@ 
     physBitmap->pixmap_depth = (dib.dsBm.bmBitsPixel == 1) ? 1 : 
screen_depth; 
+    TRACE("(%p) %dx%d %d bpp\n", hbitmap, dib.dsBm.bmWidth, 
dib.dsBm.bmHeight, physBitmap->pixmap_depth); 
     physBitmap->pixmap = XCreatePixmap( gdi_display, root_window, 
dib.dsBm.bmWidth,  
 
 
Gives normal (?) values: 
 
trace:bitmap:DIB_CreateDIBSection format (10,-200), planes 1, bpp 32, size 0, 
RGB 
trace:bitmap:CreateBitmapIndirect 10x200, 65536 colors returning 0x7e28 
trace:bitmap:X11DRV_CreateDIBSection (0x7e28) 10x200 16 bpp 
X Error of failed request:  BadValue (integer parameter out of range for 
operation) 
  Major opcode of failed request:  53 (X_CreatePixmap) 
  Value in failed request:  0x0 
  Serial number of failed request:  627920 
  Current serial number in output stream:  628685 
 
 
The above does look a _little_ odd.  Comparison: 
 DIB_CreateDIBSection    10, -200, 32 bpp 
 X11DRV_CreateDIBSection 10,  200, 16 bpp 
 
But I'm unsure whether to worry about it. 
 
 
I think that xorg-server-1.0.2-r3/dix/dispatch.c (attaching momentarily) is 
where the failure happens. 
Looking at the source, there are two places where BadValue can be returned. 
 
One of them sets errorValue to bit depth, which would be odd (we're seeing 
errorValue == 0). 
 
The other sets errorValue explicitly to 0, so I think it's more likely to be 
the culprit. 
 
Code looks like this: 
	if (!stuff->width || !stuff->height) 
	{ 
		client->errorValue = 0; 
		return BadValue; 
	} 
 
 
Unless width/height got corrupted on the way (I don't know how it propagates 
from x11drv to dispatch.c), this statement fails: 
	if (!10 || !200) 
 
 
That would be odd, wouldn't it? 
  

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the wine-bugs mailing list