Bug 1206
Summary: | Multiple large memory block allocations using rte_malloc can lead to memory out-of-bounds issues. | ||
---|---|---|---|
Product: | DPDK | Reporter: | killers (killerstemp) |
Component: | core | Assignee: | dev |
Status: | UNCONFIRMED --- | ||
Severity: | major | CC: | dmitry.kozliuk |
Priority: | Normal | ||
Version: | 21.11 | ||
Target Milestone: | --- | ||
Hardware: | x86 | ||
OS: | Linux |
Description
killers
2023-03-31 03:17:50 CEST
Unable to reproduce in 21.11 or main. It's weird that (t_mem2 - t_mem1) = 912 MB precisely on your system. It should be and it is 1024 MB + 192 B (requested + overhead) on my system. Tried both with and without -Dc_args=-DRTE_MALLOC_DEBUG=1. What is the distribution, compiler version, build flags? The problem occurs only on low-end CPUs that lack hardware support for PDPE1GB. It resurfaces when using 2M Hugepages. DPDK 20 also experiences this issue! When using 2M hugepages, there is an issue with allocating large chunks of memory, such as allocating several hundred megabytes of memory. I ran my tests on a system with pdpe1gb support, but without 1G hugepages. For the sample code, DPDK allocated memory in two chunks of 513 x 2M hugepages. On v23.03-23-gd034467249: rte_malloc1 t_mem1=0x11805fffc0 rte_malloc1 t_mem2=0x11c07fffc0 Computing (t_mem2 - tmem1) = 0x11c07fffc0 - 0x11805fffc0 = 1073741824 + 2097152 = 1G + 2M exactly, which is OK. Please tell the distribution (uname -a), compiler version, and build flags. |