[Bug 30266] Cygnus Fractal eXtreme crashes after trial dialog ( expects gdi32 GetDIBits() returning number of scan lines when bits parameter is NULL)

wine-bugs at winehq.org wine-bugs at winehq.org
Sat May 12 04:28:05 CDT 2018


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |INVALID

--- Comment #4 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

it seems the author of the software changed related code which makes it work
now. I found an unspecific mention of a Wine bugfix in the release notes of
version 2.22, May 2013 which might be related to this.

http://www.cygnus-software.com/whybuyfx/releasenotes.htm

--- quote ---
Version 2.22, May 2013

A fix was made to correct a bug that prevented Fractal eXtreme from running
under Wine.
--- quote ---

It seems he saw my comment #3, made a fix and begone.
Good guy, how nice of him of putting a notice to this ticket. Wait. What?
Its not that he didn't benefit from it ... but well.

For the documentation:

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files (x86)/Cygnus Software/Fractal eXtreme
32-bit

$ WINEDEBUG=+tid,+seh,+relay,+snoop,+bitmap wine ./FractalX.exe >> log.txt 2>&1
...
002e:Call
gdi32.CreateDIBSection(003d00bb,0055de98,00000000,0055de88,00000000,00000000)
ret=00452f55
002e:trace:bitmap:CreateDIBSection format (110,110), planes 1, bpp 8, BI_RGB,
size 12320 RGB
002e:Ret  gdi32.CreateDIBSection() retval=000700ca ret=00452f55
...
002e:Call msvcr100.fopen_s(0033d44c,0033d510 "C:\\users\\focht\\My
Documents\\Fractal eXtreme\\plugin_stamps\\Mandelbrot_Mandelbrot.bmp",0033d450
"wb") ret=0044f07a
...
002e:Call KERNEL32.CreateFileW(0055e2d8 L"C:\\users\\focht\\My
Documents\\Fractal
eXtreme\\plugin_stamps\\Mandelbrot_Mandelbrot.bmp",40000000,00000003,0033d1fc,00000002,00000080,00000000)
ret=7e9acc5e
002e:Ret  KERNEL32.CreateFileW() retval=00000258 ret=7e9acc5e
...
002e:Ret  msvcr100.fopen_s() retval=00000000 ret=0044f07a 
002e:Call gdi32.SetDIBColorTable(003e00bb,00000000,00000100,0055dec0)
ret=00453193
002e:Ret  gdi32.SetDIBColorTable() retval=00000100 ret=00453193
002e:Call msvcr100.ftell(7ea35700) ret=004476ca
002e:Call KERNEL32.SetFilePointer(00000258,00000000,0033ce14,00000001)
ret=7e9aa8b1
002e:Ret  KERNEL32.SetFilePointer() retval=00000000 ret=7e9aa8b1
002e:Ret  msvcr100.ftell() retval=00000000 ret=004476ca
002e:Call msvcr100.fwrite(0033d400,00000001,0000000e,7ea35700) ret=00447641
002e:Call ntdll.RtlAllocateHeap(00550000,00000008,00001000) ret=7e9b424a
002e:Ret  ntdll.RtlAllocateHeap() retval=0055e2d8 ret=7e9b424a
002e:Ret  msvcr100.fwrite() retval=0000000e ret=00447641
002e:Call
gdi32.GetDIBits(003e00bb,000800ca,00000000,0000006e,00000000,0033cfd4,00000000)
ret=0044edc8
002e:Ret  gdi32.GetDIBits() retval=00000001 ret=0044edc8
002e:Call msvcr100.malloc(00003020) ret=0044eddd
002e:Call ntdll.RtlAllocateHeap(00550000,00000000,00003020) ret=7e9b424a
002e:Ret  ntdll.RtlAllocateHeap() retval=0055f2e0 ret=7e9b424a
002e:Ret  msvcr100.malloc() retval=0055f2e0 ret=0044eddd
002e:Call
gdi32.GetDIBits(003e00bb,000800ca,00000000,0000006e,0055f2e0,0033cfd4,00000000)
ret=0044ee16
002e:Ret  gdi32.GetDIBits() retval=00000000 ret=0044ee16
002e:Call msvcr100.fwrite(0033cfd4,00000001,00000028,7ea35700) ret=00447641
002e:Ret  msvcr100.fwrite() retval=00000028 ret=00447641
002e:Call gdi32.SetDIBColorTable(003e00bb,00000000,00000100,0055dec0)
ret=00453193
002e:Ret  gdi32.SetDIBColorTable() retval=00000100 ret=00453193
002e:Call msvcr100.fwrite(0055dec0,00000001,00000400,7ea35700) ret=00447641
002e:Ret  msvcr100.fwrite() retval=00000400 ret=00447641
002e:Call msvcr100.fwrite(0055f2e0,00000001,00003020,7ea35700) ret=00447641
002e:Call KERNEL32.WriteFile(00000258,0055e2d8,00001000,0033cdf8,00000000)
ret=7e9af862
002e:Ret  KERNEL32.WriteFile() retval=00000001 ret=7e9af862
002e:Call KERNEL32.WriteFile(00000258,0055feaa,00002000,0033ce28,00000000)
ret=7e9af862
002e:Ret  KERNEL32.WriteFile() retval=00000001 ret=7e9af862
002e:Ret  msvcr100.fwrite() retval=00003020 ret=00447641 
...
--- snip ---

--- snip ---
0044EDBF   8B1D 88C04A00    MOV EBX,DWORD PTR DS:[<&GDI32.GetDIBits>]
0044EDC5   50               PUSH EAX                       ; hDC
0044EDC6   FFD3             CALL EBX
0044EDC8   85C0             TEST EAX,EAX                   ; 1 -> TRUE
0044EDCA   74 4F            JE SHORT FractalX.0044EE1B
0044EDCC   8B85 D0FBFFFF    MOV EAX,DWORD PTR SS:[EBP-430] ; 0x3020 -> 12320
0044EDD2   85C0             TEST EAX,EAX
0044EDD4   74 45            JE SHORT FractalX.0044EE1B
0044EDD6   50               PUSH EAX
0044EDD7   FF15 48C44A00    CALL DWORD PTR DS:[<&MSVCR100.malloc>]
0044EDDD   83C4 04          ADD ESP,4
0044EDE0   8985 B0FBFFFF    MOV DWORD PTR SS:[EBP-450],EAX ; lpvBits
0044EDE6   85C0             TEST EAX,EAX
0044EDE8   74 31            JE SHORT FractalX.0044EE1B
0044EDEA   8B95 B0FBFFFF    MOV EDX,DWORD PTR SS:[EBP-450]
0044EDF0   8B46 08          MOV EAX,DWORD PTR DS:[ESI+8]
0044EDF3   6A 00            PUSH 0                         ; uUsage
0044EDF5   8D8D BCFBFFFF    LEA ECX,DWORD PTR SS:[EBP-444] 
0044EDFB   51               PUSH ECX                       ; lpbi
0044EDFC   52               PUSH EDX                       ; lpvBits
0044EDFD   50               PUSH EAX                       ; cScanLines = 110
0044EDFE   8B06             MOV EAX,DWORD PTR DS:[ESI]
0044EE00   8B50 14          MOV EDX,DWORD PTR DS:[EAX+14]
0044EE03   6A 00            PUSH 0                         ; uStartScan = 0
0044EE05   8BCE             MOV ECX,ESI
0044EE07   FFD2             CALL EDX
0044EE09   50               PUSH EAX                       ; hbmp
0044EE0A   8B06             MOV EAX,DWORD PTR DS:[ESI]
0044EE0C   8B50 10          MOV EDX,DWORD PTR DS:[EAX+10]
0044EE0F   8BCE             MOV ECX,ESI
0044EE11   FFD2             CALL EDX
0044EE13   50               PUSH EAX                       ; hDC
0044EE14   FFD3             CALL EBX                       ; GDI32.GetDIBits
...
--- snip ---

I still think he had Win9x-ish code there that works in native Windows.
Unfortunately I didn't save the old app version.

Anyway, further investigation seems wasted time. Resolving 'invalid' here.

$ sha1sum fxsetup.msi 
836895f51cd11b0d1d3dee3ba7314ea673268a63  fxsetup.msi

$ du -sh fxsetup.msi 
6.2M    fxsetup.msi

$ wine --version
wine-3.8

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