Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: IR generation failing #2020

Closed
anajuliabit opened this issue Jul 3, 2023 · 1 comment
Closed

[Bug]: IR generation failing #2020

anajuliabit opened this issue Jul 3, 2023 · 1 comment
Labels
bug Something isn't working

Comments

@anajuliabit
Copy link

anajuliabit commented Jul 3, 2023

Describe the issue:

IR generation failing.

I've identified the issue lies with the following line of code:
uint256 totalRegions = uint256(type(BosonTypes.PausableRegion).max);
It appears that during the Slither IR generation process, it's being transformed into:
totalRegions = uint256(type()(BosonTypes.PausableRegion).max)

This seems to be a bug that needs addressing.

Code example to reproduce the issue:

Clone https://github.com/bosonprotocol/boson-protocol-contracts
Go to commit bosonprotocol/boson-protocol-contracts@c9ee232
run slither . --checklist

Version:

0.9.5

Relevant log output:

'npx hardhat clean' running (wd: /Users/anajulia/dev/code/boson-protocol-contracts)
'npx hardhat clean --global' running (wd: /Users/anajulia/dev/code/boson-protocol-contracts)
'npx hardhat compile --force' running (wd: /Users/anajulia/dev/code/boson-protocol-contracts)
ERROR:SlitherSolcParsing:
Failed to generate IR for PauseHandlerFacet.getPausedRegions. Please open an issue https://github.com/crytic/slither/issues.
PauseHandlerFacet.getPausedRegions (contracts/protocol/facets/PauseHandlerFacet.sol#72-102):
        status = protocolStatus()
        totalRegions = uint256(type()(BosonTypes.PausableRegion).max)
        regions = new BosonTypes.PausableRegion[](totalRegions)
        status.pauseScenario == ALL_REGIONS_MASK
        i = 0
        i < totalRegions
        regions[i] = BosonTypes.PausableRegion(i)
        i ++
        regions
        count = 0
        i_scope_0 = 0
        i_scope_0 < totalRegions
        (status.pauseScenario & (1 << i_scope_0)) != 0
        regions[count] = BosonTypes.PausableRegion(i_scope_0)
        count ++
        i_scope_0 ++
        mstore(uint256,uint256)(regions,count)
Traceback (most recent call last):
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/__main__.py", line 814, in main_impl
    ) = process_all(filename, args, detector_classes, printer_classes)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/__main__.py", line 102, in process_all
    ) = process_single(compilation, args, detector_classes, printer_classes)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/__main__.py", line 80, in process_single
    slither = Slither(target, ast_format=ast, **vars(args))
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/slither.py", line 135, in __init__
    self._init_parsing_and_analyses(kwargs.get("skip_analyze", False))
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/slither.py", line 155, in _init_parsing_and_analyses
    raise e
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/slither.py", line 151, in _init_parsing_and_analyses
    parser.analyze_contracts()
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 541, in analyze_contracts
    self._convert_to_slithir()
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 767, in _convert_to_slithir
    raise e
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 752, in _convert_to_slithir
    func.generate_slithir_and_analyze()
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/core/declarations/function.py", line 1760, in generate_slithir_and_analyze
    node.slithir_generation()
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/core/cfg/node.py", line 706, in slithir_generation
    self._irs = convert_expression(expression, self)  # type:ignore
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/slithir/convert.py", line 115, in convert_expression
    visitor = ExpressionToSlithIR(expression, node)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/slithir/expression_to_slithir.py", line 162, in __init__
    self._visit_expression(self.expression)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 43, in _visit_expression
    self._visit_assignement_operation(expression)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 99, in _visit_assignement_operation
    self._visit_expression(expression.expression_right)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 82, in _visit_expression
    self._visit_type_conversion(expression)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 155, in _visit_type_conversion
    self._visit_expression(expression.expression)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 93, in _visit_expression
    self._post_visit(expression)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 291, in _post_visit
    self._post_member_access(expression)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/slithir/expression_to_slithir.py", line 465, in _post_member_access
    assert isinstance(type_expression_found, Identifier)
AssertionError
ERROR:root:Error in .
ERROR:root:Traceback (most recent call last):
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/__main__.py", line 814, in main_impl
    ) = process_all(filename, args, detector_classes, printer_classes)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/__main__.py", line 102, in process_all
    ) = process_single(compilation, args, detector_classes, printer_classes)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/__main__.py", line 80, in process_single
    slither = Slither(target, ast_format=ast, **vars(args))
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/slither.py", line 135, in __init__
    self._init_parsing_and_analyses(kwargs.get("skip_analyze", False))
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/slither.py", line 155, in _init_parsing_and_analyses
    raise e
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/slither.py", line 151, in _init_parsing_and_analyses
    parser.analyze_contracts()
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 541, in analyze_contracts
    self._convert_to_slithir()
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 767, in _convert_to_slithir
    raise e
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 752, in _convert_to_slithir
    func.generate_slithir_and_analyze()
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/core/declarations/function.py", line 1760, in generate_slithir_and_analyze
    node.slithir_generation()
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/core/cfg/node.py", line 706, in slithir_generation
    self._irs = convert_expression(expression, self)  # type:ignore
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/slithir/convert.py", line 115, in convert_expression
    visitor = ExpressionToSlithIR(expression, node)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/slithir/expression_to_slithir.py", line 162, in __init__
    self._visit_expression(self.expression)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 43, in _visit_expression
    self._visit_assignement_operation(expression)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 99, in _visit_assignement_operation
    self._visit_expression(expression.expression_right)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 82, in _visit_expression
    self._visit_type_conversion(expression)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 155, in _visit_type_conversion
    self._visit_expression(expression.expression)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 93, in _visit_expression
    self._post_visit(expression)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 291, in _post_visit
    self._post_member_access(expression)
  File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/slithir/expression_to_slithir.py", line 465, in _post_member_access
    assert isinstance(type_expression_found, Identifier)
AssertionError
@anajuliabit anajuliabit added the bug-candidate Bugs reports that are not yet confirmed label Jul 3, 2023
@0xalpharush 0xalpharush added bug Something isn't working and removed bug-candidate Bugs reports that are not yet confirmed labels Jul 6, 2023
@0xalpharush 0xalpharush changed the title [Bug-Candidate]: IR generation failing [Bug]: IR generation failing Jul 6, 2023
@smonicas
Copy link
Collaborator

Same issue as #1602

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants