Closed msujaws closed 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.
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.
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.
Fixed by PR #47
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