Wednesday, May 15, 2019

Re: Deobfuscated stack trace message and line-specific stack traces

Using GWT 2.8.2.  I started seeing errors being picked up by the GWT.setUncaughtExceptionHandler.  So, I implemented the StackTraceDeobfuscator by adding the following to my .gwt.xml:

<set-property name="compiler.stackMode" value="emulated" />
<set-configuration-property name="compiler.emulatedStack.recordLineNumbers" value="true" />
<set-configuration-property name="compiler.emulatedStack.recordFileNames" value="true"/>

Passing the exception back to the server RemoteServiceServlet, and doing the following:

String path = getServletConfig().getServletContext().getRealPath("/WEB-INF/deploy/<module>/symbolMaps/");
StackTraceDeobfuscator deobfuscator = StackTraceDeobfuscator.fromFileSystem(path);
String strongName = getThreadLocalRequest().getHeader(RpcRequestBuilder.STRONG_NAME_HEADER);

// Deobfuscate the stack trace
deobfuscator
.deobfuscateStackTrace(exception, strongName);

// Convert the stack trace to a string
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
exception
.printStackTrace(pw);
stackTrace
= sw.toString();

Now, when I look at what is saved in stackTrace, it is things like this:

java.lang.ClassCastException
 at sun
.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun
.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 at sun
.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 at java
.lang.reflect.Constructor.newInstance(Constructor.java:423)
 at com
.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.instantiate(ServerSerializationStreamReader.java:1110)
 at com
.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize(ServerSerializationStreamReader.java:682)
 at com
.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.readObject(ServerSerializationStreamReader.java:592)
 at com
.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader$ValueReader$8.readValue(ServerSerializationStreamReader.java:149)
 at com
.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeValue(ServerSerializationStreamReader.java:434)
 at com
.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:312)
 at com
.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:296)
 at com
.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373)
 at com
.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
 at javax
.servlet.http.HttpServlet.service(HttpServlet.java:707)
 at javax
.servlet.http.HttpServlet.service(HttpServlet.java:790)
 at org
.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:848)
 at org
.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1772)
 at team
.drift.server.ServletFilter.doFilter(ServletFilter.java:37)
 at org
.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
 at com
.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:60)
 at org
.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
 at org
.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582)
 at org
.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
 at org
.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
 at org
.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
 at org
.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
 at org
.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
 at com
.google.apphosting.runtime.jetty9.ParseBlobUploadHandler.handle(ParseBlobUploadHandler.java:119)
 at org
.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1182)
 at com
.google.apphosting.runtime.jetty9.AppEngineWebAppContext.doHandle(AppEngineWebAppContext.java:183)
 at org
.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
 at org
.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
 at org
.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
 at org
.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
 at com
.google.apphosting.runtime.jetty9.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:293)
 at org
.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
 at org
.eclipse.jetty.server.Server.handle(Server.java:539)
 at org
.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:333)
 at com
.google.apphosting.runtime.jetty9.RpcConnection.handle(RpcConnection.java:213)
 at com
.google.apphosting.runtime.jetty9.RpcConnector.serviceRequest(RpcConnector.java:81)
 at com
.google.apphosting.runtime.jetty9.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:123)
 at com
.google.apphosting.runtime.JavaRuntime$RequestRunnable.dispatchServletRequest(JavaRuntime.java:692)
 at com
.google.apphosting.runtime.JavaRuntime$RequestRunnable.dispatchRequest(JavaRuntime.java:655)
 at com
.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:625)
 at com
.google.apphosting.runtime.JavaRuntime$NullSandboxRequestRunnable.run(JavaRuntime.java:817)
 at com
.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:269)
 at java
.lang.Thread.run(Thread.java:748)

I also save the user agent, which was:
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36

I was hoping for a more meaningful stack trace.

I also tried an exception that I raised, and I get the same stack trace:

team.drift.common.model.DriftTeamException: Sorry, your browser does not support WebGL.
 at sun
.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun
.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 at sun
.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 at java
.lang.reflect.Constructor.newInstance(Constructor.java:423)
 at com
.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.instantiate(ServerSerializationStreamReader.java:1110)
 at com
.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize(ServerSerializationStreamReader.java:682)
 at com
.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.readObject(ServerSerializationStreamReader.java:592)
 at com
.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader$ValueReader$8.readValue(ServerSerializationStreamReader.java:149)
 at com
.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeValue(ServerSerializationStreamReader.java:434)
 at com
.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:312)
 
...

Am I doing something wrong?

Thanks.

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit/19d6190e-5a9b-417d-b524-7227b840b5a7%40googlegroups.com.

No comments:

Post a Comment