From: "Peng, ZhihongX" <zhihongx.peng@intel.com>
To: David Marchand <david.marchand@redhat.com>
Cc: Thomas Monjalon <thomas@monjalon.net>,
"Burakov, Anatoly" <anatoly.burakov@intel.com>,
"Ananyev, Konstantin" <konstantin.ananyev@intel.com>,
Stephen Hemminger <stephen@networkplumber.org>,
"Dumitrescu, Cristian" <cristian.dumitrescu@intel.com>,
"Mcnamara, John" <john.mcnamara@intel.com>,
"Richardson, Bruce" <bruce.richardson@intel.com>,
dev <dev@dpdk.org>, "Lin, Xueqin" <xueqin.lin@intel.com>
Subject: Re: [dpdk-dev] [PATCH v13 2/4] DPDK code adapts to ASan
Date: Fri, 29 Oct 2021 12:54:43 +0000 [thread overview]
Message-ID: <DM8PR11MB559186758D1FB6F056E116E2F0879@DM8PR11MB5591.namprd11.prod.outlook.com> (raw)
In-Reply-To: <CAJFAV8yRqDr3qA+3YqVgxBFvuF3EGPZdXkYu5PdS9jodrSXmtA@mail.gmail.com>
> -----Original Message-----
> From: David Marchand <david.marchand@redhat.com>
> Sent: Friday, October 29, 2021 5:23 PM
> To: Peng, ZhihongX <zhihongx.peng@intel.com>
> Cc: Thomas Monjalon <thomas@monjalon.net>; Burakov, Anatoly
> <anatoly.burakov@intel.com>; Ananyev, Konstantin
> <konstantin.ananyev@intel.com>; Stephen Hemminger
> <stephen@networkplumber.org>; Dumitrescu, Cristian
> <cristian.dumitrescu@intel.com>; Mcnamara, John
> <john.mcnamara@intel.com>; Richardson, Bruce
> <bruce.richardson@intel.com>; dev <dev@dpdk.org>; Lin, Xueqin
> <xueqin.lin@intel.com>
> Subject: Re: [PATCH v13 2/4] DPDK code adapts to ASan
>
> On Wed, Oct 20, 2021 at 9:47 AM <zhihongx.peng@intel.com> wrote:
> >
> > From: Zhihong Peng <zhihongx.peng@intel.com>
> >
> > DPDK ASan functionality is currently only supported on Linux x86_64.
> > If want to support on other platforms, need to define
> > ASAN_SHADOW_OFFSET value according to google ASan document, and
> > configure meson file (config/meson.build).
> >
> > Signed-off-by: Xueqin Lin <xueqin.lin@intel.com>
> > Signed-off-by: Zhihong Peng <zhihongx.peng@intel.com>
> > Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
>
> Suggests following title/commitlog:
> """
> mem: instrument allocator for ASan
>
> This patch adds necessary hooks in the memory allocator for ASan.
>
> This feature is currently available in DPDK only on Linux x86_64.
> If other OS/architectures want to support it, ASAN_SHADOW_OFFSET must
> be defined and RTE_MALLOC_ASAN must be set accordingly in meson.
> """
>
> > ---
> > v7: Split doc and code into two.
> > v8: No change.
> > v9: Modify the definition of RTE_MALLOC_ASAN.
> > v10:Modify the definition of RTE_MALLOC_ASAN.
> > v11:No change.
> > v12:No change.
> > v13:Modify the document.
> > ---
> > config/meson.build | 4 +
> > doc/guides/prog_guide/asan.rst | 58 +++++++++-
> > lib/eal/common/malloc_elem.c | 26 ++++-
> > lib/eal/common/malloc_elem.h | 194
> ++++++++++++++++++++++++++++++++-
> > lib/eal/common/malloc_heap.c | 12 ++
> > lib/eal/common/rte_malloc.c | 9 +-
> > 6 files changed, 296 insertions(+), 7 deletions(-)
> >
> > diff --git a/config/meson.build b/config/meson.build index
> > f02b0e9c6d..bf751583bd 100644
> > --- a/config/meson.build
> > +++ b/config/meson.build
> > @@ -425,6 +425,10 @@ if get_option('b_sanitize') == 'address' or
> get_option('b_sanitize') == 'address
> > add_project_link_arguments('-lasan', language: 'c')
> > dpdk_extra_ldflags += '-lasan'
> > endif
> > +
> > + if is_linux and arch_subdir == 'x86'
>
> Missing a check on "and dpdk_conf.get('RTE_ARCH_64')" for i386 build.
>
>
> > + dpdk_conf.set10('RTE_MALLOC_ASAN', true)
> > + endif
> > endif
> >
> > if get_option('default_library') == 'both'
> > diff --git a/doc/guides/prog_guide/asan.rst
> > b/doc/guides/prog_guide/asan.rst index 6888fc9a87..02591ca68a 100644
> > --- a/doc/guides/prog_guide/asan.rst
> > +++ b/doc/guides/prog_guide/asan.rst
> > @@ -13,6 +13,58 @@ printing out detailed debug information whenever
> an error is detected.
> >
> > AddressSanitizer is a part of LLVM (3.1+) and GCC (4.8+).
>
> I'll move the examples after the explanations on how to enable ASan.
>
>
> >
> > +DPDK ASan functionality is currently only supported on Linux x86_64.
> > +If want to support on other platforms, need to define
> > +ASAN_SHADOW_OFFSET value according to google ASan document, and
> > +configure meson file (config/meson.build).
>
> DPDK ASan functionnality is vague.
>
> Suggests rewording:
> """
> ASan is aware of DPDK memory allocations, thanks to added instrumentation.
> This is only enabled on x86_64 at the moment.
> Other architectures may have to define ASAN_SHADOW_OFFSET.
> """
>
>
> > +
> > +Example heap-buffer-overflow error
> > +----------------------------------
> > +
> > +Add below unit test code in examples/helloworld/main.c::
> > +
> > + Add code to helloworld:
> > + char *p = rte_zmalloc(NULL, 9, 0);
> > + if (!p) {
> > + printf("rte_zmalloc error.");
> > + return -1;
> > + }
> > + p[9] = 'a';
> > +
> > +Above code will result in heap-buffer-overflow error if ASan is enabled,
> because apply 9 bytes of memory but access the tenth byte, detailed error
> log as below::
> > +
> > + ==369953==ERROR: AddressSanitizer: heap-buffer-overflow on address
> 0x7fb17f465809 at pc 0x5652e6707b84 bp 0x7ffea70eea20 sp
> 0x7ffea70eea10 WRITE of size 1 at 0x7fb17f465809 thread T0
> > + #0 0x5652e6707b83 in main ../examples/helloworld/main.c:47
> > + #1 0x7fb94953c0b2 in __libc_start_main (/lib/x86_64-linux-
> gnu/libc.so.6+0x270b2)
> > + #2 0x5652e67079bd in _start
> > + (/home/pzh/asan_test/x86_64-native-linuxapp-gcc/examples/dpdk-
> hellow
> > + orld+0x8329bd)
> > +
> > + Address 0x7fb17f465809 is a wild pointer.
> > + SUMMARY: AddressSanitizer: heap-buffer-overflow
> > + ../examples/helloworld/main.c:47 in main
>
> I'll move the note update here:
> """
> Note::
>
> - Some of the features of ASan (for example, 'Display memory application
> location, currently
> displayed as a wild pointer') are not currently supported with DPDK
> allocations.
>
> """
I agree with the above changes.
> > +
> > +Example use-after-free error
> > +----------------------------
> > +
> > +Add below unit test code in examples/helloworld/main.c::
> > +
> > + Add code to helloworld:
> > + char *p = rte_zmalloc(NULL, 9, 0);
> > + if (!p) {
> > + printf("rte_zmalloc error.");
> > + return -1;
> > + }
> > + rte_free(p);
> > + *p = 'a';
> > +
> > +Above code will result in use-after-free error if ASan is enabled, because
> apply 9 bytes of memory but access the first byte after release, detailed error
> log as below::
> > +
> > + ==417048==ERROR: AddressSanitizer: heap-use-after-free on address
> 0x7fc83f465800 at pc 0x564308a39b89 bp 0x7ffc8c85bf50 sp 0x7ffc8c85bf40
> WRITE of size 1 at 0x7fc83f465800 thread T0
> > + #0 0x564308a39b88 in main ../examples/helloworld/main.c:48
> > + #1 0x7fd0079c60b2 in __libc_start_main (/lib/x86_64-linux-
> gnu/libc.so.6+0x270b2)
> > + #2 0x564308a399bd in _start
> > + (/home/pzh/asan_test/x86_64-native-linuxapp-gcc/examples/dpdk-
> hellow
> > + orld+0x8329bd)
> > +
> > + Address 0x7fc83f465800 is a wild pointer.
> > + SUMMARY: AddressSanitizer: heap-use-after-free
> > + ../examples/helloworld/main.c:48 in main
> > +
> > Add following meson build commands to enable ASan in the meson build
> system:
> >
> > * gcc::
> > @@ -25,6 +77,8 @@ Add following meson build commands to enable ASan
> in the meson build system:
> >
> > .. Note::
> >
> > - a) If compile with gcc in centos, libasan needs to be installed separately.
> > - b) If the program is tested using cmdline, you may need to execute the
> > + a) Some of the features of ASan (for example, 'Display memory
> application location, currently
> > + displayed as a wild pointer') are not currently supported by DPDK's
> implementation.
> > + b) If compile with gcc in centos, libasan needs to be installed separately.
> > + c) If the program is tested using cmdline, you may need to
> > + execute the
> > "stty echo" command when an error occurs.
>
>
> --
> David Marchand
next prev parent reply other threads:[~2021-10-29 12:54 UTC|newest]
Thread overview: 117+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-10 2:01 [dpdk-dev] [PATCH] Enable AddressSanitizer feature on DPDK zhihongx.peng
2021-09-10 2:47 ` Stephen Hemminger
2021-09-13 5:27 ` Peng, ZhihongX
2021-09-13 15:05 ` Stephen Hemminger
2021-09-13 15:22 ` Bruce Richardson
2021-09-13 15:45 ` Stephen Hemminger
2021-09-14 3:17 ` Lin, Xueqin
2021-09-14 3:11 ` Lin, Xueqin
2021-09-10 17:58 ` David Christensen
2021-09-13 5:35 ` Peng, ZhihongX
2021-09-17 20:50 ` David Christensen
2021-09-18 7:21 ` Peng, ZhihongX
2021-09-20 19:41 ` David Christensen
2021-09-21 8:29 ` David Marchand
2021-09-21 10:15 ` Jerin Jacob
2021-09-22 7:32 ` Peng, ZhihongX
2021-09-16 1:38 ` [dpdk-dev] [PATCH v2] " zhihongx.peng
2021-09-17 8:23 ` David Marchand
2021-09-17 9:12 ` Peng, ZhihongX
2021-09-17 14:58 ` Stephen Hemminger
2021-09-18 6:36 ` Peng, ZhihongX
2021-09-18 7:41 ` [dpdk-dev] [PATCH v3] " zhihongx.peng
2021-09-20 10:03 ` David Marchand
2021-09-22 7:26 ` Peng, ZhihongX
2021-09-24 2:20 ` [dpdk-dev] [PATCH v4 1/2] Enable ASan for memory detector " zhihongx.peng
2021-09-24 2:20 ` [dpdk-dev] [PATCH v4 2/2] lib/pipeline: Fix gcc compilation error using ASan zhihongx.peng
2021-09-24 9:33 ` [dpdk-dev] [PATCH v5 1/2] Enable ASan for memory detector on DPDK zhihongx.peng
2021-09-24 9:33 ` [dpdk-dev] [PATCH v5 2/2] Fix gcc compilation error using ASan zhihongx.peng
2021-09-24 10:03 ` [dpdk-dev] [PATCH v5 1/2] Enable ASan for memory detector on DPDK zhihongx.peng
2021-09-24 10:03 ` [dpdk-dev] [PATCH v5 2/2] lib/pipeline: Fix gcc compilation error using ASan zhihongx.peng
2021-09-30 5:27 ` [dpdk-dev] [PATCH v6 1/2] Enable ASan for memory detector on DPDK zhihongx.peng
2021-09-30 5:27 ` [dpdk-dev] [PATCH v6 2/2] lib/pipeline: Fix gcc compilation error using ASan zhihongx.peng
2021-09-30 8:29 ` [dpdk-dev] [dpdk-stable] " David Marchand
2021-10-12 2:41 ` Peng, ZhihongX
2021-09-30 8:20 ` [dpdk-dev] [PATCH v6 1/2] Enable ASan for memory detector on DPDK David Marchand
2021-10-08 8:07 ` Peng, ZhihongX
2021-10-08 8:30 ` David Marchand
2021-10-12 5:41 ` Peng, ZhihongX
2021-10-12 7:17 ` Peng, ZhihongX
2021-10-13 7:59 ` Bruce Richardson
2021-10-14 6:33 ` Peng, ZhihongX
2021-10-14 6:53 ` Peng, ZhihongX
2021-09-30 12:59 ` zhihongx.peng
2021-09-30 12:59 ` [dpdk-dev] [PATCH v6 2/2] lib/pipeline: Fix compilation error with gcc ASan zhihongx.peng
2021-09-30 13:59 ` [dpdk-dev] [PATCH v6 1/2] Enable ASan for memory detector on DPDK Burakov, Anatoly
2021-09-30 18:49 ` David Marchand
2021-10-08 9:17 ` [dpdk-dev] [PATCH v7 1/3] " zhihongx.peng
2021-10-08 9:17 ` [dpdk-dev] [PATCH v7 2/3] DPDK code adapts to ASan zhihongx.peng
2021-10-08 9:17 ` [dpdk-dev] [PATCH v7 3/3] lib/pipeline: Fix compilation error with gcc ASan zhihongx.peng
2021-10-11 6:28 ` [dpdk-dev] [PATCH v8 1/3] Enable ASan for memory detector on DPDK zhihongx.peng
2021-10-11 6:28 ` [dpdk-dev] [PATCH v8 2/3] DPDK code adapts to ASan zhihongx.peng
2021-10-11 6:28 ` [dpdk-dev] [PATCH v8 3/3] lib/pipeline: Fix compilation error with gcc ASan zhihongx.peng
2021-10-12 9:43 ` [dpdk-dev] [PATCH v9 1/3] Enable ASan for memory detector on DPDK zhihongx.peng
2021-10-12 9:43 ` [dpdk-dev] [PATCH v9 2/3] DPDK code adapts to ASan zhihongx.peng
2021-10-13 16:45 ` David Marchand
2021-10-14 11:45 ` Peng, ZhihongX
2021-10-12 9:43 ` [dpdk-dev] [PATCH v9 3/3] pipeline: Fix compilation error with gcc ASan zhihongx.peng
2021-10-15 14:27 ` [dpdk-dev] [PATCH v10 1/4] Enable ASan for memory detector on DPDK zhihongx.peng
2021-10-15 14:27 ` [dpdk-dev] [PATCH v10 2/4] DPDK code adapts to ASan zhihongx.peng
2021-10-15 14:27 ` [dpdk-dev] [PATCH v10 3/4] pipeline: Fix compilation error with gcc ASan zhihongx.peng
2021-10-15 14:27 ` [dpdk-dev] [PATCH v10 4/4] performance-thread: Fix cross compilation failed zhihongx.peng
2021-10-19 9:02 ` [dpdk-dev] [PATCH v10 1/4] Enable ASan for memory detector on DPDK Mcnamara, John
2021-10-19 9:28 ` Peng, ZhihongX
2021-10-15 15:11 ` zhihongx.peng
2021-10-15 15:11 ` [dpdk-dev] [PATCH v10 2/4] DPDK code adapts to ASan zhihongx.peng
2021-10-15 15:11 ` [dpdk-dev] [PATCH v10 3/4] pipeline: Fix compilation error with gcc ASan zhihongx.peng
2021-10-18 12:21 ` Dumitrescu, Cristian
2021-10-18 12:54 ` Peng, ZhihongX
2021-10-19 11:26 ` Dumitrescu, Cristian
2021-10-19 12:11 ` Peng, ZhihongX
2021-10-15 15:11 ` [dpdk-dev] [PATCH v10 4/4] performance-thread: Fix cross compilation failed zhihongx.peng
2021-10-19 6:02 ` Peng, ZhihongX
2021-10-19 10:12 ` [dpdk-dev] [PATCH v11 1/4] Enable ASan for memory detector on DPDK zhihongx.peng
2021-10-19 10:12 ` [dpdk-dev] [PATCH v11 2/4] DPDK code adapts to ASan zhihongx.peng
2021-10-19 10:12 ` [dpdk-dev] [PATCH v11 3/4] pipeline: Fix compilation error with gcc ASan zhihongx.peng
2021-10-19 10:12 ` [dpdk-dev] [PATCH v11 4/4] performance-thread: Fix cross compilation failed zhihongx.peng
2021-10-19 10:37 ` Bruce Richardson
2021-10-19 13:04 ` [dpdk-dev] [PATCH v12 1/4] Enable ASan for memory detector on DPDK zhihongx.peng
2021-10-19 13:04 ` [dpdk-dev] [PATCH v12 2/4] DPDK code adapts to ASan zhihongx.peng
2021-10-19 13:04 ` [dpdk-dev] [PATCH v12 3/4] pipeline: Fix compilation error with gcc ASan zhihongx.peng
2021-10-19 13:04 ` [dpdk-dev] [PATCH v12 4/4] performance-thread: Fix cross compilation failed zhihongx.peng
2021-10-19 13:58 ` [dpdk-dev] [PATCH v12 1/4] Enable ASan Address Sanitization zhihongx.peng
2021-10-19 13:58 ` [dpdk-dev] [PATCH v12 2/4] DPDK code adapts to ASan zhihongx.peng
2021-10-19 13:58 ` [dpdk-dev] [PATCH v12 3/4] Code changes to avoid the ASan error zhihongx.peng
2021-10-19 14:05 ` Dumitrescu, Cristian
2021-10-19 13:58 ` [dpdk-dev] [PATCH v12 4/4] performance-thread: Fix cross compilation failed zhihongx.peng
2021-10-19 14:47 ` [dpdk-dev] [PATCH v12 1/4] Enable ASan Address Sanitization Peng, ZhihongX
2021-10-19 15:17 ` Mcnamara, John
2021-10-20 1:55 ` Peng, ZhihongX
2021-10-19 15:20 ` David Marchand
2021-10-20 2:41 ` Lin, Xueqin
2021-10-19 15:15 ` [dpdk-dev] [PATCH v12 1/4] Enable ASan AddressSanitizer zhihongx.peng
2021-10-19 15:15 ` [dpdk-dev] [PATCH v12 2/4] DPDK code adapts to ASan zhihongx.peng
2021-10-19 15:15 ` [dpdk-dev] [PATCH v12 3/4] Code changes to avoid the ASan error zhihongx.peng
2021-10-19 15:15 ` [dpdk-dev] [PATCH v12 4/4] performance-thread: Fix cross compilation failed zhihongx.peng
2021-10-20 7:46 ` [dpdk-dev] [PATCH v13 1/4] enable ASan AddressSanitizer zhihongx.peng
2021-10-20 7:46 ` [dpdk-dev] [PATCH v13 2/4] DPDK code adapts to ASan zhihongx.peng
2021-10-29 9:23 ` David Marchand
2021-10-29 12:54 ` Peng, ZhihongX [this message]
2021-10-20 7:46 ` [dpdk-dev] [PATCH v13 3/4] code changes to avoid the ASan error zhihongx.peng
2021-10-20 7:46 ` [dpdk-dev] [PATCH v13 4/4] performance-thread: avoid cross compilation fail zhihongx.peng
2021-10-25 1:58 ` [dpdk-dev] [PATCH v13 1/4] enable ASan AddressSanitizer Peng, ZhihongX
2021-10-29 9:21 ` David Marchand
2021-10-29 12:48 ` Peng, ZhihongX
2021-10-29 14:50 ` David Marchand
2021-11-01 3:37 ` Lin, Xueqin
2021-11-02 17:29 ` David Marchand
2021-11-03 9:36 ` Lin, Xueqin
2021-11-03 9:44 ` David Marchand
2021-10-19 10:24 ` [dpdk-dev] [PATCH v11 1/4] Enable ASan for memory detector on DPDK Peng, ZhihongX
2021-10-19 5:52 ` [dpdk-dev] [PATCH v10 " Peng, ZhihongX
2021-10-13 16:44 ` [dpdk-dev] [PATCH v9 1/3] " David Marchand
2021-10-14 6:46 ` Peng, ZhihongX
2021-10-14 7:04 ` Thomas Monjalon
2021-10-14 11:42 ` Peng, ZhihongX
2021-09-27 12:02 ` [dpdk-dev] [PATCH v3] Enable AddressSanitizer feature " Burakov, Anatoly
2021-09-30 5:18 ` Peng, ZhihongX
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DM8PR11MB559186758D1FB6F056E116E2F0879@DM8PR11MB5591.namprd11.prod.outlook.com \
--to=zhihongx.peng@intel.com \
--cc=anatoly.burakov@intel.com \
--cc=bruce.richardson@intel.com \
--cc=cristian.dumitrescu@intel.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=john.mcnamara@intel.com \
--cc=konstantin.ananyev@intel.com \
--cc=stephen@networkplumber.org \
--cc=thomas@monjalon.net \
--cc=xueqin.lin@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).