我在 Go 中有这个简单的 OpenGL 程序。当我编译并运行它时,主游戏循环在因分段违规而崩溃之前经历了大约 9 次迭代。rendering for the 0 timerendering for the 1 timerendering for the 2 timerendering for the 3 timerendering for the 4 timerendering for the 5 timerendering for the 6 timeSIGSEGV: segmentation violationPC=0x7fdab95a0e29signal arrived during cgo executionruntime.cgocall(0x414f90, 0x7fdab9887e88) /usr/lib/go/src/pkg/runtime/cgocall.c:149 +0x11b fp=0x7fdab9887e70github.com/go-gl/gl._Cfunc_glClear(0xc200004100) github.com/go-gl/gl/_obj/_cgo_defun.c:340 +0x31 fp=0x7fdab9887e88github.com/go-gl/gl.Clear(0x4100) /mnt/data/Dropbox/Coding/Go/src/github.com/go-gl/gl/gl.go:161 +0x25 fp=0x7fdab9887e98main.draw() /home/josh/Coding/Go/src/github.com/JoshWillik/Wander/wander.go:120 +0x25 fp=0x7fdab9887eb8main.main() /home/josh/Coding/Go/src/github.com/JoshWillik/Wander/wander.go:52 +0x300 fp=0x7fdab9887f48runtime.main() /usr/lib/go/src/pkg/runtime/proc.c:220 +0x11f fp=0x7fdab9887fa0runtime.goexit() /usr/lib/go/src/pkg/runtime/proc.c:1394 fp=0x7fdab9887fa8goroutine 3 [syscall]:runtime.goexit() /usr/lib/go/src/pkg/runtime/proc.c:1394rax 0x0rbx 0x7fdab9887e88rcx 0x7fdab9887e88rdx 0x7fdab9887e20rdi 0x4100rsi 0xc210001900rbp 0xc21002a000rsp 0x7fdab2a4ddd8r8 0xc210001120r9 0x7fdab9887e20r10 0x0r11 0x286r12 0x0r13 0x7fdab9a74000r14 0x0r15 0x7fdab2a4e700rip 0x7fdab95a0e29rflags 0x10202cs 0x33fs 0x0gs 0x0如果我删除shouldRender函数中基于时间的逻辑,它会在崩溃前迭代大约 28-29 次。如果我删除函数gl.Clear()中的draw调用,它会在崩溃之前持续到 90 年代。如果我删除对fmt.Println()in的调用shouldRender,游戏将按预期运行而不会崩溃。(我已经测试了大约 2 到 3 分钟,所以将近 10,000 帧)这让我怀疑fmt.Println()对分段违规的调用以某种方式负责。我是否误读了这些标志?如果不是,那么核心功能怎么会Println()如此不稳定?
1 回答
- 1 回答
- 0 关注
- 493 浏览
添加回答
举报
0/150
提交
取消