Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash when reducing window to taskbar with popup opened #3877

Closed
2 tasks done
matwachich opened this issue May 8, 2023 · 5 comments
Closed
2 tasks done

Crash when reducing window to taskbar with popup opened #3877

matwachich opened this issue May 8, 2023 · 5 comments
Labels
bug Something isn't working

Comments

@matwachich
Copy link
Contributor

Checklist

  • I have searched the issue tracker for open issues that relate to the same problem, before opening a new one.
  • This issue only relates to a single bug. I will open new issues for any other problems.

Describe the bug

App panics when reducing the window with a Modal PopUp displayed

How to reproduce

Unfortunatly, my code base is really complexe (and closed source), and I'm unable to reproduce simply this bug.

All I have is this crash dump:

panic: runtime error: slice bounds out of range [:-250]

goroutine 22 [running, locked to thread]:
golang.org/x/image/vector.(*Rasterizer).setUseFloatingPointMath(0xc00103d2b0, 0x1?)
        C:/Users/Matwachich/go/pkg/mod/golang.org/x/image@v0.3.0/vector/vector.go:143 +0x125
golang.org/x/image/vector.(*Rasterizer).Reset(0x7ff66f40fa22?, 0xc000eab4a8?, 0x7ff66f0f0ad0?)
        C:/Users/Matwachich/go/pkg/mod/golang.org/x/image@v0.3.0/vector/vector.go:123 +0x65
github.com/srwiley/rasterx.(*ScannerGV).SetBounds(...)
        C:/Users/Matwachich/go/pkg/mod/github.com/srwiley/rasterx@v0.0.0-20210519020934-456a8d69b780/scan.go:166
github.com/srwiley/rasterx.NewScannerGV(0xc0015c4570?, 0x7ff66ed847e5?, {0x7ff66fc9faa0?, 0xc0006276c0}, {{0x0?, 0xc000eab528?}, {0x7ff66edc3cf1?, 0x0?}})
        C:/Users/Matwachich/go/pkg/mod/github.com/srwiley/rasterx@v0.0.0-20210519020934-456a8d69b780/scan.go:173 +0x69
fyne.io/fyne/v2/internal/painter.DrawRectangle(0xc000401b60, 0x40400000, 0xc000eab590)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/painter/draw.go:90 +0x16c
fyne.io/fyne/v2/internal/painter/gl.(*painter).newGlStrokedRectTexture(0xc00116a000, {0x7ff66fca35e0?, 0xc000401b60})
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/painter/gl/texture.go:175 +0x75
fyne.io/fyne/v2/internal/painter/gl.(*painter).newGlRectTexture(0x7ff66faec760?, {0x7ff66fca35e0?, 0xc000401b60?})
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/painter/gl/texture.go:165 +0x57
fyne.io/fyne/v2/internal/painter/gl.(*painter).getTexture(0xc00116a000, {0x7ff66fca35e0, 0xc000401b60}, 0xc000eab768)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/painter/gl/texture.go:36 +0x4f
fyne.io/fyne/v2/internal/painter/gl.(*painter).drawTextureWithDetails(0xc00116a000, {0x7ff66fca35e0?, 0xc000401b60?}, 0xc000eab730?, {0x6fa87e00?, 0x7ff6?}, {0x73fa0?, 0xc0?}, 
{0xeab7a0?, 0xc0?}, ...)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/painter/gl/draw.go:171 +0x8b
fyne.io/fyne/v2/internal/painter/gl.(*painter).drawRectangle(0xc00116a000, 0xc000401b60, {0x6f0f0c60?, 0x7ff6?}, {0x401b7c?, 0xc0?})
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/painter/gl/draw.go:105 +0x1ce
fyne.io/fyne/v2/internal/painter/gl.(*painter).drawObject(0x100000000?, {0x7ff66fca35e0?, 0xc000401b60?}, {0x6ed8c9fd?, 0x7ff6?}, {0x6fa7ad40?, 0x7ff6?})
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/painter/gl/draw.go:87 +0xa6
fyne.io/fyne/v2/internal/painter/gl.(*painter).Paint(0x142a00000?, {0x7ff66fca35e0, 0xc000401b60}, {0x6ed8c9fd?, 0x7ff6?}, {0x6fa7ad40?, 0x7ff6?})
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/painter/gl/painter.go:89 +0x74
fyne.io/fyne/v2/internal/driver/glfw.(*glCanvas).paint.func1(0xc000eab8e0?, {0x6f411834?, 0x7ff6?})
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/glfw/canvas.go:287 +0x115
fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree.func1({0x7ff66fca35e0?, 0xc000401b60}, {0x401b60?, 0xc0?}, {0x550000?, 0xc0?}, {0x6fb397c0?, 0x7ff6?})
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/common/canvas.go:438 +0x277
fyne.io/fyne/v2/internal/driver.walkObjectTree({0x7ff66fca35e0, 0xc000401b60}, 0x0, {0x7ff66fca3f40, 0xc000550000}, {0x6fa7ad40?, 0x7ff6?}, {0x42a00000?, 0x41400000?}, {0x40800000?, ...}, ...)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:169 +0x2b2
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:176
fyne.io/fyne/v2/internal/driver.walkObjectTree({0x7ff66fca3f40, 0xc000550000}, 0x0, {0x7ff66fca3340, 0xc000c071d0}, {0x15d3938?, 0xc0?}, {0x42a00000?, 0x41400000?}, {0x0?, ...}, ...)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:190 +0x3ec
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:176
fyne.io/fyne/v2/internal/driver.walkObjectTree({0x7ff66fca3340, 0xc000c071d0}, 0x0, {0x7ff66fca41e0, 0xc0004c0d80}, {0x400f00?, 0xc0?}, {0x6fa71a00?, 0x7ff6?}, {0x12b0090?, ...}, ...)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:190 +0x3ec
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:176
fyne.io/fyne/v2/internal/driver.walkObjectTree({0x7ff66fca41e0, 0xc0004c0d80}, 0x0, {0x0, 0x0}, {0x6edc3cf1?, 0x7ff6?}, {0x0?, 0x0?}, {0xeabc88?, ...}, ...)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:190 +0x3ec
fyne.io/fyne/v2/internal/driver.WalkVisibleObjectTree({0x7ff66fca41e0?, 0xc0004c0d80?}, 0xc0004a0340?, 0x200000003?)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:134 +0x4c
fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree(0xc000000000?, 0xc00040b620, 0xc000eabdd0, 0xc000eabda0)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/common/canvas.go:459 +0x165
fyne.io/fyne/v2/internal/driver/common.(*Canvas).WalkTrees(0xc0004ca000, 0xc000eabda0?, 0x7ff66f432a46?)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/common/canvas.go:380 +0xd9
fyne.io/fyne/v2/internal/driver/glfw.(*glCanvas).paint(0xc0004ca000, {0x0?, 0x0?})
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/glfw/canvas.go:299 +0xfb
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow.func1()
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/glfw/loop.go:207 +0x8f
fyne.io/fyne/v2/internal/driver/glfw.(*window).RunWithContext(0x0?, 0xc000eabe80)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/glfw/window.go:907 +0x4f
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow(0xc0004ca000?, 0x0?)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/glfw/loop.go:198 +0x4a
fyne.io/fyne/v2/internal/driver/glfw.(*window).platformResize.func1()
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/glfw/window_notlinux.go:21 +0x48
fyne.io/fyne/v2/internal/driver/glfw.(*window).RunWithContext(0xc000eabf90?, 0xc0002a6b20)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/glfw/window.go:907 +0x4f
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread.func1()
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/glfw/loop.go:238 +0x13b
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/glfw/loop.go:230 +0xea
exit status 2

Screenshots

No response

Example code

No code to show, sorry

Fyne version

2.3.4

Go compiler version

1.20

Operating system and version

Windows 10

Additional Information

No response

@matwachich matwachich added the unverified A bug that has been reported but not verified label May 8, 2023
@matwachich
Copy link
Contributor Author

Another crash related to this one I think...

But this is happening randomly, without reducing window.

panic: runtime error: slice bounds out of range [:-32]

