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

Massive data race detect!! #506

Closed
prospero78 opened this issue Oct 29, 2019 · 10 comments
Closed

Massive data race detect!! #506

prospero78 opened this issue Oct 29, 2019 · 10 comments
Assignees
Labels
bug Something isn't working

Comments

@prospero78
Copy link

prospero78 commented Oct 29, 2019

Describe the bug
Im compile my soft with option -race. After start im loock in console 23 event data race

Device (please complete the following information):

  • OS: Ubuntu Linux
  • Version 18.04 LTS
  • Go version 1.13.1
  • Fyne version: last stable, public download from github.
@andydotxyz
Copy link
Member

You are quite right - there are lots of areas where this needs to be improved.
The biggest of which are the widget properties and the manner in which canvasobjects are refreshed.
Both of these should be addressed in v1.2 which means that the races detected should be down to a manageable number of fixes required.

@andydotxyz
Copy link
Member

The codebase is now passing with -race for the most part.
We know that the redenderers can still cause some races but that requires a behaviour change to how they are maintained - moved that item to 2.0.
I think we can close this ticket though. Feel free to test on develop if you would like.

@stuartmscott
Copy link
Member

Tested on develop @ 3135c88 with go test -race -count 10 ./...

==================
WARNING: DATA RACE
Write at 0x00c000001800 by main goroutine:
  fyne.io/fyne/internal/driver/glfw.(*window).create.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:1137 +0x1c3
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).runGL()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:96 +0x64d
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).Run()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/driver.go:70 +0x44
  fyne.io/fyne/internal/driver/glfw.TestMain()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window_test.go:47 +0xab
  main.main()
      _testmain.go:136 +0x223

Previous read at 0x00c000001800 by goroutine 9:
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).startDrawThread.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:171 +0x234

Goroutine 9 (running) created at:
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).startDrawThread()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:155 +0xca
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).initGLFW.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:77 +0x99
  sync.(*Once).doSlow()
      /usr/local/go/src/sync/once.go:66 +0x103
  sync.(*Once).Do()
      /usr/local/go/src/sync/once.go:57 +0x68
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).initGLFW()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:69 +0x72
  fyne.io/fyne/internal/driver/glfw.TestMain()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window_test.go:37 +0x61
  main.main()
      _testmain.go:136 +0x223
==================
==================
WARNING: DATA RACE
Write at 0x00c0001523d8 by main goroutine:
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).runGL()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:129 +0x2d9
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).Run()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/driver.go:70 +0x44
  fyne.io/fyne/internal/driver/glfw.TestMain()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window_test.go:47 +0xab
  main.main()
      _testmain.go:136 +0x223

Previous read at 0x00c0001523d8 by goroutine 22:
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).focusPreviousWindow()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/driver.go:84 +0x42
  fyne.io/fyne/internal/driver/glfw.(*window).destroy()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:455 +0xe3

Goroutine 22 (running) created at:
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).runGL()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:117 +0x4c5
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).Run()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/driver.go:70 +0x44
  fyne.io/fyne/internal/driver/glfw.TestMain()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window_test.go:47 +0xab
  main.main()
      _testmain.go:136 +0x223
==================
--- FAIL: TestGlCanvas_Content (0.41s)
    testing.go:906: race detected during execution of test
==================
WARNING: DATA RACE
Read at 0x00c00006e140 by main goroutine:
  fyne.io/fyne/canvas.(*Circle).Position()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/canvas/circle.go:35 +0x43
  fyne.io/fyne/internal/driver.walkObjectTree()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/util.go:58 +0x73
  fyne.io/fyne/internal/driver.WalkVisibleObjectTree()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/util.go:25 +0x92
  fyne.io/fyne/internal/driver/glfw.(*glCanvas).walkTree()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/canvas.go:461 +0x205
  fyne.io/fyne/internal/driver/glfw.(*glCanvas).walkTrees()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/canvas.go:399 +0xd8
  fyne.io/fyne/internal/driver/glfw.(*glCanvas).ensureMinSize()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/canvas.go:344 +0xa5
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).runGL()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:121 +0x51c
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).Run()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/driver.go:70 +0x44
  fyne.io/fyne/internal/driver/glfw.TestMain()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window_test.go:47 +0xab
  main.main()
      _testmain.go:136 +0x223

