Hi folks,

I recently updated to Fedora 42 that comes with GCC 15.

When building with -fsanitize=address (libasan.so.8), it seems that
the --no-huge mode (along with --no-shconf) fails at initialization for
some obscure reason.

"couldn't allocate memory due to IOVA exceeding limits of current DMA mask."

I have looked around everywhere and I don't see how to get around this
issue.

It is working fine with GCC 14. Maybe some changes were made to libasan
related to the address ranges exposed to the mocked allocation
functions.

Is this something that needs to be fixed in DPDK?

Here is a reproducer:

$ meson setup build -Dtests=false -Denable_docs=false -Ddeveloper_mode=disabled 
\
        -Denable_drivers=net/tap -Denable_libs=gso -Denable_apps=test-pmd \
        -Db_sanitize=address
The Meson build system
Version: 1.7.0
Source dir: /home/rjarry/upstream/dpdk
Build dir: /home/rjarry/upstream/dpdk/build
Build type: native build
Project name: DPDK
Project version: 25.03.0
C compiler for the host machine: ccache cc (gcc 15.1.1 "cc (GCC) 15.1.1 
20250425 (Red Hat 15.1.1-1)")
C linker for the host machine: cc ld.bfd 2.44-3
Host machine cpu family: x86_64
Host machine cpu: x86_64
...
Library asan found: YES
...
$ ninja -C build
ninja: Entering directory `build'
[259/259] Linking target app/dpdk-testpmd

$ ldd build/app/dpdk-testpmd | grep asan
        libasan.so.8 => /lib64/libasan.so.8 (0x00007fac50e00000)

$ rpm -qa *asan*
libasan-15.1.1-1.fc42.x86_64

$ build/app/dpdk-testpmd -l 0 --no-shconf --no-huge -m 2048 
--log-level=lib.eal:debug
...
EAL: Buses did not request a specific IOVA mode.
EAL: Physical addresses are unavailable, selecting IOVA as VA mode.
EAL: Selected IOVA mode 'VA'
EAL: Probing VFIO support...
EAL: Module /sys/module/vfio not found! error 2 (No such file or directory)
EAL: VFIO modules not loaded, skipping VFIO support...
EAL: Ask a virtual area of 0x2e000 bytes
EAL: WARNING! Base virtual address hint (0x100005000 != 0x7f9bc4cc1000) not 
respected!
EAL:    This may cause issues with mapping memory into secondary processes
EAL: Virtual area found at 0x7f9bc4cc1000 (size = 0x2e000)
EAL: Setting up physically contiguous memory...
EAL: Setting maximum number of open files to 524288
EAL: Ask a virtual area of 0x1811000 bytes
EAL: WARNING! Base virtual address hint (0x10000b000 != 0x7b9bbeae5000) not 
respected!
EAL:    This may cause issues with mapping memory into secondary processes
EAL: Virtual area found at 0x7b9bbeae5000 (size = 0x1811000)
EAL: Memseg list allocated at socket 0, page size 0x4kB
EAL: Using memfd for anonymous memory
EAL: Ask a virtual area of 0x80000000 bytes
EAL: WARNING! Base virtual address hint (0x100011000 != 0x7b9b3eae5000) not 
respected!
EAL:    This may cause issues with mapping memory into secondary processes
EAL: Virtual area found at 0x7b9b3eae5000 (size = 0x80000000)
EAL: VA reserved for memseg list at 0x7b9b3eae5000, size 80000000
EAL: memseg iova 7b9b3eae5000, len 1000, out of range
EAL:    using dma mask fffffc0000000000
EAL: eal_legacy_hugepage_init(): couldn't allocate memory due to IOVA exceeding 
limits of current DMA mask.
EAL: Cannot init memory
EAL: Error - exiting with code: 1
Cannot init EAL: Cannot allocate memory

Does that ring a bell to anyone?

-- 
Robin

> Does not include installation.

Reply via email to