[Bug 41617] GPower 3.1.9.2 freezes when a plot is created ( gdiplus.GdipDrawCurve2 causes endless loop)

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Oct 14 05:25:38 CDT 2018


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |focht at gmx.net
            Summary|GPower 3.1.9.2: Crashes     |GPower 3.1.9.2 freezes when
                   |when a plot is created.     |a plot is created
                   |                            |(gdiplus.GdipDrawCurve2
                   |                            |causes endless loop)

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

confirming.

Backtrace of the thread with the freeze.
Since there is only one (main) thread it will freeze the whole user interface.

It's actually an endless loop in REGION_xxx when combining regions:

--- snip ---
Wine-dbg>bt

Backtrace:
=>0 0x000000007e6e5922 REGION_RegionOp+0x242(destReg=[<unknown register 333>,
reg1=<is not available>, reg2=<is not available>)
[/home/focht/projects/wine/mainline-src/dlls/gdi32/region.c:1809] in gdi32
(0x000000000033eba8)
  1 0x000000007e6e62f3 REGION_UnionRegion+0x82(newReg=[<unknown register 333>,
reg1=<unknown register 334>, reg2=<unknown register 329>)
[/home/focht/projects/wine/mainline-src/dlls/gdi32/region.c:2092] in gdi32
(0x000000000033ebe8)
  2 0x000000007e6e78b5 CombineRgn+0x3d4(hDest=<couldn't compute location>,
hSrc1=<couldn't compute location>, hSrc2=<couldn't compute location>,
mode=<couldn't compute location>)
[/home/focht/projects/wine/mainline-src/dlls/gdi32/region.c:1278] in gdi32
(0x000000000033ece8)
  3 0x000000007e67d528 wide_line_segment.isra+0x537() in gdi32
(0x000000000033ed88)
  4 0x000000007e67daa4 wide_line_segments+0x183(pdev=[<unknown register 333>,
num=[<unknown register 333>, pts=[<unknown register 333>)
[/home/focht/projects/wine/mainline-src/dlls/gdi32/dibdrv/objects.c:1527] in
gdi32 (0x000000000033ee78)
  5 0x000000007e67dd6b wide_pen_lines+0x10a() in gdi32 (0x000000000033eec8)
  6 0x000000007e679764 dibdrv_PolyPolyline.part+0x173() in gdi32
(0x000000000033f028)
  7 0x000000007e67b525 dibdrv_Polyline+0x24()
[/home/focht/projects/wine/mainline-src/dlls/gdi32/dibdrv/graphics.c:1320] in
gdi32 (0x000000000033f058)
  8 0x000000007e6dcc01 Polyline+0x80(hdc=<couldn't compute location>,
pt=<couldn't compute location>, count=<couldn't compute location>)
[/home/focht/projects/wine/mainline-src/dlls/gdi32/painting.c:641] in gdi32
(0x000000000033f098)
  9 0x000000007e6ddd28 nulldrv_PolyDraw+0x267(types=<is not available>,
count=<is not available>)
[/home/focht/projects/wine/mainline-src/dlls/gdi32/painting.c:209] in gdi32
(0x000000000033f128)
  10 0x000000007e6dd6d9 PolyDraw+0x88(hdc=<couldn't compute location>,
lppt=<couldn't compute location>, lpbTypes=<couldn't compute location>,
cCount=<couldn't compute location>)
[/home/focht/projects/wine/mainline-src/dlls/gdi32/painting.c:879] in gdi32
(0x000000000033f168)
  11 0x000000007e361d09 draw_poly+0x2d8(graphics=<is not available>, pen=<is
not available>, pt=<is not available>, types=<is not available>, count=<is not
available>, caps=<is not available>)
[/home/focht/projects/wine/mainline-src/dlls/gdiplus/graphics.c:1969] in
gdiplus (0x000000000033f1e8)
  12 0x000000007e36854b GdipDrawPath+0x65a() in gdiplus (0x000000000033f2b8)
  13 0x000000007e36940f GdipDrawCurve2+0x11e() in gdiplus (0x000000000033f318)
  14 0x000000000041c51e in gpowernt (+0x1c51d) (0x000000000033f404)
--- snip ---

Trace log:

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files (x86)/GPower 3.1

$ WINEDEBUG=+seh,+relay,+gdiplus,+gdi,+region wine ./GPowerNT.exe >>log.txt
2>&1
...
0036:Call gdiplus.GdipDrawCurve2(00ac1850,00b23398,007b5c50,000000c9,0.03)
ret=0041c51e
0036:trace:gdiplus:GdipDrawCurve2 (0xac1850, 0xb23398, 0x7b5c50, 201, 0.03)
0036:trace:gdiplus:GdipCreatePath (0, 0x33f27c)
...
0036:trace:gdiplus:GdipAddPathCurve2 (0x1a8ab8, 0x7b5c50, 201, 0.03)
...
0036:trace:gdiplus:GdipAddPathBeziers (0x1a8ab8, 0x16df80, 601)
...
0036:trace:gdiplus:GdipDrawPath (0xac1850, 0xb23398, 0x1a8ab8)
...
0036:trace:gdiplus:GdipTransformMatrixPoints (0xac1890, 0x33f1d0, 2)
0036:trace:gdiplus:GdipSetMatrixElements (0x33f138, 1.00, 0.00, 0.00, 1.00,
0.00, 0.00)
0036:trace:gdiplus:GdipMultiplyMatrix (0x33f138, 0xac18d0, 1)
0036:trace:gdiplus:GdipTransformMatrixPoints (0x33f138, 0x33f1d0, 2)
...
0036:trace:gdiplus:GdipSetMatrixElements (0x33f148, 1.00, 0.00, 0.00, 1.00,
0.00, 0.00)
0036:trace:gdiplus:GdipMultiplyMatrix (0x33f148, 0xac18d0, 1)
0036:trace:gdiplus:GdipIsMatrixIdentity (0x33f148, 0x33f144)
0036:trace:gdiplus:GdipIsMatrixEqual (0x33f148, 0x7e3a4680, 0x33f144)
0036:trace:gdiplus:GdipCloneRegion 0x1b83d0 0x33f140
...
0036:trace:gdiplus:GdipGetRegionHRgn (0x1e8498, (nil), 0x33f1c0)
0036:Call gdi32.CreateRectRgn(00000000,00000000,00000000,00000000) ret=7e395fad
0036:trace:gdi:alloc_gdi_handle allocated OBJ_REGION 0x40124 261/16384
0036:trace:region:CreateRectRgn 0,0-0,0 returning 0x40124
0036:trace:region:SetRectRgn 0x40124 0,0-0,0
0036:Ret  gdi32.CreateRectRgn() retval=00040124 ret=7e395fad
0036:trace:gdiplus:GdipDeleteRegion 0x1e8498
0036:trace:gdiplus:GdipDeletePath (0x2045c8)
...
0036:Call gdi32.ExtSelectClipRgn(000d00de,00040124,00000005) ret=7e368525
0036:trace:gdi:alloc_gdi_handle allocated OBJ_REGION 0x30125 262/16384
0036:trace:region:CreateRectRgn 0,0-493,174 returning 0x30125
0036:trace:region:SetRectRgn 0x30125 0,0-493,174
0036:trace:region:CombineRgn  0x40124,(nil) -> 0x30125 mode=5
0036:trace:region:CombineRgn dump src1Obj:
0036:trace:region:REGION_DumpRegion Region 0x1e1620: (0,0)-(0,0) 0 rects
0036:trace:region:CombineRgn dump destObj:
0036:trace:region:REGION_DumpRegion Region 0xb234c0: (0,0)-(0,0) 0 rects
0036:Ret  gdi32.ExtSelectClipRgn() retval=00000001 ret=7e368525
0036:Call gdi32.SaveDC(000d00de) ret=7e35fa40
0036:trace:gdi:alloc_gdi_handle allocated OBJ_REGION 0x30126 263/16384
0036:trace:region:CreateRectRgn 0,0-0,0 returning 0x30126
0036:trace:region:SetRectRgn 0x30126 0,0-0,0
0036:trace:region:CombineRgn  0x30125,(nil) -> 0x30126 mode=5
0036:trace:region:CombineRgn dump src1Obj:
0036:trace:region:REGION_DumpRegion Region 0xb234c0: (0,0)-(0,0) 0 rects
0036:trace:region:CombineRgn dump destObj:
0036:trace:region:REGION_DumpRegion Region 0x205220: (0,0)-(0,0) 0 rects
0036:Ret  gdi32.SaveDC() retval=00000002 ret=7e35fa40
0036:Call gdi32.SetGraphicsMode(000d00de,00000001) ret=7e35fa4f
0036:Ret  gdi32.SetGraphicsMode() retval=00000001 ret=7e35fa4f
0036:Call gdi32.SetMapMode(000d00de,00000001) ret=7e35fa58
...
0036:trace:gdiplus:GdipSetMatrixElements (0x33f0c8, 1.00, 0.00, 0.00, 1.00,
0.00, 0.00)
0036:trace:gdiplus:GdipMultiplyMatrix (0x33f0c8, 0xac1890, 1)
0036:trace:gdiplus:GdipScaleMatrix (0x33f0c8, 1.33, 1.33, 1)
0036:trace:gdiplus:GdipMultiplyMatrix (0x33f0c8, 0xac18d0, 1)
0036:trace:gdiplus:GdipTransformMatrixPoints (0x33f0c8, 0xb28698, 601)
0036:Call gdi32.PolyDraw(000d00de,00b273c8,0016e100,00000259) ret=7e361d09
0036:trace:gdi:PolyDraw 0xd00de, 0xb273c8, 0x16e100, 601
0036:trace:gdi:GDI_Bezier Produced 75 points
0036:trace:gdi:GDI_Bezier Produced 66 points
...
0036:trace:gdi:GDI_Bezier Produced 204 points
...
0036:trace:gdi:GDI_Bezier Produced 2 points
0036:trace:gdi:Polyline 0xd00de, 0xb29968, 20014
0036:trace:gdi:alloc_gdi_handle allocated OBJ_REGION 0x50127 264/16384
0036:trace:region:CreateRectRgn 0,0-0,0 returning 0x50127
0036:trace:region:SetRectRgn 0x50127 0,0-0,0
0036:trace:region:create_polypolygon_region 0x33ec90, count 4, polygons 1, mode
1
0036:trace:gdi:alloc_gdi_handle allocated OBJ_REGION 0x30128 265/16384
0036:trace:region:CombineRgn  0x50127,0x30128 -> 0x50127 mode=2
0036:trace:region:CombineRgn dump src1Obj:
0036:trace:region:REGION_DumpRegion Region 0x1e81e0: (0,0)-(0,0) 0 rects
0036:trace:region:CombineRgn dump src2Obj:
0036:trace:region:REGION_DumpRegion Region 0x1e8248:
(447305,-443568)-(447406,-443542) 26 rects
0036:trace:region:REGION_DumpRegion     (447401,-443568)-(447406,-443567)
0036:trace:region:REGION_DumpRegion     (447397,-443567)-(447406,-443566)
0036:trace:region:REGION_DumpRegion     (447393,-443566)-(447402,-443565)
...
<repeats endlessly>
--- snip ---

Nikolay or Vincent might want to have a look at this.

$ sha1sum GPowerWin_3.1.9.2.zip 
565b22640d0507e8002dce84633f0e03fc0f8617  GPowerWin_3.1.9.2.zip

$ du -sh GPowerWin_3.1.9.2.zip 
13M    GPowerWin_3.1.9.2.zip

$ wine --version
wine-3.18

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