Open VeraBE opened 5 years ago
Not able to reproduce so far. I'm using
solc, the solidity compiler commandline interface
Version: 0.4.24+commit.e67f0147.Linux.g++
with something like this...
import pyevmasm
from manticore.ethereum import ManticoreEVM
m = ManticoreEVM()
user=m.create_account()
contract = m.solidity_create_contract(source_code, owner=user)
for st in m.all_states:
print ("contract address:", hex(int(contract)))
bcode = st.solve_one(st.platform.get_code(int(contract)))
for i in pyevmasm.disassemble_all(bcode):
print (hex(i.pc), i)
I'm using 0.4.21 for this.
Maybe is a memory related issue? Maybe if you add more assignments it crashes in your machine?
verabe@ThinkPadT470 ~ $ free -m
total used free shared buff/cache available
Mem: 15792 5035 1812 636 8944 9662
Swap: 7628 877 6751
verabe@ThinkPadT470 ~ $ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 62628
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 62628
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Okay, 17810 aVar = aVar + 1;
did it for me.
It looks like the a worker eats all memory, dies, and fails to report it to the main manticore so it diverges or gets deadlocked. (guessing)
I have a large contract I am testing with echidna (echidna can now support virtually unlimited contract size after https://github.com/crytic/echidna/issues/531), and it would be great if this also worked in manticore. It seems like my test process just never exits
OS / Environment
Distributor ID: LinuxMint Description: Linux Mint 18.3 Sylvia Release: 18.3 Codename: sylvia
Manticore version
Version: 0.3.0
Python version
Python 3.6.5 :: Anaconda, Inc.
Summary of the problem
Contract creation fails without a message, it just gets stuck in manticore.solidity_create_contract.
Step to reproduce the behavior
Call manticore.solidity_create_contract with:
If I comment the last assignment it does work. I thought it might be a gas issue so I tried to call it with 100000 more gas than the default value but it doesn't work either.