argotorg / argotorg/solidity

[Assembler] Yul code compiled for EVM <= byzantium returns invalid instruction status code on EVMC call

Open
#12,590 6 comments 0 reactions 0 assignees View on GitHub
bug :bug: low impact medium effort should compile without error should have
Dominant language
C++
Stars
25.7k
Forks
6.2k
Avg merge
2d 19h
Merged PRs (30d)
29

Description

```
{
function f() {
sstore(sload(caller()), exp(0xffffffffff,0xffff))
}
f()
f()
f()
}
```

fails https://github.com/ethereum/solidity/blob/597426bd1c93e1d75940d5e9dacdb55123228a01/test/tools/ossfuzz/StackReuseCodegenFuzzer.cpp#L99-L102

To reproduce, one would have to assemble the Yul code targeted at tangerine whistle, deploy and issue a call and print status code of the call.

Contributor guide

Open the contributing guide

Research direction

Start with test/tools/ossfuzz/StackReuseCodegenFuzzer.cpp at lines 99-102 and reproduce the supplied Yul program assembled for Tangerine Whistle. Deploy it, issue an EVMC call, and print the status code; the issue is done when the invalid-instruction result is explained and the reproduced call behaves correctly.

Written by the indexing model from the issue text.

Assessment

Tech stack
solidity
Domain
blockchain, compilers
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.