goroutine 37 [running, locked to thread]:
golang.org/x/image/vector.(*Rasterizer).setUseFloatingPointMath(0xc0004c4340, 0x1?)
        C:/Users/Matwachich/go/pkg/mod/golang.org/x/image@v0.3.0/vector/vector.go:143 +0x125
golang.org/x/image/vector.(*Rasterizer).Reset(0x7ff767bfef02?, 0xc003965390?, 0x7ff7678dd770?)
        C:/Users/Matwachich/go/pkg/mod/golang.org/x/image@v0.3.0/vector/vector.go:123 +0x65
github.com/srwiley/rasterx.(*ScannerGV).SetBounds(...)
        C:/Users/Matwachich/go/pkg/mod/github.com/srwiley/rasterx@v0.0.0-20210519020934-456a8d69b780/scan.go:166
github.com/srwiley/rasterx.NewScannerGV(0xc003af1640?, 0x7ff7675c47e5?, {0x7ff76849b950?, 0xc0047860c0}, {{0x0?, 0xc003965410?}, {0x7ff767603cf1?, 0x0?}})     
        C:/Users/Matwachich/go/pkg/mod/github.com/srwiley/rasterx@v0.0.0-20210519020934-456a8d69b780/scan.go:173 +0x69
fyne.io/fyne/v2/internal/painter.DrawRectangle(0xc0044d6060, 0x40400000, 0xc003965478)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/painter/draw.go:90 +0x16c
fyne.io/fyne/v2/internal/painter/gl.(*painter).newGlStrokedRectTexture(0xc0003f2230, {0x7ff76849f540?, 0xc0044d6060})
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/painter/gl/texture.go:175 +0x75
fyne.io/fyne/v2/internal/painter/gl.(*painter).newGlRectTexture(0x7ff7682e6e00?, {0x7ff76849f540?, 0xc0044d6060?})
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/painter/gl/texture.go:165 +0x57
fyne.io/fyne/v2/internal/painter/gl.(*painter).getTexture(0xc0003f2230, {0x7ff76849f540, 0xc0044d6060}, 0xc003965650)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/painter/gl/texture.go:36 +0x4f
fyne.io/fyne/v2/internal/painter/gl.(*painter).drawTextureWithDetails(0xc0003f2230, {0x7ff76849f540?, 0xc0044d6060?}, 0xc0004d6000?, {0x0?, 0x0?}, {0x3965658?, 0xc0?}, {0x67603cf1?, 0x7ff7?}, ...)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/painter/gl/draw.go:171 +0x8b
fyne.io/fyne/v2/internal/painter/gl.(*painter).drawRectangle(0xc0003f2230, 0xc0044d6060, {0x678dd900?, 0x7ff7?}, {0x44d607c?, 0xc0?})
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/painter/gl/draw.go:105 +0x1ce
fyne.io/fyne/v2/internal/painter/gl.(*painter).drawObject(0xc003965718?, {0x7ff76849f540?, 0xc0044d6060?}, {0x675cc9fd?, 0x7ff7?}, {0x682776a0?, 0x7ff7?})     
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/painter/gl/draw.go:87 +0xa6
fyne.io/fyne/v2/internal/painter/gl.(*painter).Paint(0x15a4457f1c8?, {0x7ff76849f540, 0xc0044d6060}, {0x70800?, 0xc0?}, {0x4786080?, 0xc0?})
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/painter/gl/painter.go:89 +0x74
fyne.io/fyne/v2/internal/driver/glfw.(*glCanvas).paint.func1(0xc0039657c8?, {0x67c00d14?, 0x7ff7?})
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/glfw/canvas.go:287 +0x115
fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree.func1({0x7ff76849f540?, 0xc0044d6060}, {0x44d6060?, 0xc0?}, {0x2ef7680?, 0xc0?}, {0x70800?, 0xc0?})  
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/common/canvas.go:438 +0x277
fyne.io/fyne/v2/internal/driver.walkObjectTree({0x7ff76849f540, 0xc0044d6060}, 0x0, {0x7ff7684a0b00, 0xc002ef7680}, {0x18c4c40?, 0xc0?}, {0x43fa8000?, 0x44480000?}, {0x40c00000?, ...}, ...)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:169 +0x2b2
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:176
fyne.io/fyne/v2/internal/driver.walkObjectTree({0x7ff7684a0b00, 0xc002ef7680}, 0x0, {0x7ff76849f2a0, 0xc0025aa5a0}, {0x18c4c00?, 0xc0?}, {0x43fa8000?, 0x44480000?}, {0x40c00000?, ...}, ...)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:190 +0x3ec
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:176
fyne.io/fyne/v2/internal/driver.walkObjectTree({0x7ff76849f2a0, 0xc0025aa5a0}, 0x0, {0x7ff76849f780, 0xc0001d3570}, {0x67b915b2?, 0x7ff7?}, {0x43fa8000?, 0x44480000?}, {0x40c00000?, ...}, ...)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:190 +0x3ec
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:176
fyne.io/fyne/v2/internal/driver.walkObjectTree({0x7ff76849f780, 0xc0001d3570}, 0x0, {0x7ff76849f6c0, 0xc0004d8000}, {0x19c1f80?, 0xc0?}, {0x6826e260?, 0x7ff7?}, {0x31552c0?, ...}, ...)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:190 +0x3ec
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:176
fyne.io/fyne/v2/internal/driver.walkObjectTree({0x7ff76849f6c0, 0xc0004d8000}, 0x0, {0x0, 0x0}, {0x67603cf1?, 0x7ff7?}, {0x0?, 0x0?}, {0x3965c38?, ...}, ...)  
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:190 +0x3ec
fyne.io/fyne/v2/internal/driver.WalkVisibleObjectTree({0x7ff76849f6c0?, 0xc0004d8000?}, 0xc0004a0340?, 0x200000003?)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/util.go:134 +0x4c
fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree(0xc000000000?, 0xc00041ff20, 0xc003965d80, 0xc003965d50)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/common/canvas.go:459 +0x165
fyne.io/fyne/v2/internal/driver/common.(*Canvas).WalkTrees(0xc0004d6000, 0xc003965d50?, 0x7ff767c21f26?)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/common/canvas.go:371 +0x3c
fyne.io/fyne/v2/internal/driver/glfw.(*glCanvas).paint(0xc0004d6000, {0x0?, 0x0?})
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/glfw/canvas.go:299 +0xfb
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow.func1()
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/glfw/loop.go:207 +0x8f
fyne.io/fyne/v2/internal/driver/glfw.(*window).RunWithContext(0xc0003ca3f0?, 0xc003965e30)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/glfw/window.go:907 +0x4f
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow(0xc004681140?, 0xc0019eb900?)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/glfw/loop.go:198 +0x4a
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).drawSingleFrame(0xc003965f90?)
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/glfw/loop.go:106 +0x1ac
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread.func1()
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/glfw/loop.go:254 +0x1a6
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread
        C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.4/internal/driver/glfw/loop.go:230 +0xea
