gpt4 book ai didi

address-sanitizer - AddressSanitizer : SEGV in _dl_get_tls_static_info

转载 作者:行者123 更新时间:2023-12-04 07:50:37 29 4
gpt4 key购买 nike

我试图让 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-6gcc-8 (它带来了 ASAN v5),再次使用静态和共享 libasan,我得到了相同的消息。

我的平台不支持吗?但是,我安装了官方 Debian 存储库中的所有工具。

ASAN的主页说 it has only been tested on 64-bit Ubuntu ,但我认为它已经过时了,因为它上面的表格同时列出了 Linux x86 和 x86_64。

我做错了什么还是我的平台不受支持?

最佳答案

您正面临着 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com