foundry-rs / foundry-rs/forge-std

bug(StdStorage): finds() returns different results in test vs coverage

Open
#477 1 comment 0 reactions 0 assignees View on GitHub
bug
Dominant language
Solidity
Stars
1.1k
Forks
520
Avg merge
3d 13h
Merged PRs (30d)
9

Description

https://github.com/foundry-rs/forge-std/blob/37a37ab73364d6644bfe11edf88a07880f99bd56/src/StdStorage.sol#L50C27-L50C32
I ran into a problem lately regarding to `stdStorage.finds`, where I used a TransparentUpgradeableProxy contract in a project, and then run `finds` on the implementation contract which is the standard procedure, and I found the slot I wanted in my unit test, but what puzzled me was that the `forge coverage` failed because the slot couldn't be found. Then I dug deeper into the source code of `StdStorage`, and I found that during test phase, the lengths of the reads `(bytes32[] memory reads,) = vm.accesses(address(who));` was 1 while the length was 4 during the coverage phase. and all 4 elements in `reads` array during coverage phase are exactly the same. So I'm wondering if the `reads` array should be deduped and if this is a potential bug?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.