-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Ensure that we always call trace_call for builtins #9236
Conversation
It looks like @udoprog signed our Contributor License Agreement. 👍 Many thanks, Parity Technologies CLA Bot |
Issue with GitLab:
|
@udoprog I don't know whether we would want this. The issue is that some precompiled contracts are used quite often (like
You can find more on this at #8486. |
@udoprog Would there be any better ways to solve your use cases? You mentioned that you need to maintain a call stack. Can you explain more how/why you need that? |
@sorpaas Sure. Below is a more detailed explanation of what I do. As I enter a call, I lookup 1) the source map, and 2) the AST for the destination of that call and push it on a stack. If the call finishes, I pop the stack so that the correct stack element is maintained on top. I rely on In order to do the instruction processing, this call stack is shared (through a I've tried using |
I pushed the implementation so you can take a look or make suggestions: I realized I deal with this right now by checking Ultimately a more foolproof API would be nice though. |
…e*call are balanced (#9353) This refactors `prepare_trace_output` to instead directly take the reference of return values, so that it's simpler and we save a stack item. This should also fixes [the issue](#9236 (comment)) @udoprog is facing. Replaces #9236
I'm trying to implement a tracer for a simple debugger based on parity, but noticed that a contract where I'm calling
ecrecover
there is notrace_call
to determine when a call is done which I need to maintain a call stack.