[Bug 6176] Rhino 3D v3 (CAD app) crashes on startup (OpenGL/DIB driver needs to return max index for NULL PIXELFORMATDESCRIPTOR)

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Mar 23 18:15:55 CDT 2014


https://bugs.winehq.org/show_bug.cgi?id=6176

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                URL|http://download.mcneel.com/ |http://www.cadcam-download.
                   |s3/mcneel/rhino/3.0/eval/rh |de/download/solidedge/rh30e
                   |30eval_en_20060331.exe      |val.exe
                 CC|                            |focht at gmx.net
          Component|-unknown                    |gdi32
            Summary|Unhandled page fault when   |Rhino 3D v3 (CAD app)
                   |launching Rhino 3D v. 3     |crashes on startup
                   |                            |(OpenGL/DIB driver needs to
                   |                            |return max index for NULL
                   |                            |PIXELFORMATDESCRIPTOR)

--- Comment #9 from Anastasius Focht <focht at gmx.net> ---
Hello Austin,

I can confirm the crash - even with OSMesa.
The CAD app indeed uses OpenGL bitmap support.

Relevant part of trace log:

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/Rhinoceros 3.0 Evaluation/System

$ WINEDEBUG=+tid,+seh,+relay wine ./Rhino3.exe >>log.txt 2>&1
...
0023:Call gdi32.CreateCompatibleDC(00000000) ret=00769428
0023:Ret  gdi32.CreateCompatibleDC() retval=00010054 ret=00769428
0023:Call gdi32.GetDeviceCaps(00010054,0000000c) ret=0076943f
0023:Ret  gdi32.GetDeviceCaps() retval=00000020 ret=0076943f
0023:Call gdi32.DescribePixelFormat(00010054,00000001,00000000,00000000)
ret=0076945d
0023:Call opengl32.wglDescribePixelFormat(00010054,00000001,00000000,00000000)
ret=7ec186b9
0023:Call gdi32.__wine_get_wgl_driver(00010054,0000000b) ret=7ed5b675
0023:Ret  gdi32.__wine_get_wgl_driver() retval=7ec5b480 ret=7ed5b675
0023:Ret  opengl32.wglDescribePixelFormat() retval=00000000 ret=7ec186b9
0023:Ret  gdi32.DescribePixelFormat() retval=00000000 ret=0076945d
0023:Call gdi32.DeleteDC(00010054) ret=5f4038c2
0023:Ret  gdi32.DeleteDC() retval=00000001 ret=5f4038c2 
...
--- snip ---

The crash is just a late manifestation of the failing DescribePixelFormat()
call.

Debug session:

--- snip ---
Wine-dbg>n
153        if (size < sizeof(*descr)) return 0;
Wine-dbg>bt
Backtrace:
=>0 0x7ebc1a2b dibdrv_wglDescribePixelFormat+0x2f(hdc=0x10054, fmt=0x1, size=0,
descr=(nil))
[/home/focht/projects/wine/wine.repo/src/dlls/gdi32/dibdrv/opengl.c:153] in
gdi32 (0x0033fa08)
  1 0x7ed5c321 wglDescribePixelFormat+0x49(hdc=0x10054, format=0x1, size=0,
descr=(nil)) [/home/focht/projects/wine/wine.repo/src/dlls/opengl32/wgl.c:409]
in opengl32 (0x0033fa38)
  2 0x7ec186b9 DescribePixelFormat+0x9e(hdc=<couldn't compute location>,
fmt=<couldn't compute location>, size=<couldn't compute location>,
pfd=<couldn't compute location>)
[/home/focht/projects/wine/wine.repo/src/dlls/gdi32/opengl.c:89] in gdi32
(0x0033fa68)
  3 0x0076945d in rhino3 (+0x36945c) (0x00010054)
--- snip ---

The app wants to know the maximum pixel format index hence it passes NULL
pixelformat descriptor.
Wine doesn't handle this ...

Source:
http://source.winehq.org/git/wine.git/blob/28be1f7853f01a402854dccdb9d0ee10ab8eaf91:/dlls/gdi32/dibdrv/opengl.c#l148

--- snip ---
148 static int dibdrv_wglDescribePixelFormat( HDC hdc, int fmt, UINT size,
PIXELFORMATDESCRIPTOR *descr )
149 {
150     int ret = sizeof(pixel_formats) / sizeof(pixel_formats[0]);
151
152     if (fmt <= 0 || fmt > ret) return ret;
153     if (size < sizeof(*descr)) return 0;
154
155     memset( descr, 0, sizeof(*descr) );
...
--- snip ---

If you fix this, the app runs farther (a splash screen is shown) - until the
next crash
Something MFC + user32 -> NULL GetParent() which looks familiar .. I've seen
this earlier but can't remember the bug(s) right know.

$ sha1sum rh30eval.exe 
8418bb80ae9bfb1f910f7c0c872424014d3da2f2  rh30eval.exe

$ du -sh rh30eval.exe 
36M    rh30eval.exe

$ wine --version
wine-1.7.15

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list