Solved reference proxy error #289
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The strong mode of the reference proxy encountered an error, that caused the normal and the expression mode to fail at runtime. The reason for this issue was that the key decode multiplication was added randomly before or after the instructions that were used to generate the placeholder parameters. The traceservice correctly identified the "add" instruction as source for the parameter of the method, how ever adding the konstant directly before the add instruction modified the stack and caused a wrong addition to take place.
The issue is fixed, by extending the tracing to resolve all the instructions that take part in constructing the value that parameter. This way the new constant may be randomly placed before or after the entire stack that produces the parameter. This resolves the issue. The x86 was uneffected, because it always creates the call after the instructions that create the parameter and never before.
A unit test was added to verify the correct function of the reference proxy protection.
fixes #229