Previous write at 0x00c00006e140 by goroutine 21:
  fyne.io/fyne/canvas.(*Circle).Move()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/canvas/circle.go:41 +0xbe
  fyne.io/fyne/internal/driver/glfw.(*glCanvas).SetPadded()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/canvas.go:151 +0xa9
  fyne.io/fyne/internal/driver/glfw.(*glCanvas).setupThemeListener.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/canvas.go:488 +0x53

Goroutine 21 (running) created at:
  fyne.io/fyne/internal/driver/glfw.(*glCanvas).setupThemeListener()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/canvas.go:481 +0xb3
  fyne.io/fyne/internal/driver/glfw.newCanvas()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/canvas.go:567 +0x624
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).createWindow.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:1100 +0x1fb
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).runGL()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:96 +0x64d
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).Run()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/driver.go:70 +0x44
  fyne.io/fyne/internal/driver/glfw.TestMain()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window_test.go:47 +0xab
  main.main()
      _testmain.go:136 +0x223
==================

@andydotxyz
Copy link
Member

More in #1014

@andydotxyz
Copy link
Member

Can I close this issue now? There are some tests that can cause race warnings but I think they are down to the renderer handling now.

@stuartmscott
Copy link
Member

I ran the test suite again and the remaining race conditions were in widget package (typically Entry). However I still encounter races when running the demo:

go run -race cmd/fyne_demo/main.go 

==================
WARNING: DATA RACE
Write at 0x00c0000a0d83 by main goroutine:
  fyne.io/fyne/internal/driver/glfw.(*window).doShow.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:337 +0x53
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).runGL()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:96 +0x64d
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).Run()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/driver.go:70 +0x44
  fyne.io/fyne/internal/driver/glfw.(*window).ShowAndRun()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:383 +0x64
  main.main()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/main.go:127 +0x1ca5

Previous read at 0x00c0000a0d83 by goroutine 11:
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).startDrawThread.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:171 +0x29d

Goroutine 11 (running) created at:
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).startDrawThread()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:155 +0xca
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).initGLFW.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:77 +0x99
  sync.(*Once).doSlow()
      /usr/local/go/src/sync/once.go:66 +0x103
  sync.(*Once).Do()
      /usr/local/go/src/sync/once.go:57 +0x68
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).initGLFW()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:69 +0x72
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).createWindow.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:1098 +0x7f
  fyne.io/fyne/internal/driver/glfw.runOnMain()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:51 +0xd1
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).createWindow()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:1097 +0x168
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).CreateWindow()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:1089 +0x51
  fyne.io/fyne/app.(*fyneApp).NewWindow()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/app/app.go:43 +0x68
  main.main()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/main.go:71 +0x170
==================

andydotxyz added a commit to andydotxyz/fyne that referenced this issue May 21, 2020
@andydotxyz andydotxyz mentioned this issue May 21, 2020
3 tasks
@andydotxyz
Copy link
Member

better ? :)

@stuartmscott
Copy link
Member

Unfortunately not, most of them are widget-related, but there is still one in window.go:335:

$ git rev-parse HEAD
9df3458af30642c3c4e95e1f375c84e613290076
$ go run -race cmd/fyne_demo/main.go 
Windows tab selected
==================
WARNING: DATA RACE
Read at 0x00c00047aa98 by main goroutine:
  fyne.io/fyne/widget.(*progressRenderer).MinSize()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/progressbar.go:25 +0x64
  fyne.io/fyne/widget.(*BaseWidget).MinSize()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/widget.go:89 +0x6d
  fyne.io/fyne/widget.(*ProgressBar).MinSize()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/progressbar.go:88 +0x5d
  fyne.io/fyne/layout.(*boxLayout).MinSize()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/layout/boxlayout.go:128 +0x220
  fyne.io/fyne/widget.(*boxRenderer).MinSize()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/box.go:86 +0x9f
  fyne.io/fyne/widget.(*BaseWidget).MinSize()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/widget.go:89 +0x6d
  fyne.io/fyne/widget.(*Box).MinSize()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/box.go:49 +0x5d
  fyne.io/fyne/widget.(*tabContainerRenderer).MinSize()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/tabcontainer.go:261 +0x10e
  fyne.io/fyne/widget.(*BaseWidget).MinSize()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/widget.go:89 +0x6d
  fyne.io/fyne/widget.(*TabContainer).MinSize()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/tabcontainer.go:99 +0x5d
  fyne.io/fyne/layout.(*borderLayout).MinSize()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/layout/borderlayout.go:67 +0x5c4
  fyne.io/fyne.(*Container).MinSize()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/container.go:54 +0x1d2
  fyne.io/fyne/widget.(*tabContainerRenderer).MinSize()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/tabcontainer.go:261 +0x10e
  fyne.io/fyne/widget.(*BaseWidget).MinSize()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/widget.go:89 +0x6d
  fyne.io/fyne/widget.(*TabContainer).MinSize()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/tabcontainer.go:99 +0x5d
  fyne.io/fyne/internal/driver/glfw.(*glCanvas).SetContent()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/canvas.go:111 +0x22f
  fyne.io/fyne/internal/driver/glfw.(*window).SetContent()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:406 +0x90
  main.main()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/main.go:125 +0x1c8b

Previous write at 0x00c00047aa98 by goroutine 18:
  fyne.io/fyne/widget.(*progressRenderer).applyTheme()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/progressbar.go:57 +0x140
  fyne.io/fyne/widget.(*progressRenderer).Refresh()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/progressbar.go:65 +0x38
  fyne.io/fyne/widget.(*BaseWidget).Refresh()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/widget.go:137 +0x69
  fyne.io/fyne/widget.(*ProgressBar).SetValue()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/progressbar.go:82 +0x74
  fyne.io/fyne/cmd/fyne_demo/screens.makeProgressTab.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/screens/widget.go:209 +0x4e

Goroutine 18 (running) created at:
  fyne.io/fyne/cmd/fyne_demo/screens.makeProgressTab()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/screens/widget.go:205 +0x6c
  fyne.io/fyne/cmd/fyne_demo/screens.WidgetScreen()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/screens/widget.go:288 +0x7fe
  main.main()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/main.go:116 +0x1635
==================
==================
WARNING: DATA RACE
Write at 0x00c0000a0d83 by main goroutine:
  fyne.io/fyne/internal/driver/glfw.(*window).doShow.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:335 +0x53
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).runGL()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:96 +0x692
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).Run()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/driver.go:70 +0x44
  fyne.io/fyne/internal/driver/glfw.(*window).ShowAndRun()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:381 +0x64
  main.main()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/main.go:127 +0x1ca5

Previous read at 0x00c0000a0d83 by goroutine 11:
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).startDrawThread.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:179 +0x278

Goroutine 11 (running) created at:
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).startDrawThread()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:161 +0xca
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).initGLFW.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:77 +0x99
  sync.(*Once).doSlow()
      /usr/local/go/src/sync/once.go:66 +0x103
  sync.(*Once).Do()
      /usr/local/go/src/sync/once.go:57 +0x68
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).initGLFW()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:69 +0x72
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).createWindow.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:1092 +0x7f
  fyne.io/fyne/internal/driver/glfw.runOnMain()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:51 +0xd1
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).createWindow()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:1091 +0x168
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).CreateWindow()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:1083 +0x51
  fyne.io/fyne/app.(*fyneApp).NewWindow()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/app/app.go:43 +0x68
  main.main()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/main.go:71 +0x170
==================
==================
WARNING: DATA RACE
Write at 0x00c0000a0e48 by goroutine 11:
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).repaintWindow.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:143 +0x103
  fyne.io/fyne/internal/driver/glfw.(*window).RunWithContext()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:1012 +0x55
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).repaintWindow()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:141 +0x85
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).startDrawThread.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:185 +0x2eb

Previous read at 0x00c0000a0e48 by main goroutine:
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).runGL()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:123 +0x537
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).Run()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/driver.go:70 +0x44
  fyne.io/fyne/internal/driver/glfw.(*window).ShowAndRun()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:381 +0x64
  main.main()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/main.go:127 +0x1ca5

Goroutine 11 (running) created at:
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).startDrawThread()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:161 +0xca
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).initGLFW.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:77 +0x99
  sync.(*Once).doSlow()
      /usr/local/go/src/sync/once.go:66 +0x103
  sync.(*Once).Do()
      /usr/local/go/src/sync/once.go:57 +0x68
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).initGLFW()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:69 +0x72
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).createWindow.func1()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:1092 +0x7f
  fyne.io/fyne/internal/driver/glfw.runOnMain()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:51 +0xd1
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).createWindow()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:1091 +0x168
  fyne.io/fyne/internal/driver/glfw.(*gLDriver).CreateWindow()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:1083 +0x51
  fyne.io/fyne/app.(*fyneApp).NewWindow()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/app/app.go:43 +0x68
  main.main()
      /Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/main.go:71 +0x170
