-
Notifications
You must be signed in to change notification settings - Fork 756
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Contract creates a child contract. Child contract is erroneously deleted by the end of the transaction #225
Comments
Clue: It appears that at the end of the transaction for |
Confirming, this bug can be isolated to creating a As noted above, the bug is occurring somewhere near the end of the
^ This returns the correct code size.
^ doesExist returns empty extcodesize here. I am noticing some weird remix behavior in the instruction set after the the ui breaks at this point and no longer displays the instructions nor highlights the execution in the child contract. The stack itself looks fine and is equivalent to when the p = c.get() call is separated into its own function. But in the later case, the remix functionality works fine. More investigation to come! |
The issue we have here is that contracts created during init code of a another contract are not saved. The fact that this didn't cause any test failures highlights an edge case that is not covered by the state test suite. |
The bug is caused by remix calling That resulted in Normally |
wow, nice catch! btw, this bug might happen in |
Update keccak to the latest version 🚀
This is a bug discovered by @yann300 .
Steps to reproduce:
test
test.create
(note that p gets the correct value fromchild.get
)test.call
. An exception is thrown.EXTCODESIZE
is not getting the correct size of contract child (set a breakpoint here https://github.com/ethereumjs/ethereumjs-vm/blob/master/lib/opFns.js#L279)The text was updated successfully, but these errors were encountered: