问题标签 [address-sanitizer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xcode7 - Xcode 7 指示 NSBitmapImageRep 中的堆缓冲区溢出 - bitmapData
刚刚发现通过 Xcode 7 中新的 Address Sanitizer 功能运行我的应用程序的问题,我无法完全理解:
NSImage
我正在尝试从这样的初始化一个中型(588x375)纹理
一旦执行到代码示例的最后一行,我就会AsanDie
抱怨带有此堆栈跟踪的堆缓冲区溢出(运行 10.11.1 beta):
使用此分配轨迹跟踪:
所以基本上深入AppKit的内部。
任何想法可能是什么问题..?
c++ - LeakSanitizer: get run time leak reports?
I have inherited some legacy code and it seems to have a memory leak somewhere. My first instinct was to just compile with
and let the Address Sanitizer's family of tools find the leak for me. I was sorely disappointed, however. I was hoping for some sort of run time error message (similar to the address sanitizer's error when you read or write memory you shouldn't). The leak sanitizer doesn't seem to do any leak checking analysis until after the program has finished successfully. My issue is the code I've inherited has several threads and it wasn't designed to join all of them in preparation for a soft landing.
I've simplified my problem in a simple example:
I compile this with
And then ran with
(I kinda went wild on the "LSAN_OPTIONS" here because I was playing around ... none of the options did what I wanted however which was to exit upon learning of a leak).
As noted in the code, if I join on the thread then exit the program, I get a pretty leak report. Otherwise I get nothing. As you can imaging tracking down 10-100 threads in a legacy code base and making them all go down nicely is unwieldy.
A few years ago I remember playing around with Visual Leak Detector and had good luck with it because it would generate reports with all the potential memory leaks (and I didn't remember having to take everything down nicely). Problem is this tool is only for Windows and my code only works on Linux. Can I make the LeakSanitizer tool do something similar?
xcode - 为插件启用地址清理程序
我正在为我无法控制的第三方构建一个插件。我想使用带有 Xcode 7 的 Address Sanitizer 和这个插件。我可以成功编译我的插件并安装它。问题是我无法证明它有效。我包含以下代码以确保消毒剂检测到问题:
当第三方应用程序加载我的插件时,预期的崩溃永远不会发生,并且数字 5 会被记录。
我已经使用DYLD_PRINT_LIBRARIES_POST_LAUNCH
环境变量来证明地址清理程序运行时库已加载,果然,它是:
当主可执行文件不使用它时,有什么方法可以让这个诊断工具在插件上工作?
cmake - 如何使用 cmake 测试预期会因异常而失败的进程?(例如,由于 clang 的地址清理程序导致的失败)
我有一些测试可以测试 clang 的地址清理程序是否捕获特定错误。(我想确保我对它可以捕获的错误类型的理解是正确的,并且未来的版本会继续捕获我期望它们捕获的错误类型。)这意味着我有几个测试失败了OTHER_FAULT
,这似乎是 clang 的运行时报告错误的固定方式。
我已经为这些测试设置了WILL_FAIL
标志TRUE
,但这似乎只是检查成功、无异常失败的返回值。如果进程因异常而终止,cmake 仍将其归类为失败。
我还尝试使用PASS_REGULAR_EXPRESSION
来观察发生此错误时打印出的区别消息,但同样,如果测试以异常终止,cmake 似乎将测试归类为失败。
我能做些什么来解决这个问题吗?
(特定于clang的答案也是一种选择!-但我怀疑这将是我最后一次需要测试这样的东西,所以如果可能的话,我更愿意知道如何使用cmake进行测试)
macos - 在 OS X ptrace 下运行时,使用 clang 地址清理程序构建的二进制文件使用 SIGTRAP 停止
我正在尝试在 ptrace 的控制下运行使用 clang 的地址清理程序构建的二进制文件,并且我遇到了虚假 SIGTRAP 的问题。
我的程序以标准方式使用 ptrace: child does ptrace(PT_TRACE_ME,...)
then exec
; parent 在 child 中等待SIGTRAP
,表明调用exec
已完成;父母确实ptrace(PT_CONTINUE,...)
让孩子跑步。
这一切都适用于普通的二进制文件。另一方面,当运行使用地址清理程序构建的二进制文件时,在执行PT_CONTINUE
恢复进程之后,子进程会立即收到意外的 SIGTRAP。
这可以使用 gdb 来演示,它以类似的方式与 ptrace 交互。
构建一个简单的测试程序:
在 gdb 中运行它:
(忽略有关符号的消息。)
请注意,该进程并未以代码 062 退出,而是以 SIGTRAP 停止:
要运行该过程,请手动继续。
这对于交互式使用来说非常好,但是对于自动化测试来说有点烦人,因为您需要对地址清理器构建进行特殊处理。如果可能的话,我宁愿在所有构建类型中保持我的测试过程相同。
有人知道这里发生了什么吗?
我正在使用 clang-700.1.76(来自 Xcode)。(还有 gdb 7.9.1(来自 MacPorts)——但这看起来是一个更普遍的问题,因为我自己的代码也受到了影响。)
我无法在 Linux 中重现这一点(gcc 4.8.4/clang 3.8.0、gdb 7.7.1)。
c++ - 地址消毒剂:使用 throw-catch 和 printf 时出现“未知地址上的 SEGV”
当我抛出一些东西(例如 int 或 char const*)并使用 printf 检查错误时,我会收到地址清理程序错误。
我无法在网上找到任何类似的东西,而且我的代码示例非常基本,以至于我真的不明白它是如何产生错误的。
简化代码示例:
运行代码时的控制台输出:
当禁用 -fsanitize 标志时,Valgrind 给出以下提示:
编译器设置:在 Debian Jessie 上使用 clang 3.5.0-10 并带有以下标志(摘自 Makefile):
有任何想法吗?
c++ - AddressSanitizer / LeakSanitizer 错误与 -lsupc++ 和 -stdlib=libc++ 在写入流的从未调用的虚函数上
以下代码在使用 clang 3.5 在 Debian Jessie 上编译时会引发AddressSanitizer 错误。
它似乎与链接库的组合有关,但我无法在互联网上找到类似的东西。
错误的再现
调用:clang++ -stdlib=libc++ -lc++abi -fsanitize=address,vptr sample.cpp -lsupc++ -o sample
当省略 compile flag时-lc++abi
,会发生LeakSanitizer Runtime Error。
省略任何其他编译标志时,不会发生错误。
是什么导致错误?我的代码有问题还是这是编译标志的无效组合,如果是这样,是什么导致了冲突?
swift - 如何创建缓冲区溢出来测试 Address Sanitizer?
问题
我正在尝试创建缓冲区溢出以了解有关 Address Sanitizer 的更多信息。我编写了以下代码,我认为它会造成缓冲区溢出,但我一定是误会了,因为它没有抛出预期的"Heap buffer overflow detected"
.
试图
通过单击我的应用程序 > 编辑方案...,然后单击“启用地址清理器”,我在 Xcode 中启用了地址清理器。然后我在运行之前重建了我的应用程序。
问题
如何在 Swift 2 中创建缓冲区溢出?
ios - 解决 iOS 设备中的清理运行时错误
在 xCode7 构建设置点击中,我添加如下标志:
它在模拟器上运行良好,但是当我在 iOS 设备上运行该应用程序时,它崩溃了。错误信息是:
dyld:库未加载:@rpath/libclang_rt.asan_ios_dynamic.dylib 引用自:/var/mobile/Containers/Bundle/Application/6DFB6F58-A283-4F82-A4B5-903E12B7D0CA/EduLayout.app/EduLayout 原因:找不到图像。< /p>
那么如何解决呢?</p>