google / gapid

Graphics API Debugger
https://gapid.dev
Apache License 2.0
2.2k stars 327 forks source link

Crash division by zero in core/stream.Convert #2750

Open hevrard opened 5 years ago

hevrard commented 5 years ago

Trying to open (in the UI) a small trace leads to:

W20190514-110741580[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis: panic: runtime error: integer divide by zero [recovered]
W20190514-110741581[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis:     panic: runtime error: integer divide by zero
W20190514-110741581[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis: 
W20190514-110741581[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis: goroutine 355 [running]:
W20190514-110741581[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis: github.com/google/gapid/core/app/crash.Crash(0x6200ec0, 0xc3a7630)
W20190514-110741582[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis:     core/app/crash/crash.go:89 +0xe1
W20190514-110741582[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis: github.com/google/gapid/core/app/crash.handler()
W20190514-110741582[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis:     core/app/crash/crash.go:56 +0x54
W20190514-110741583[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis: panic(0x6200ec0, 0xc3a7630)
W20190514-110741583[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis:     GOROOT/src/runtime/panic.go:513 +0x1b9
W20190514-110741583[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis: github.com/google/gapid/core/stream.Convert(0xc005da7580, 0xc005c84280, 0xc0057e6000, 0x0, 0x48000, 0x0, 0x0, 0x0, 0x0, 0x0)
W20190514-110741583[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis:     core/stream/convert.go:58 +0xdd5
W20190514-110741584[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis: github.com/google/gapid/core/image.(*FmtUncompressed).convert(0xc0056bdce0, 0xc0057e6000, 0x0, 0x48000, 0x60, 0xc0, 0x1, 0xc005da7680, 0x0, 0x0, ...)
W20190514-110741584[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis:     core/image/uncompressed.go:87 +0x269
W20190514-110741584[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis: github.com/google/gapid/core/image.convertDirect(0xc0057e6000, 0x0, 0x48000, 0x60, 0xc0, 0x1, 0xc005c842c0, 0xc005da7680, 0x0, 0x0, ...)
W20190514-110741585[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis:     core/image/convert.go:105 +0x77a
W20190514-110741585[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis: github.com/google/gapid/core/image.Convert(0xc0057e6000, 0x0, 0x48000, 0x60, 0xc0, 0x1, 0xc005c842c0, 0xc005da7680, 0x0, 0x0, ...)
W20190514-110741585[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis:     core/image/convert.go:65 +0xe2
W20190514-110741585[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis: github.com/google/gapid/core/image.(*Data).Convert(0xc00556dc20, 0xc005da7680, 0x0, 0x0, 0x0)
W20190514-110741586[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis:     core/image/image.go:99 +0x134
W20190514-110741586[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis: github.com/google/gapid/gapis/api/gles.postFBData.func3.1.1(0x0, 0x0, 0x0, 0x0)
W20190514-110741586[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis:     gapis/api/gles/read_framebuffer.go:397 +0xaa9
W20190514-110741586[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis: github.com/google/gapid/gapis/replay.Result.Do(0xc005e04170, 0xc0003ab560, 0x0, 0x0)
W20190514-110741587[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis:     gapis/replay/replay.go:87 +0x46
W20190514-110741587[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis: github.com/google/gapid/gapis/api/gles.postFBData.func3.1(0x74b5a20, 0xc005c84240, 0x0, 0x0)
W20190514-110741587[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis:     gapis/api/gles/read_framebuffer.go:336 +0x1c4
W20190514-110741588[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis: github.com/google/gapid/gapis/replay/builder.(*Builder).Build.func1.1()
W20190514-110741588[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis:     gapis/replay/builder/builder.go:684 +0x576
W20190514-110741588[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis: github.com/google/gapid/core/app/crash.Go.func1(0xc0004c2d80)
W20190514-110741588[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis:     core/app/crash/crash.go:65 +0x45
W20190514-110741589[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis: created by github.com/google/gapid/core/app/crash.Go
W20190514-110741589[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$0] gapis:     core/app/crash/crash.go:63 +0x3f
W20190514-110741594[server.ChildProcess-gapis][server.ChildProcess.onExit] The gapis process exited with a non-zero exit value: 2
I20190514-110741595[server.ChildProcess-gapis][server.ChildProcess.shutdown] Shutting down gapis
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError] Failed to load image
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError] java.util.concurrent.ExecutionException: io.grpc.StatusRuntimeException: UNAVAILABLE: End of stream or IOException
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:552)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:513)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at com.google.common.util.concurrent.FluentFuture$TrustedFuture.get(FluentFuture.java:82)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly(Uninterruptibles.java:199)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at com.google.gapid.rpc.Rpc$Result.get(Rpc.java:126)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at com.google.gapid.widgets.LoadableImage$1.onRpcThread(LoadableImage.java:89)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at com.google.gapid.widgets.LoadableImage$1.onRpcThread(LoadableImage.java:84)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at com.google.gapid.rpc.UiCallback.onFinish(UiCallback.java:45)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at com.google.gapid.rpc.Rpc$1.run(Rpc.java:78)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1138)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:958)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:748)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at com.google.common.util.concurrent.AbstractTransformFuture.run(AbstractTransformFuture.java:100)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at com.google.common.util.concurrent.MoreExecutors$5$1.run(MoreExecutors.java:982)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:295)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
W20190514-110741596[pool-1-thread-6][util.Logging.throttleLogRpcError]  at java.lang.Thread.run(Thread.java:748)
hevrard commented 5 years ago

https://github.com/google/gapid/blob/5bcf385069bfff46257d24120a0d0ba444fae5ee/core/stream/convert.go#L58

Here the srcStride is zero on my example.

While trying to debug, I cannot find where the Format type is defined, even when looking at generated files. Any idea?