On Sun, 2015-06-14 at 22:01 -0700, John Reiser wrote: > > mmap(0x802001000, 4194304, PROT_READ|PROT_WRITE|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = -1 EINVAL (Invalid argument) > > What is SHMLBA for this configuration? [grep -sr SHMLBA /usr/include]
/usr/include/valgrind/vki/vki-amd64-linux.h:#define VKI_SHMLBA VKI_PAGE_SIZE /usr/include/valgrind/vki/vki-arm-linux.h:#define VKI_SHMLBA (4 * VKI_PAGE_SIZE) /usr/include/valgrind/vki/vki-arm64-linux.h:#define VKI_SHMLBA (4 * VKI_PAGE_SIZE) /usr/include/valgrind/vki/vki-darwin.h:#define VKI_SHMLBA SHMLBA /usr/include/valgrind/vki/vki-linux.h:#define VKI_SHM_RND 020000 /* round attach address to SHMLBA boundary */ /usr/include/valgrind/vki/vki-mips32-linux.h:#define VKI_SHMLBA 0x40000 /usr/include/valgrind/vki/vki-mips64-linux.h:#define VKI_SHMLBA 0x40000 /usr/include/valgrind/vki/vki-ppc32-linux.h:#define VKI_SHMLBA VKI_PAGE_SIZE /usr/include/valgrind/vki/vki-ppc64-linux.h:#define VKI_SHMLBA VKI_PAGE_SIZE /usr/include/valgrind/vki/vki-s390x-linux.h:#define VKI_SHMLBA VKI_PAGE_SIZE /usr/include/valgrind/vki/vki-x86-linux.h:#define VKI_SHMLBA VKI_PAGE_SIZE > And on the same topic, what is the page size? [grep -sr PAGE_SIZE > /usr/include] /usr/include/valgrind/pub_tool_libcbase.h:#define VG_IS_PAGE_ALIGNED(aaa_p) (0 == (((Addr)(aaa_p)) & ((Addr)(VKI_PAGE_SIZE-1)))) /usr/include/valgrind/pub_tool_libcbase.h:#define VG_PGROUNDDN(p) VG_ROUNDDN(p, VKI_PAGE_SIZE) /usr/include/valgrind/pub_tool_libcbase.h:#define VG_PGROUNDUP(p) VG_ROUNDUP(p, VKI_PAGE_SIZE) /usr/include/valgrind/vki/vki-amd64-linux.h:#define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT) /usr/include/valgrind/vki/vki-amd64-linux.h:#define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE /usr/include/valgrind/vki/vki-amd64-linux.h:#define VKI_SHMLBA VKI_PAGE_SIZE /usr/include/valgrind/vki/vki-arm-linux.h:#define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT) /usr/include/valgrind/vki/vki-arm-linux.h:#define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE /usr/include/valgrind/vki/vki-arm-linux.h:#define VKI_SHMLBA (4 * VKI_PAGE_SIZE) /usr/include/valgrind/vki/vki-arm64-linux.h:extern UWord VKI_PAGE_SIZE; /usr/include/valgrind/vki/vki-arm64-linux.h:#define VKI_MAX_PAGE_SIZE (1UL << VKI_MAX_PAGE_SHIFT) /usr/include/valgrind/vki/vki-arm64-linux.h:// shared memory with 64 bit processes, VKI_PAGE_SIZE is good /usr/include/valgrind/vki/vki-arm64-linux.h:// the old-style 16k value (4 * VKI_PAGE_SIZE) to be safe. /usr/include/valgrind/vki/vki-arm64-linux.h:#define VKI_SHMLBA (4 * VKI_PAGE_SIZE) /usr/include/valgrind/vki/vki-darwin.h:#define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE /usr/include/valgrind/vki/vki-darwin.h:#define VKI_PAGE_SIZE PAGE_SIZE /usr/include/valgrind/vki/vki-mips32-linux.h:#define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT) /usr/include/valgrind/vki/vki-mips32-linux.h:#define VKI_PAGE_MASK (~(VKI_PAGE_SIZE-1)) /usr/include/valgrind/vki/vki-mips32-linux.h:#define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE /usr/include/valgrind/vki/vki-mips64-linux.h:#define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT) /usr/include/valgrind/vki/vki-mips64-linux.h:#define VKI_PAGE_MASK (~(VKI_PAGE_SIZE-1)) /usr/include/valgrind/vki/vki-mips64-linux.h:#define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE /usr/include/valgrind/vki/vki-ppc32-linux.h:extern UWord VKI_PAGE_SIZE; /usr/include/valgrind/vki/vki-ppc32-linux.h:#define VKI_MAX_PAGE_SIZE (1UL << VKI_MAX_PAGE_SHIFT) /usr/include/valgrind/vki/vki-ppc32-linux.h:#define VKI_SHMLBA VKI_PAGE_SIZE /usr/include/valgrind/vki/vki-ppc64-linux.h:extern UWord VKI_PAGE_SIZE; /usr/include/valgrind/vki/vki-ppc64-linux.h:#define VKI_MAX_PAGE_SIZE (1UL << VKI_MAX_PAGE_SHIFT) /usr/include/valgrind/vki/vki-ppc64-linux.h:#define VKI_SHMLBA VKI_PAGE_SIZE /usr/include/valgrind/vki/vki-s390x-linux.h:#define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT) /usr/include/valgrind/vki/vki-s390x-linux.h:#define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE /usr/include/valgrind/vki/vki-s390x-linux.h:#define VKI_SHMLBA VKI_PAGE_SIZE /usr/include/valgrind/vki/vki-x86-linux.h:#define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT) /usr/include/valgrind/vki/vki-x86-linux.h:#define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE /usr/include/valgrind/vki/vki-x86-linux.h:#define VKI_SHMLBA VKI_PAGE_SIZE > Every successful mmap() return value happens to be a multiple of 0x2000 > (8KiB); > there are no odd multiples of 0x1000 (4KiB). > [Some ARM machines have an SHMLBA of 0x4000 (16KiB) even though the page size > is 0x1000 (4KiB).] This is on a MIPS chip, specifically Cavium (cnMIPS). The kernel page size is configured to 8kB and since I didn't configure the page size when cross compiling valgrind it looks like it took the page size of my local machine (4kB). Looking at the upstream source code it appears that 8kB page size isn't currently supported however there are some patches here that may make it work. https://bugs.kde.org/show_bug.cgi?id=342356 Either way if this is indeed the issue here perhaps this is something that should be fixed upstream (supporting 8k and 32k pages)? > > Construct a standalone test program whose sole action is that call to mmap(). > Does the mmap() succeed there? > ------------------------------------------------------------------------------ _______________________________________________ Valgrind-users mailing list Valgrind-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/valgrind-users