==================
fatal error: checkptr: unsafe pointer arithmetic

goroutine 23 [running, locked to thread]:
runtime.throw(0x47208c5, 0x23)
	/usr/local/go/src/runtime/panic.go:1116 +0x72 fp=0xc00070d778 sp=0xc00070d748 pc=0x40352b2
runtime.checkptrArithmetic(0xc, 0x0, 0x0, 0x0)
	/usr/local/go/src/runtime/checkptr.go:26 +0xce fp=0xc00070d7a8 sp=0xc00070d778 pc=0x4008f8e
github.com/go-gl/gl/v3.2-core/gl.PtrOffset(...)
	/Users/stuartscott/Documents/Projects/Go/pkg/mod/github.com/go-gl/gl@v0.0.0-20190320180904-bf2b1f2f34d7/v3.2-core/gl/conversions.go:55
fyne.io/fyne/internal/painter/gl.(*glPainter).glCreateBuffer(0xc0003e1590, 0xc00021a550, 0x14, 0x14, 0x4)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/painter/gl/gl_core.go:198 +0x3e7 fp=0xc00070d848 sp=0xc00070d7a8 pc=0x44cf797
fyne.io/fyne/internal/painter/gl.(*glPainter).drawTextureWithDetails(0xc0003e1590, 0x47c8e40, 0xc0000e5c80, 0xc00070d950, 0x4, 0x4, 0x29e, 0x1ca, 0x2a6, 0x1d2, ...)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/painter/gl/draw.go:67 +0x144 fp=0xc00070d8c8 sp=0xc00070d848 pc=0x44c9a54
fyne.io/fyne/internal/painter/gl.(*glPainter).drawWidget(0xc0003e1590, 0x47ca0e0, 0xc0000e5c80, 0x4, 0x4, 0x2a6, 0x1d2)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/painter/gl/draw.go:78 +0x1d6 fp=0xc00070d970 sp=0xc00070d8c8 pc=0x44c9c96
fyne.io/fyne/internal/painter/gl.(*glPainter).drawObject(0xc0003e1590, 0x47c8e40, 0xc0000e5c80, 0x4, 0x4, 0x2a6, 0x1d2)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/painter/gl/draw.go:152 +0x122 fp=0xc00070d9d0 sp=0xc00070d970 pc=0x44cae52
fyne.io/fyne/internal/painter/gl.(*glPainter).Paint(0xc0003e1590, 0x47c8e40, 0xc0000e5c80, 0x4, 0x4, 0x2a6, 0x1d2)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/painter/gl/painter.go:68 +0xa3 fp=0xc00070da18 sp=0xc00070d9d0 pc=0x44cff63
fyne.io/fyne/internal/driver/glfw.(*glCanvas).paint.func1(0xc000202870, 0x4, 0x4)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/canvas.go:416 +0x1e9 fp=0xc00070daa8 sp=0xc00070da18 pc=0x4545f09
fyne.io/fyne/internal/driver/glfw.(*glCanvas).walkTree.func1(0x47c8e40, 0xc0000e5c80, 0x4, 0x4, 0x0, 0x0, 0x7fffffff, 0x7fffffff, 0x2)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/canvas.go:472 +0x1de fp=0xc00070db18 sp=0xc00070daa8 pc=0x45461ce
fyne.io/fyne/internal/driver.walkObjectTree(0x47c8e40, 0xc0000e5c80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fffffff, 0x7fffffff, ...)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/util.go:74 +0x33f fp=0xc00070dbe0 sp=0xc00070db18 pc=0x43a2e0f
fyne.io/fyne/internal/driver.WalkVisibleObjectTree(0x47c8e40, 0xc0000e5c80, 0xc00070dd30, 0xc00070dd08, 0x403e97c)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/util.go:25 +0x93 fp=0xc00070dc68 sp=0xc00070dbe0 pc=0x43a29c3
fyne.io/fyne/internal/driver/glfw.(*glCanvas).walkTree(0xc0000c0c60, 0xc0002087c0, 0xc00070dde0, 0xc00070ddd0)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/canvas.go:493 +0x206 fp=0xc00070dd68 sp=0xc00070dc68 pc=0x4535e36
fyne.io/fyne/internal/driver/glfw.(*glCanvas).walkTrees(0xc0000c0c60, 0xc00070dde0, 0xc00070ddd0)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/canvas.go:431 +0x74 fp=0xc00070ddb8 sp=0xc00070dd68 pc=0x4535af4
fyne.io/fyne/internal/driver/glfw.(*glCanvas).paint(0xc0000c0c60, 0x2a6, 0x1d2)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/canvas.go:424 +0xfa fp=0xc00070de10 sp=0xc00070ddb8 pc=0x4535a4a
fyne.io/fyne/internal/driver/glfw.(*gLDriver).repaintWindow.func1()
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:148 +0xab fp=0xc00070de50 sp=0xc00070de10 pc=0x4546e3b
fyne.io/fyne/internal/driver/glfw.(*window).RunWithContext(0xc0000a0d00, 0xc000184e78)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:1012 +0x56 fp=0xc00070de68 sp=0xc00070de50 pc=0x45448a6
fyne.io/fyne/internal/driver/glfw.(*gLDriver).repaintWindow(0xc0000ce280, 0xc0000a0d00)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:141 +0x86 fp=0xc00070dea0 sp=0xc00070de68 pc=0x4538f16
fyne.io/fyne/internal/driver/glfw.(*gLDriver).startDrawThread.func1(0xc000090360, 0xc00008e190, 0xc0000ce280)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:185 +0x2ec fp=0xc00070dfc8 sp=0xc00070dea0 pc=0x454719c
runtime.goexit()
	/usr/local/go/src/runtime/asm_amd64.s:1373 +0x1 fp=0xc00070dfd0 sp=0xc00070dfc8 pc=0x4066271
