crytic / crytic/slither

all_internal_calls return different sequence, is it correct?

Open
#1,486 3 comments 0 reactions 0 assignees View on GitHub
question ux
Dominant language
Python
Stars
6.4k
Forks
1.1k
PR merge metrics
No merged PRs in 30d

Description

### Describe the issue:

Hello. I write new detector and when I want to get all internal calls of function, using all_internal_calls, it return some times different sequence of calls. is it correct work of slither, or its bug? I dont change contract code.

```
function a() external {
b();
}
function b() internal {
c();
}
function c() internal {
...
}
```
a->b->c-b or sometimes a->c->b or something else

### Code example to reproduce the issue:

```
for internal_call_function in function.all_internal_calls():
print(internal_call_function._name)
```

### Version:

0.9.1

### Relevant log output:

_No response_

Contributor guide

Open the contributing guide

Research direction

Start at the Python API entry point shown in the issue, function.all_internal_calls(), and reproduce the repeated calls with the Solidity functions a, b, and c. Compare the returned sequence across runs and determine whether the ordering is specified or unexpectedly variable. Done means the behavior is explained and, if it is a bug, the issue has a reproducible expected sequence.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, solidity
Domain
devtools
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.