- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在试验 LLVM 项目的 libFuzzer,试图为音频信号处理库生成输入。
为了简单起见,我从一个常量零的 64kb PCM 作为初始语料库开始,使用 -max_len=65536。每次库调用的内存消耗约为 200kB,应按预期释放。
我想知道的是模糊器日志中显示为 rss 的内存消耗:
#1024 pulse cov: 26153 ft: 40811 corp: 783/33Mb exec/s: 7 rss: 541Mb
#2048 pulse cov: 26154 ft: 40811 corp: 783/33Mb exec/s: 8 rss: 573Mb
#4096 pulse cov: 26154 ft: 40811 corp: 783/33Mb exec/s: 8 rss: 574Mb
#4895 NEW cov: 26156 ft: 40815 corp: 784/33Mb exec/s: 8 rss: 576Mb L: 26935 MS: 1 InsertRepeatedBytes-
#8192 pulse cov: 26157 ft: 40815 corp: 784/33Mb exec/s: 8 rss: 578Mb
#11875 NEW cov: 26157 ft: 40816 corp: 785/33Mb exec/s: 8 rss: 579Mb L: 59394 MS: 1 InsertByte-
#12862 NEW cov: 26157 ft: 40817 corp: 786/33Mb exec/s: 8 rss: 579Mb L: 51404 MS: 3 EraseBytes-EraseBytes-CopyPart-
#15357 NEW cov: 26157 ft: 40818 corp: 787/33Mb exec/s: 8 rss: 579Mb L: 64536 MS: 3 CopyPart-ChangeBit-InsertRepeatedBytes-
#16384 pulse cov: 26157 ft: 40818 corp: 787/33Mb exec/s: 8 rss: 579Mb
#23171 NEW cov: 26157 ft: 40820 corp: 788/33Mb exec/s: 8 rss: 579Mb L: 49412 MS: 2 InsertRepeatedBytes-CMP- DE: "\x00\x00\x00\x00\x00\x00\x00\x00"-
#25426 NEW cov: 26158 ft: 40825 corp: 789/33Mb exec/s: 8 rss: 579Mb L: 64443 MS: 2 CMP-CMP- DE: "\x00\x00\x00\x00"-"\xff\xff"-
为什么 rss 指标稳定增长?
请注意,增加似乎收敛(类似于 cov 和 ft 数量),因此每次模糊器目标调用都不会泄漏内存。
是设置问题还是泄漏导致rss内存增加?
如果不是,那么如果在每次模糊器目标调用后内存消耗都没有降低,那么为模糊器提供 -rss_limit_mb 选项的基本原理是什么?
最佳答案
内存增加的一些原因是:
ASan 的“隔离区”:ASan 将释放的内存隔离以检测释放后使用错误。在没有隔离区大小限制的情况下进行模糊测试时,内存增长是无限的。 尝试改变最近,ASan 应该默认限制隔离区大小。quarantine_size_mb
ASan option设置为与 -1 不同的值,后者表示无限制。
libFuzzer 的内部数据结构,但这些结构应该在某个时候停止增长。
由您的代码分配的内存 isn't returned to the OS after being freed . RSS 值通常会反射(reflect)任何测试输入使用的最大值,并且不会在此之后下降。当然,所有释放的内存都可用于后续分配。
另一种解释是您的代码确实存在内存泄漏。 detect_leaks
option 检测到许多泄漏默认情况下处于打开状态。但也有可能像缓存这样的全局数据结构在不断增长,这在模糊测试时无法检测到。
使用 quarantine_size_mb
选项,RSS 最终应该收敛。
关于c - LLVM libFuzzer rss 内存增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41613682/
我正在尝试使用 libfuzzer 模糊为大端 MIPS 架构编写的部分代码。 我在 Debian 小端机器下运行 libfuzzer 并出现段错误。我认为结果并不是100%值得信赖。如何将 libf
使用 libfuzzer 的模糊测试过程会无限期地继续,直到发现错误。 即使在发现错误后,libfuzzer 中是否有标志或选项可以改变并继续模糊测试? 最佳答案 ASAN_OPTIONS=halt_
Libfuzzer 提供了两个 API 来开发自定义修改器。 size_t LLVMFuzzerCustomMutator(uint8_t *Data, size_t Size, size_t Max
我正在试验 LLVM 项目的 libFuzzer,试图为音频信号处理库生成输入。 为了简单起见,我从一个常量零的 64kb PCM 作为初始语料库开始,使用 -max_len=65536。每次库调用的
我有一个 libFuzzer 用法的简单示例。 // Test_fuzzer.cc #include #include extern "C" int LLVMFuzzerTestOneInput(
我可以在 makefile 中使用以下变量成功编译 Nginx CC = clang-6.0 CFLAGS = -pipe -O -Wall -Wextra -Wpointer-arith -Wcon
我正在尝试链接在一起: libFuzzer.a,使用 clang++-5.0 和 -std=c++11 编译 我的模糊驱动程序,使用 clang++-5.0 和 -std=c++11 -stdlib=
http://llvm.org/docs/LibFuzzer.html我现在正在使用 libfuzzer 做一些工作,但是当我使用官方玩具示例时。当我运行这个命令时: clang++ -fsaniti
我是一名优秀的程序员,十分优秀!