mozilla / Snappy-Symbolication-Server

https://wiki.mozilla.org/Snappy_Symbolication_Server
Mozilla Public License 2.0
3 stars 12 forks source link

Error 400 Response when using as local Symbolication server with Gecko Profiler Addon #33

Closed msujaws closed 8 years ago

msujaws commented 8 years ago

I enabled debug logging and saw the following error in the logs:

2016-09-12 11:49:28,757 DEBUG 7960 0f4688d9-6fd5-4c30-a1aa-54eca2d221c2 A stack frame offset is not an integer REMOTE IP=127.0.0.1 2016-09-12 11:49:28,757 ERROR 7960 0f4688d9-6fd5-4c30-a1aa-54eca2d221c2 Unable to validate request body REMOTE IP=127.0.0.1

msujaws commented 8 years ago

Looking at the python code, the "stack frame offset is not an integer" comes from the following line: for stack in stacks: /* elided / for frame in stack: / elided */ if not isinstance(frame[1], int): logger(logLevel.DEBUG, "A stack frame offset is not an integer") return None

But the stacks variable holds the following value: 2016-09-12 11:49:28,755 DEBUG 7960 0f4688d9-6fd5-4c30-a1aa-54eca2d221c2 Request body: {"stacks":[[[-1,1845418192135],[-1,2330144206727],[-1,2567226858509],[-1,2567226859086],[-1,2567226859476],[-1,2567226859883],[-1,2567226860285],[-1,2567226877629],[-1,2567226894638],[-1,2567226895220],[-1,2567226895598],[-1,2567226895796],[-1,2567226895997],[-1,2567226896942],[-1,2669540404995],[-1,2708442126458],[0,5287],[0,6878],[0,7739],[0,153225],[1,925607],[1,925760],[1,925986],[1,926519],[1,1082945],[1,1083335],[1,1083760],[1,1095997],[1,1096109],[1,1098549],[1,1098624], /* truncated */

So it looks like the python code is expecting the second item of the tuple of the first frame in the stacks list to be an integer, but because stacks is defined as a a list of lists of tuples then frame[1] should be an instance of a tuple, not an int.

msujaws commented 8 years ago

I'm guessing we don't need the stacks value to be a list of lists of tuples, but simply a list of tuples. I didn't look deeper though.

msujaws commented 8 years ago

error-dump.txt

dblohm7 commented 8 years ago

The problem is that some values of frame[1] are ints, but others are longs. The validator hits a long and then shits the bed.

bytesized commented 8 years ago

Fixed by PR #47