SmartBugs 是一个执行框架,旨在简化分析工具对智能合约数据集的执行。
(1)一个基于 Docker 镜像轻松添加新分析工具的插件系统;
(2)工具的并行执行以加快执行时间;
(3)一种输出机制,可标准化工具输出结果的方式,并简化跨工具的输出过程。
(4)根据被分析合约的要求,自动检测和下载正确版本的 Solidity 编译器。
PS:smartbugs需要python3.8以上的版本,因为他其中用了海象运算符:=
在3.8以下的版本会针对:=
进行报错。
2022.4.4 第一次安装smartbugs,当smartbugs通过大量进行多线程池对智能合约数据集进行分析时,会出现以下问题,从而导致程序意外终止,合约分析失败
multiprocessing.pool.RemoteTraceback: # 主要是这个问题
"""
Traceback (most recent call last):
File "/usr/local/python3/lib/python3.8/multiprocessing/pool.py", line 125, in worker
result = (True, func(*args, **kwds))
File "/usr/local/python3/lib/python3.8/multiprocessing/pool.py", line 48, in mapstar
return list(map(*args))
File "smartBugs.py", line 45, in analyse
raise e
File "smartBugs.py", line 31, in analyse
analyse_files(tool, file, logs, output_folder, sarif_outputs, output_version, import_path)
File "/blockchain/smartbug/smartbugs/src/docker_api.py", line 233, in analyse_files
if solc_compiler is not None:
UnboundLocalError: local variable 'solc_compiler' referenced before assignment
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "smartBugs.py", line 176, in <module>
exec_cmd(args)
File "smartBugs.py", line 147, in exec_cmd
pool.map(analyse, tasks)
File "/usr/local/python3/lib/python3.8/multiprocessing/pool.py", line 364, in map
return self._map_async(func, iterable, mapstar, chunksize).get()
File "/usr/local/python3/lib/python3.8/multiprocessing/pool.py", line 768, in get
raise self._value
UnboundLocalError: local variable 'solc_compiler' referenced before assignment
2022.6.21 smartBugs的开发人员修复了这个bug,但是在重新安装时,我是用压缩包进行解压安装smartbugs,并非通过git clone
,程序可以运行,但是无结果,在result.log
中显示如下的问题standard_init_linux.go:178: exec user process caused "no such file or directory"
通过多方面查解,大部分博客给出的解释如下:
golang docker build 制作完进项后运行报错
出现该问题的原因是编译的环境和运行的环境不同,可能有动态库的依赖
1.默认go使用静态链接,在docker的golang环境中默认是使用动态编译。
2.如果想使用docker编译+alpine部署,可以通过禁用cgoCGO_ENABLED=0来解决。
3.如果要使用cgo可以通过go build --ldflags "-extldflags -static" 来让gcc使用静态编译。
总的来说,可能就是动态库依赖问题,但是不是不知道怎么改,我这边给出的解释:
(1)我是下载到本地windows后压缩上传到linux上,由于windows和linux之间的不一致性导致
(2)当我们用压缩包解压缩后,可能由于没用git clone 所以少掉了一些某些动态配置问题,导致了这个问题
给出解决方法,使用git clone https://github.com/smartbugs/smartbugs.git
进行下载安装,但在git clone过程中会出现如下错误:
首先说一下:这个方法时没用的,如下:
改成:git clone git://github.com/xxx.git
造成如下问题原因:
远程便捷HTTP传输请求数据时最大的缓存字节数,默认时1M字节,默认能满足大多数请求。而当git clone的是大文件,就需要调大git缓存值
解决方案:
sudo git config --global http.postBuffer 5242880000
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)