- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图让 ASAN 使用一个程序,但我所做的任何事情都会导致 ASAN:DEADLYSIGNAL
,所以我尝试缩小范围并使用只有几个编译器选项的小型测试程序,只是为了看看它是否可以工作:
$ cat > test.c <<EOF
int main(void) { return 0; }
EOF
$ gcc -g -O0 -fno-omit-frame-pointer -fsanitize=address test.c && ./a.out
ASAN:DEADLYSIGNAL
=================================================================
==5711==ERROR: AddressSanitizer: SEGV on unknown address 0xb7f11e70 (pc 0xb7f11e84 bp 0xb7ab6320 sp 0xbf92368c T16777215)
==5711==The signal is caused by a WRITE memory access.
#0 0xb7f11e83 in _dl_get_tls_static_info (/lib/ld-linux.so.2+0x11e83)
#1 0xb7a24ff9 (/usr/lib/i386-linux-gnu/libasan.so.4+0x101ff9)
#2 0xb7a10f15 (/usr/lib/i386-linux-gnu/libasan.so.4+0xedf15)
#3 0xb7f0f91a (/lib/ld-linux.so.2+0xf91a)
#4 0xb7f00cb9 (/lib/ld-linux.so.2+0xcb9)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (/lib/ld-linux.so.2+0x11e83) in _dl_get_tls_static_info
==5711==ABORTING
-static-libasan
堆栈跟踪只是更具描述性:
$ gcc -g -O0 -fno-omit-frame-pointer -fsanitize=address -static-libasan test.c && ./a.out
ASAN:DEADLYSIGNAL
=================================================================
==5719==ERROR: AddressSanitizer: SEGV on unknown address 0xb7fc6e70 (pc 0xb7fc6e84 bp 0x005f91a0 sp 0xbfe77c2c T16777215)
==5719==The signal is caused by a WRITE memory access.
#0 0xb7fc6e83 in _dl_get_tls_static_info (/lib/ld-linux.so.2+0x11e83)
#1 0x560a49 in __sanitizer::InitTlsSize() (/home/gkirilov/test/a.out+0xe9a49)
#2 0x552e05 in __asan::AsanInitInternal() (/home/gkirilov/test/a.out+0xdbe05)
#3 0xb7fc491a (/lib/ld-linux.so.2+0xf91a)
#4 0xb7fb5cb9 (/lib/ld-linux.so.2+0xcb9)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (/lib/ld-linux.so.2+0x11e83) in _dl_get_tls_static_info
==5719==ABORTING
$ uname -a
Linux drinkpad 4.14.0-3-686-pae #1 SMP Debian 4.14.17-1 (2018-02-14) i686 GNU/Linux
$ gcc --version
gcc (Debian 7.3.0-11) 7.3.0
$ /lib/i386-linux-gnu/libc-2.27.so
Compiled by GNU CC version 7.3.0.
libc ABIs: UNIQUE IFUNC
clang-6
和
gcc-8
(它带来了 ASAN v5),再次使用静态和共享 libasan,我得到了相同的消息。
最佳答案
您正面临着 known Asan bug (这里是 Glibc thread
和 GCC bug )。 TLDR 是它在 Glibc 2.25+ 上失败,因为 Glibc 更改了 Asan 所依赖的一些内部接口(interface)。遗憾的是,这个错误还没有得到足够的重视。
关于address-sanitizer - AddressSanitizer : SEGV in _dl_get_tls_static_info,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49352485/
所以我正在使用 AddressSanitizer。但是在描述问题时它使用了一些密集的术语。 Shadow bytes around the buggy address: 0x0c067fff7fb
想要抑制 AddressSanitizer 检测到的以下错误。 ==114064==ERROR: AddressSanitizer: stack-use-after-scope on address
我试图抑制 clang/gcc 中地址清理程序发出的警告 我的源文件如下所示: int foo(){ double bar[] = {7,8}; return bar[3]; } int ma
我有一个管理容器的类。我的 insert-a-value 函数返回一个对象,其析构函数删除了插入的值。这个想法是我可以在容器中注册一个值,保存结果 Registration对象,然后让该对象超出范围以
我这样编译代码来启用 Asan: g++ -O0 -g -fsanitize=address -fno-omit-frame-pointer 但它永远不会生成核心转储,以便我稍后可以检查错误的详细信息
似乎 AddressSanitizer 检测到 heap-buffer-overflow 但输出不那么清晰,例如 here . 如何获取发生溢出的行? 我该如何解释这个结果? [1m[31m==274
我的项目广泛使用 SDL2-2.0.8 来显示来自各种科学成像相机的数据帧。我的实际项目使用的是 wxWidgets 3.1.1 和 SDL_CreateWindowFrom(xid),而不是 SDL
我正在开发一个 C++ cmake 项目。除了我自己的源代码外,我的项目还使用了很多第三方库。因此,我正在使用/usr/local/lib 中存在的共享库(带有 .so 扩展名),对于某些代码,它们存
我最近开始使用 XCode AddressSanitizer,我认为它是在 XCode 7 中引入的(参见例如 Apple WWDC presentation ),以帮助解决难以发现的奇怪错误。 sa
以下代码计算两个相邻元素之间的最大气体。输入 vector 未排序。 class Solution { public: int maximumGap(vector& nums) { int m
我试图让 ASAN 使用一个程序,但我所做的任何事情都会导致 ASAN:DEADLYSIGNAL ,所以我尝试缩小范围并使用只有几个编译器选项的小型测试程序,只是为了看看它是否可以工作: $ cat
我应该使用哪些 Asan 标志来检测更多错误?目前,我使用 ASAN_OPTIONS=detect_stack_use_after_return=1 . 最佳答案 来自 Asan FAQ : Q: C
为了能够对整个 Linux 发行版进行调试和模糊测试,我想将 ASAN(AddressSanitizer,https://en.wikipedia.org/wiki/AddressSanitizer)
我正在查看我的一个守护进程的问题,它非常耗费内存。看起来某些部分永远不会释放内存,即使当我让那个守护进程干净地退出时,也没有泄漏。 我想看看在守护进程运行时添加和保留了哪些缓冲区。由于我已经使用 -f
AddressSanitizer 默认情况下会将所有错误抛给 shell 本身,因此我尝试使用以下命令运行我的 ASAN 构建; >MCTester_ASAN>asan.log ==15619==ER
我在所有项目中都使用 AddressSanitizer 来检测内存泄漏、堆损坏等。但是,在运行时通过 dlopen 加载动态库时,AddressSanitizer 的输出有很多不足之处。我写了一个简单
AddressSanitizer 和 MemorySanitizer 是非常有用的工具,但它们需要对整个程序进行适当的检测。 (至少,对于 AddressSanitizer 的 Clang 版本;请参
我有几个版本的项目结帐和编译。如果我发现错误,我会比较版本以缩小问题范围。有时我会启用像 AddressSanitizer 这样的 sanitizer 。如果我重新使用一个可执行文件,我不记得它是否是
我有一个自定义 assert() - 类似宏调用 abort()失败。使用 AddressSanitizer 时,我更喜欢在断言失败时打印通常的漂亮堆栈跟踪。如何做到这一点? 是否可以在 abort(
或者我必须使用单独的版本吗? -fsanitize 标志仅允许地址或线程,但是否允许多个? 问候 最佳答案 不,不可能将 AddressSanitizer 和 ThreadSanitizer 组合到一
我是一名优秀的程序员,十分优秀!