created by fyne.io/fyne/internal/driver/glfw.(*gLDriver).startDrawThread
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:161 +0xcb

goroutine 1 [select, locked to thread]:
fyne.io/fyne/internal/driver/glfw.(*gLDriver).runGL(0xc0000ce280)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/loop.go:90 +0x22e
fyne.io/fyne/internal/driver/glfw.(*gLDriver).Run(0xc0000ce280)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/driver.go:70 +0x45
fyne.io/fyne/internal/driver/glfw.(*window).ShowAndRun(0xc0000a0d00)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:381 +0x65
main.main()
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/main.go:127 +0x1ca6

goroutine 19 [sleep]:
time.Sleep(0x22ecb25c00)
	/usr/local/go/src/runtime/time.go:188 +0xba
fyne.io/fyne/internal/painter.svgCacheJanitor.func1()
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/painter/svg_cache.go:51 +0x1b1
sync.(*Once).doSlow(0x57dd818, 0xc0000b42d0)
	/usr/local/go/src/sync/once.go:66 +0x104
sync.(*Once).Do(0x57dd818, 0xc0000b42d0)
	/usr/local/go/src/sync/once.go:57 +0x69
created by fyne.io/fyne/internal/painter.svgCacheJanitor
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/painter/svg_cache.go:49 +0xdd

goroutine 20 [chan receive]:
fyne.io/fyne/app.newAppWithDriver.func1(0xc0000901e0, 0xc0000b2420)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/app/app.go:113 +0x4b
created by fyne.io/fyne/app.newAppWithDriver
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/app/app.go:111 +0x2a7

goroutine 21 [syscall]:
syscall.syscall6(0x4571940, 0x8, 0x0, 0x0, 0xc00003b688, 0xa, 0x57dd910, 0x0, 0x0, 0x0)
	/usr/local/go/src/runtime/sys_darwin.go:74 +0x2e
golang.org/x/sys/unix.kevent(0x8, 0x0, 0x0, 0xc00003b688, 0xa, 0x57dd910, 0x0, 0x0, 0x0)
	/Users/stuartscott/Documents/Projects/Go/pkg/mod/golang.org/x/sys@v0.0.0-20200327173247-9dae0f8f5775/unix/zsyscall_darwin_amd64.go:292 +0xc5
golang.org/x/sys/unix.Kevent(0x8, 0x0, 0x0, 0x0, 0xc00003b688, 0xa, 0xa, 0x57dd910, 0xc00003b498, 0x4008b4a, ...)
	/Users/stuartscott/Documents/Projects/Go/pkg/mod/golang.org/x/sys@v0.0.0-20200327173247-9dae0f8f5775/unix/syscall_bsd.go:413 +0x8d
github.com/fsnotify/fsnotify.read(0x8, 0xc00003b688, 0xa, 0xa, 0x57dd910, 0xc00003b688, 0x0, 0xa, 0x0, 0x0)
	/Users/stuartscott/Documents/Projects/Go/pkg/mod/github.com/fsnotify/fsnotify@v1.4.9/kqueue.go:511 +0x85
