crytic / crytic/slither

[Bug]: Failed to generate IR

Open
#2,092 1 comment 1 reaction 0 assignees View on GitHub
bug ir
Dominant language
Python
Stars
6.4k
Forks
1.1k
PR merge metrics
No merged PRs in 30d

Description

### Describe the issue:

I cannot run the tool as it fails to generate the IR.

### Code example to reproduce the issue:

`# within a library:`
`function d1(uint256 a, uint256 q1, uint256 b) public pure returns (int256 d1_) {`
` int256 q0 = FixedPointMathLib.ln(SignedMath.castInt(a));`
` (uint256 sumQty, bool sumPos) = SignedMath.sum(q0, q1);`
` uint256 res = sumQty.wdiv(b);`

` return SignedMath.revabs(res, sumPos);`
`}`

### Version:

0.9.6

### Relevant log output:

```shell
'forge clean' running (wd: /app)
'forge' returned non-zero exit code 1
Error:
stderr: "/app/out": No such file or directory (os error 2)
'forge build --build-info' running (wd: /app)
ERROR:SlitherSolcParsing:
Failed to generate IR for FooLib.d1. Please open an issue https://github.com/crytic/slither/issues.
FooLib.d1 (src/lib/FooLib.d1.sol#137-143):
q0 = FixedPointMathLib.ln(SignedMath.castInt(a))
(sumQty,sumPos) = SignedMath.sum(q0,q1)
res = sumQty.wdiv(b)
SignedMath.revabs(res,sumPos)
Traceback (most recent call last):
File "/usr/lib/python3.10/site-packages/slither/__main__.py", line 814, in main_impl
) = process_all(filename, args, detector_classes, printer_classes)
File "/usr/lib/python3.10/site-packages/slither/__main__.py", line 102, in process_all
) = process_single(compilation, args, detector_classes, printer_classes)
File "/usr/lib/python3.10/site-packages/slither/__main__.py", line 80, in process_single
slither = Slither(target, ast_format=ast, **vars(args))
File "/usr/lib/python3.10/site-packages/slither/slither.py", line 135, in __init__
self._init_parsing_and_analyses(kwargs.get("skip_analyze", False))
File "/usr/lib/python3.10/site-packages/slither/slither.py", line 155, in _init_parsing_and_analyses
raise e
File "/usr/lib/python3.10/site-packages/slither/slither.py", line 151, in _init_parsing_and_analyses
parser.analyze_contracts()
File "/usr/lib/python3.10/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 541, in analyze_contracts
self._convert_to_slithir()
File "/usr/lib/python3.10/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 767, in _convert_to_slithir
raise e
File "/usr/lib/python3.10/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 752, in _convert_to_slithir
func.generate_slithir_and_analyze()
File "/usr/lib/python3.10/site-packages/slither/core/declarations/function.py", line 1760, in generate_slithir_and_analyze
node.slithir_generation()
File "/usr/lib/python3.10/site-packages/slither/core/cfg/node.py", line 708, in slithir_generation
self._find_read_write_call()
File "/usr/lib/python3.10/site-packages/slither/core/cfg/node.py", line 916, in _find_read_write_call
assert isinstance(ir.function, Function)
AssertionError
ERROR:root:Error in .
ERROR:root:Traceback (most recent call last):
File "/usr/lib/python3.10/site-packages/slither/__main__.py", line 814, in main_impl
) = process_all(filename, args, detector_classes, printer_classes)
File "/usr/lib/python3.10/site-packages/slither/__main__.py", line 102, in process_all
) = process_single(compilation, args, detector_classes, printer_classes)
File "/usr/lib/python3.10/site-packages/slither/__main__.py", line 80, in process_single
slither = Slither(target, ast_format=ast, **vars(args))
File "/usr/lib/python3.10/site-packages/slither/slither.py", line 135, in __init__
self._init_parsing_and_analyses(kwargs.get("skip_analyze", False))
File "/usr/lib/python3.10/site-packages/slither/slither.py", line 155, in _init_parsing_and_analyses
raise e
File "/usr/lib/python3.10/site-packages/slither/slither.py", line 151, in _init_parsing_and_analyses
parser.analyze_contracts()
File "/usr/lib/python3.10/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 541, in analyze_contracts
self._convert_to_slithir()
File "/usr/lib/python3.10/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 767, in _convert_to_slithir
raise e
File "/usr/lib/python3.10/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 752, in _convert_to_slithir
func.generate_slithir_and_analyze()
File "/usr/lib/python3.10/site-packages/slither/core/declarations/function.py", line 1760, in generate_slithir_and_analyze
node.slithir_generation()
File "/usr/lib/python3.10/site-packages/slither/core/cfg/node.py", line 708, in slithir_generation
self._find_read_write_call()
File "/usr/lib/python3.10/site-packages/slither/core/cfg/node.py", line 916, in _find_read_write_call
assert isinstance(ir.function, Function)
AssertionError
```

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.