- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 libFuzzer对 API 进行模糊测试。
API 正在反序列化一个位数组(由 libFuzzer 提供)
并将它们转换为 C++ 类实例化。
由于序列化格式,libFuzer 能够构造一个序列化对象,告诉反序列化器保留大量数据(无法满足)。
这是通过调用 std::vector::resize()
来完成的。 vector 抛出一个 std::bad_alloc
,虽然问题被捕获并被安全地缓解,但它会导致模糊器中的极度延迟(如 following documentation 中关于 OOM 问题所述)。
为了降低模糊器运行时使用的内存量,我希望设置 ulimit -v
并调整进程的可用虚拟内存。但是这样做会导致
==27609==ERROR: AddressSanitizer failed to allocate 0xdfff0001000 (15392894357504) bytes at address 2008fff7000 (errno: 12)
==27609==ReserveShadowMemoryRange failed while trying to map 0xdfff0001000 bytes. Perhaps you're using ulimit -v
为什么地址清理器在 ulmit -v 下无法工作?
我希望它可以,然后我可以更有效地进行模糊测试。
其他信息:
我的构建标志是:
copts = [
"-fsanitize=address,fuzzer",
"-fsanitize-trap=undefined,integer",
"-fsanitize-coverage=trace-pc,trace-cmp,trace-pc-guard",
"-g",
"-O0",
"-fno-omit-frame-pointer",
"-fno-sanitize=vptr",
],
linkopts = [
"-fsanitize=address,fuzzer",
"-fsanitize-trap=undefined,integer",
"-fno-sanitize=vptr",
"-fsanitize-link-c++-runtime",
],
我尝试关闭标志,以便我可以设置 ulimit
并运行模糊器:
copts = [
"-fsanitize=fuzzer",
"-g",
"-O0",
"-fno-omit-frame-pointer",
],
linkopts = [
"-fsanitize=fuzzer",
],
但这会立即导致段错误。
最佳答案
Asan 在启动时为影子内存保留 1/8 的进程地址空间以保存用户数据的状态(已分配、已释放等)。这是设计使然,对此我们无能为力。
请注意,您通常不关心虚拟内存,而是关心物理内存(这也会导致 new
在您的情况下失败)。
关于c++ - 为什么 ulimit -v 在 clang 的地址 sanitizer 下不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52970994/
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
我有一个问题,我需要从 java/groovy 程序中找出 linux 进程的硬和软打开文件限制。当我从终端执行 ulimit 时,它会为硬打开文件限制和软打开文件限制提供单独的值。 $ ulimit
这是输出。 core file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling
操作系统是Centos 7 , 我正在使用 Test Kitchen 1.13.2和 centos-7.2默认 Vagrant 框。 我需要 nproc 超过一个用户的特定限制,为此我修改了 /etc
全部 我想将核心文件大小永久设置为无限制。 阅读它,建议是修改/etc/security/limits.conf。 我已经使用以下行这样做了: 软核10000 根硬核 10000 更改后我重新启动并发
我已阅读 here docker 容器从主机继承 ulimit 属性。我的容器似乎没有发生这种情况。特别是,我需要从主机继承 max locked memory 属性。有谁知道如何修复它? ubunt
我试图在 this question 上帮助 OP . 我发现即使堆栈设置为 2000 KB,像下面这样的代码也会随机导致段错误。 int main () { int a[510000];
我正在研究堆栈内存,我正在尝试增加软限制。我发现这样做的命令是: 显示堆栈大小(以 KB 为单位): ulimit -s 我可以使用以下方法改变它: ulimit -s value 操作系统还设置了硬
root用户运行以下 ulimit -a | grep open 并得到结果 open files (-n) 65536 用户运行相同的命令并得到结果 open files (-n) 65000 如何
我想永久设置ulimit -m(最大内存大小)和ulimit -v(虚拟内存)。服务器重新启动后,它们不应更改。我尝试编辑/etc/security/limits.conf,但是服务器重新启动后它们仍
我在虚拟机上运行 Linux 操作系统 (Ubuntu)。当我运行命令时 ulimit -Sv 50 它没有在该 bash session 中设置虚拟内存大小的软限制。我收到的错误是: fatal e
我不知道如何以正确的方式从我的计算机中删除所有限制,所以我做了一个小命令: sudo su ulimit -a 9999999 ulimit -b 9999999 ulimit -c 9999999
试图限制核心转储文件的大小。我想限制在4MB左右,所以我设置为1000( block ,每个 block 4KB)。但它不限制核心转储文件的大小。有任何想法吗? $ ulimit -c 1000 $
我有一个 hadoop 集群,我们假设它的性能非常“糟糕”。节点非常强大.. 24 个内核,60+G RAM ..等。我们想知道是否有一些基本的 linux/hadoop 默认配置阻止 hadoop
通过反复试验,我发现我可以给 ulimit -Hn 而不会出错的最大数字是 1048576。这个数字从何而来?我的 sys.fs.file-max 是 20000500(2000 万)。 最佳答案 实
有人知道在 Linux 中为另一个用户查找“ulimit -a”值的方法吗?我希望用户 A 能够检查用户 B 的 ulimit 值。假设用户 A 和用户 B 是非根用户。 提前致谢 最佳答案 我建议:
在我正在处理的项目中,xdebug 需要大约 1 小时才能生成覆盖率。我已经尝试过 phpdbg,但在我的测试套件中遇到以下错误: stream_select(): You MUST recompil
这是尝试启动 apache2 的日志: * Starting web server apache2
如 normaluser : $ ulimit -n 4096 -bash: ulimit: open files: cannot modify limit: Operation not permit
我正在使用 tomcat 7 和 java 1.7 的 debian 服务器上工作。这是一个接收多个 TCP 连接的应用程序,每个 TCP 连接都是一个由 java 进程打开的文件。 看着 /proc
我是一名优秀的程序员,十分优秀!