github.com/fsnotify/fsnotify.(*Watcher).readEvents(0xc0000b24e0)
	/Users/stuartscott/Documents/Projects/Go/pkg/mod/github.com/fsnotify/fsnotify@v1.4.9/kqueue.go:274 +0x8d8
created by github.com/fsnotify/fsnotify.NewWatcher
	/Users/stuartscott/Documents/Projects/Go/pkg/mod/github.com/fsnotify/fsnotify@v1.4.9/kqueue.go:62 +0x333

goroutine 22 [chan receive]:
fyne.io/fyne/app.watchFile.func1(0xc0000b24e0, 0xc0000b6100, 0x39, 0xc00009b390, 0xc00009b3a0)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/app/settings_desktop.go:42 +0x76
created by fyne.io/fyne/app.watchFile
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/app/settings_desktop.go:41 +0x148

goroutine 24 [chan receive]:
fyne.io/fyne/internal/driver/glfw.(*window).runEventQueue(0xc0000a0d00)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:1072 +0xd3
created by fyne.io/fyne/internal/driver/glfw.(*gLDriver).createWindow.func1
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/window.go:1097 +0x201

goroutine 25 [chan receive]:
fyne.io/fyne/internal/driver/glfw.(*glCanvas).setupThemeListener.func1(0xc0000903c0, 0xc0000c0c60)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/canvas.go:515 +0x6b
created by fyne.io/fyne/internal/driver/glfw.(*glCanvas).setupThemeListener
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/driver/glfw/canvas.go:513 +0xb4

goroutine 26 [sleep]:
time.Sleep(0x3b9aca00)
	/usr/local/go/src/runtime/time.go:188 +0xba
fyne.io/fyne/cmd/fyne_demo/screens.GraphicsScreen.func1(0xc000127280)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/screens/graphics.go:25 +0x53
created by fyne.io/fyne/cmd/fyne_demo/screens.GraphicsScreen
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/screens/graphics.go:23 +0x1db

goroutine 34 [chan receive]:
fyne.io/fyne/widget.(*infProgressRenderer).infiniteProgressLoop(0xc0002167c0)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/progressbarinfinite.go:134 +0x54
created by fyne.io/fyne/widget.(*infProgressRenderer).start
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/widget/progressbarinfinite.go:113 +0x17a

goroutine 35 [sleep]:
time.Sleep(0x5f5e100)
	/usr/local/go/src/runtime/time.go:188 +0xba
fyne.io/fyne/cmd/fyne_demo/screens.makeProgressTab.func1(0xc00020a230)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/screens/widget.go:208 +0x47
created by fyne.io/fyne/cmd/fyne_demo/screens.makeProgressTab
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/screens/widget.go:205 +0x6d

goroutine 39 [sleep]:
time.Sleep(0x3b9aca00)
	/usr/local/go/src/runtime/time.go:188 +0xba
fyne.io/fyne/cmd/fyne_demo/screens.setScaleText(0xc0000e4e80, 0x47cb9e0, 0xc0000a0d00)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/screens/advanced.go:25 +0x3e
created by fyne.io/fyne/cmd/fyne_demo/screens.AdvancedScreen
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/cmd/fyne_demo/screens/advanced.go:38 +0x358

goroutine 6 [chan receive]:
fyne.io/fyne/internal/painter.SvgCacheMonitorTheme.func1(0xc00007e060)
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/painter/svg_cache.go:103 +0x42
created by fyne.io/fyne/internal/painter.SvgCacheMonitorTheme
	/Users/stuartscott/Documents/Projects/Go/src/fyne.io/fyne/internal/painter/svg_cache.go:101 +0xaa
exit status 2

andydotxyz added a commit to andydotxyz/fyne that referenced this issue May 22, 2020
The remaining races that can be found all have xxxRenderer.Refresh() in them, which we will resolve in 2.0

Fixes fyne-io#506
andydotxyz added a commit to andydotxyz/fyne that referenced this issue May 22, 2020
The remaining races that can be found all have xxxRenderer.Refresh() in them, which we will resolve in 2.0

Fixes fyne-io#506
@andydotxyz
Copy link
Member

Maybe that last one will be the clincher? :)

@andydotxyz
Copy link
Member

On the call we agreed that this is now resolved.
We will follow race issues in WidgetRenderer and related APIs in #1028

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