NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
re: port-i386/56280: Many asan tests are failing on i386
The following reply was made to PR port-i386/56280; it has been noted by GNATS.
From: matthew green <mrg%eterna.com.au@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: port-i386-maintainer%netbsd.org@localhost, gnats-admin%netbsd.org@localhost,
netbsd-bugs%netbsd.org@localhost
Subject: re: port-i386/56280: Many asan tests are failing on i386
Date: Mon, 28 Jun 2021 18:07:26 +1000
this is odd. the test tries to write beyond the length
of an array, but it gets a segv while trying to load
stuff from the shadow i guess:
Dump of assembler code for function foo:
0x08048a08 <+0>: push %ebp
0x08048a09 <+1>: mov %esp,%ebp
0x08048a0b <+3>: push %ebx
0x08048a0c <+4>: sub $0x4,%esp
0x08048a0f <+7>: mov 0x8(%ebp),%eax
0x08048a12 <+10>: shl $0x2,%eax
0x08048a15 <+13>: add $0x8049180,%eax
0x08048a1a <+18>: mov %eax,%edx
0x08048a1c <+20>: shr $0x3,%edx
0x08048a1f <+23>: add $0x20000000,%edx
=> 0x08048a25 <+29>: movzbl (%edx),%edx
so the segv occurs before asan is able to detect the
the write and complain normally.
this occurs on amd64 with cc -m32 too. the minimal
version of the test is:
#include <stdio.h>
int arr[5] = {-1};
void foo(int index) { arr[index] = 0; }
int main(int argc, char **argv) {foo(argc + 5); printf("CHECK\n"); return 0;}
and compile with -fsanitize=address on i386, or with
-m32 on amd64.
.mrg.
Home |
Main Index |
Thread Index |
Old Index