exit status 2

@matwachich
Copy link
Contributor Author

matwachich commented May 22, 2023

I had the chance to catch this crash while on a debug session! Here are the infos I gathered, hope this will be helpfull.


The callstack
image

The problem is about some rectangle that gets rasterized (?) that have size.X = -1
image
image

While drawing an extended Entry widget:
image

It seems that it's rectangles have size.X < 0:
image

It seems that this bug occures while "hiding" widgets: while closing a window, closing a doctabitem, reducing the window...

Perhaps some drawing occures while it should not? (widgets already hidden, this is why Width is incorrect?)
Desync between drawing thread and others?

@matwachich
Copy link
Contributor Author

I was on develop branche, and I never encountered this bug.

I came back to master, and the bug is here...

@andydotxyz
Copy link
Member

I was about to say, I think that it would have been sorted by our move to the GL rectangle drawer.
There was an old bug where this was fixed for GL and maybe we missed the equivalent fix in software renderer (used on 2.4.x where we have a stroked border).

andydotxyz added a commit to andydotxyz/fyne that referenced this issue May 29, 2023
andydotxyz added a commit that referenced this issue May 30, 2023
@andydotxyz
Copy link
Member

Fixed on develop and release branch, will be published in v2.3.5

@Jacalz Jacalz added bug Something isn't working and removed unverified A bug that has been reported but not verified labels Jun 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants