slither icon indicating copy to clipboard operation
slither copied to clipboard

[Bug]: Failed to generate IR

Open dezzeus opened this issue 1 year ago • 1 comments

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:

'forge clean' running (wd: /app)
'forge' returned non-zero exit code 1
Error: 
stderr: [31m"/app/out": No such file or directory (os error 2)[0m
'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

dezzeus avatar Aug 21 '23 13:08 dezzeus

Similar assertion failure on https://github.com/delegatexyz/delegate-registry

0xalpharush avatar Oct 16 '23 14:10 0xalpharush