google / gapid

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

Doom capture with GAPID: The gapis server has exited with an error code of: 2 #2739

Open xooiamd opened 5 years ago

xooiamd commented 5 years ago

GAPID Version: 1.5.0:b33134fa99c398ce81dffd642aa11ea53c660518 OS: windows 10 amd64

Tried to capture a trace with Doom game in Desktop with the following setting: image

Here is the error details: panic: Process returned error Cause: exit status 53

goroutine 317 [running]: github.com/google/gapid/gapis/trace/desktop.(DesktopTracer).SetupTrace(0xc0000ef5f0, 0x62f4120, 0xc000140900, 0xc000246b60, 0x0, 0x0, 0x0, 0x0, 0xd) gapis/trace/desktop/trace.go:230 +0x5e2 github.com/google/gapid/gapis/trace.Trace(0x62f4120, 0xc000140900, 0xc00030fa10, 0xc0000e25a0, 0xc0000e2720, 0xc000246b60, 0xc0002088d8, 0x0, 0x0) gapis/trace/trace.go:55 +0x83f github.com/google/gapid/gapis/server.(traceHandler).Initialize.func1(0x62f4120, 0xc000140900, 0xc000246b60, 0xc0002088c0, 0xc0000e2720) gapis/server/server.go:717 +0x73 created by github.com/google/gapid/gapis/server.(*traceHandler).Initialize gapis/server/server.go:716 +0xa0

Thanks!

AWoloszyn commented 5 years ago

This is likely because you are trying to trace a game meant to run underneath steam. The process start-up flow for Steam is not standard. (Executable closes, runs steam, steam then opens the executable etc).

You can double-check this with process explorer. If you just run DOOMx64vk.exe I expect in process explorer it will show up underneath steam.exe

hevrard commented 5 years ago

Re-opening this: GAPID should display a proper warning to explain that it does not support Steam executables, because of the Steam-specific process start-up.

@xooiamd are you able to get a Doom executable which does not trigger a Steam start-up?

xooiamd commented 5 years ago

I am not able to find a Doom executable that does not trigger Steam process.

AWoloszyn commented 5 years ago

I will investigate an environment variable to help work around this issue.

xooiamd commented 5 years ago

Hi, thanks for the fix. I have tried capture Doom and it works! However, when I tried capture StrangeBrigade game, clicking on the game executable directly will have Steam.exe -> StrangeBrigade.exe -> StrangeBrigade_Vulkan.exe, it has failed with

_"Tracing Failed Cause: read tcp 127.0.0.1:57296->127.0.0.1:9286: wsarecv: An existing connection was forcibly closed by the remote host." GAPID Version: 1.7.0:d0001f7651ef7085d7079a184b472c36dec08d7f OS: windows 10 amd64

com.google.gapid.server.Client$InternalServerErrorException: Tracing Failed Cause: read tcp 127.0.0.1:57296->127.0.0.1:9286: wsarecv: An existing connection was forcibly closed by the remote host. at com.google.gapid.server.Client.throwIfError(Client.java:312) at com.google.gapid.server.Client.lambda$streamTrace$52(Client.java:286) at com.google.gapid.server.GapidClientGrpc$StreamHandler.onNext(GapidClientGrpc.java:224) at io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onMessage(ClientCalls.java:421) at io.grpc.ForwardingClientCallListener.onMessage(ForwardingClientCallListener.java:33) at io.grpc.ForwardingClientCallListener.onMessage(ForwardingClientCallListener.java:33) at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1MessagesAvailable.runInContext(ClientCallImpl.java:519) at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37) at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)Caused by: com.google.gapid.server.Client$Stack: For request: RPC->streamTrace() at com.google.gapid.server.Client.streamTrace(Client.java:283) at com.google.gapid.server.Tracer.trace(Tracer.java:41) at com.google.gapid.views.TracerDialog.showTracingDialog(TracerDialog.java:149) at com.google.gapid.LoadingScreen.lambda$createOptions$0(LoadingScreen.java:114) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4145) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1055) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1079) at org.eclipse.swt.widgets.Widget.sendSelectionEvent(Widget.java:1096) at org.eclipse.swt.widgets.Link.WMLBUTTONUP(Link.java:1014) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4805) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4784) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2309) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3559) at org.eclipse.jface.window.Window.runEventLoop(Window.java:821) at org.eclipse.jface.window.Window.open(Window.java:797) at com.google.gapid.Main$UI.show(Main.java:119) at com.google.gapid.Main.main(Main.java:68)

A few suggestions on the GAPID trace dialog:

  1. "Application" field should be the game name executable (DOOMx64vk.exe) instead of "Steam.exe", this is to be consistent with cases for standalone apps/games. some gamers will just click on the game executable shortcut directly without aware of Steam process got triggered. And "Environment Variables" can be “GAPID_LAUNCH_PLATFORM = Steam.exe”

  2. Every child processes from the application must be traced, this is for the game like StrangeBrigade.

Thanks!