You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Aug 13, 2019. It is now read-only.
When completing the revert opcode, there were two test cases, which performed very similar logic that did not error because of REVERT at all and had mentioned being a state trie clearing test in one the filler test files (FailedCreateRevertsDeletion).
The two test files are: FailedCreateRevertsDeletion.json RevertPrefoundEmptyOOG.json
The scenario that both encounter is the following:
transaction calls A -> A creates X -> A hits error (OOG or intentional invalid opcode)
and my assumption is that either the empty contract that is created, X, isn't deleted OR the transaction state isn't reverted to the proper state at the start of the transaction.
edit: almost certain it is state trie clearing since the pre-byzantium tests pass on ETC
So either it is a missed edge case of state trie clearing, or an invalid existing implementation of state rollback within the existing ETC code.
I will look into this later, but documenting for now.
Here is the evm logs for both transactions (from ETH because they are cleaner than manually printing variables on ETC and the values are the same as the only difference is the accounts in post):
FailedCreateRevertsDeletion.json has a slightly different flow:
transaction calls A -> A creates X -> X reverts back to A -> A hits invalid opcode and errors out
Just posting here for resolution: both these test failures are most likely caused by an issue in how ETC handles dirty objects in the state. Geth was able to pass the failing tests after their overhaul of the statedb and journaling.
When completing the revert opcode, there were two test cases, which performed very similar logic that did not error because of REVERT at all and had mentioned being a state trie clearing test in one the filler test files (
FailedCreateRevertsDeletion
).The two test files are:
FailedCreateRevertsDeletion.json
RevertPrefoundEmptyOOG.json
The scenario that both encounter is the following:
transaction calls A -> A creates X -> A hits error (OOG or intentional invalid opcode)
and my assumption is that either the empty contract that is created, X, isn't deleted OR the transaction state isn't reverted to the proper state at the start of the transaction.
edit: almost certain it is state trie clearing since the pre-byzantium tests pass on ETC
So either it is a missed edge case of state trie clearing, or an invalid existing implementation of state rollback within the existing ETC code.
I will look into this later, but documenting for now.
Here is the evm logs for both transactions (from ETH because they are cleaner than manually printing variables on ETC and the values are the same as the only difference is the accounts in post):
FailedCreateRevertsDeletion.json
has a slightly different flow:transaction calls A -> A creates X -> X reverts back to A -> A hits invalid opcode and errors out
The text was updated successfully, but these errors were encountered: