trailofbits / manticore

Symbolic execution tool
https://blog.trailofbits.com/2017/04/27/manticore-symbolic-execution-for-humans/
GNU Affero General Public License v3.0
3.69k stars 472 forks source link

Manticore fails basic command on multiple python versions #2518

Open Jovonni opened 2 years ago

Jovonni commented 2 years ago

Summary of the problem

The following basic command has not been running on Mac. I changed the python version several times, from 3.9, to 3.7, to 3.6.

Manticore version

Version: 0.3.6

Python version

Tried on multiple versions with pyenv versions

3.6.0
3.6.15
* 3.6.5 
3.7.6

OS / Environment

MacOS 10.15.7

Dependencies

crytic-compile==0.2.2
cytoolz==0.11.2
dataclasses==0.8
eth-hash==0.3.2
eth-typing==3.0.0
eth-utils==2.0.0
future==0.18.2
importlib-metadata==4.8.3
intervaltree==3.1.0
manticore==0.3.6
ply==3.11
prettytable==2.5.0
protobuf==3.19.1
pyevmasm==0.2.3
pysha3==1.0.2
PyYAML==6.0
rlp==3.0.0
sortedcontainers==2.4.0
toolz==0.11.2
typing-extensions==4.0.1
wasm==1.2
wcwidth==0.2.5
z3-solver==4.8.14.0
zipp==3.6.0

Step to reproduce the behavior

python -m manticore <contract>.sol --contract <contract_name> --verbose-trace

Expected behavior

Maticore should successfully run the same way its running in the docker container.

Actual behavior

2022-01-08 14:25:25,514: [6436] m.c.manticore:WARNING: Manticore is only supported on Linux. Proceed at your own risk!
2022-01-08 14:25:25,813: [6436] m.main:INFO: Registered plugins: IntrospectionAPIPlugin, <class 'manticore.ethereum.plugins.SkipRevertBasicBlocks'>, <class 'manticore.ethereum.plugins.VerboseTrace'>, <class 'manticore.ethereum.plugins.FilterFunctions'>
2022-01-08 14:25:25,814: [6436] m.main:INFO: Beginning analysis
2022-01-08 14:25:25,833: [6436] m.e.manticore:INFO: Starting symbolic create contract
Process Process-1:
Traceback (most recent call last):
  File "/Users/<user>/.pyenv/versions/3.6.5/lib/python3.6/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/Users/<user>/.pyenv/versions/3.6.5/lib/python3.6/multiprocessing/process.py", line 93, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/<user>/.pyenv/versions/3.6.5/lib/python3.6/site-packages/manticore/ethereum/manticore.py", line 1756, in worker_finalize
    finalizer(q.get_nowait())
  File "/Users/<user>/.pyenv/versions/3.6.5/lib/python3.6/site-packages/manticore/ethereum/manticore.py", line 1747, in finalizer
    if only_alive_states and last_tx.result in {"REVERT", "THROW", "TXERROR"}:
AttributeError: 'NoneType' object has no attribute 'result'
2022-01-08 14:25:26,149: [6436] m.c.manticore:INFO: Results in /Users/<user>/Documents/projects/folder/contracts/mcore_hq0p1q4x
2022-01-08 14:25:26,150: [6436] m.c.manticore:WARNING: Manticore failed to run

Any relevant logs

N/a

This same command runs successfully in the docker container. Could it be that I'm using mac?

I tried it on multiple python versions, as I've seen discussed in several discussions/forums online.

I also saw this issue, and tried these solutions, but to no avail. I was seeing this same error as well on another version, but changing to python 3.6 didn't work.

https://github.com/trailofbits/manticore/issues/1713#issue-620841810

enzoevers commented 2 years ago

I also have the same error message (AttributeError: 'NoneType' object has no attribute 'result') using Python 3.7 and 3.8 in a docker (ubuntu:18.04) environment and using Manticore version 0.3.6.

I tried both building Manticore from the git repository and by using pip install.