Closed exFalso closed 7 years ago
The cause is that we clear the references on the stack in Stack.popMethod, but the number of slots to clear is taken from the current frame, which may not be the only frame in the method.
Fixed in 977edd2
You can try it in 0.7.9-SNAPSHOT
If a function has two subsequent variable scopes with variables of different types then asm cannot infer whether the stack slots refer to references or not, thereby causing quasar instrumentation to omit incrementing either of
idxObj
oridxPrim
in theInstrumentMethod.FrameInfo
constructor. This causes theslots
number in the frame record to be smaller than it should be, causingStack.popMethod
to leak references (if there are more objects in the function than primitives).To reproduce: