Summary: | Self-hosting not working on FreeBSD | ||
---|---|---|---|
Product: | [Developer tools] valgrind | Reporter: | Paul Floyd <pjfloyd> |
Component: | general | Assignee: | Paul Floyd <pjfloyd> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | NOR | ||
Version First Reported In: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | FreeBSD | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Paul Floyd
2025-08-23 10:42:38 UTC
No problem on Linux. ${HOME}/tools/valgrind/bin/valgrind --sim-hints=enable-outer --trace-children=yes \ --smc-check=all-non-file \ --run-libc-freeres=no --tool=none -q \ ./vg-in-place --vgdb-prefix=./inner --tool=none -q true ^^^ runs without a squeak A while back I did increase the FreeBSD memory space from 32Gb to 128Gb 35bb01dd450bfe3ba658ec5b58bc9f47dfc4c2aa FreeBSD: make amd64 aspace max mem 128Gbytes Also this diff 78a7f9244163bd6dba3b556f3708269a49a59243 FreeBSD: clean up guest stack creation code - - suggested_clstack_end = aspacem_maxAddr - (kern_maxssiz - kern_sgrowsiz) + VKI_PAGE_SIZE; + VG_(printf)("maxssiz %lx\n", kern_maxssiz); + //suggested_clstack_end = aspacem_maxAddr - (kern_maxssiz - kern_sgrowsiz) + VKI_PAGE_SIZE; #endif + // on amd64 we have oodles of space and just shove the new stack somewhere out of the way + // x86 is far more constrained, and we put the new stack just below the stack passed in to V + // except that it has stack space and the growth stack guard below it as decribed above + // so we need to skip over the existing stack/growth area on x86 + +# if VG_WORDSIZE == 4 suggested_clstack_end = aspacem_maxAddr - 64*1024*1024UL + VKI_PAGE_SIZE; - #else - suggested_clstack_end = aspacem_maxAddr - 16*1024*1024UL - + VKI_PAGE_SIZE; - + suggested_clstack_end = aspacem_maxAddr; #endif Looks like it was the second change. I've fixed that (at least for amd64) and I now get two errors >--2573-- Reading syms from /home/paulf/z400/paulf/scratch/valgrind_inner/none/none-amd64-freebsd >--2573-- object doesn't have a dynamic symbol table >--2573-- Reading syms from /home/paulf/tools/valgrind/libexec/valgrind/none-amd64-freebsd >--2573-- ELF section outside all mapped regions Not too serious for getting things running, need to sort it out in order to be able to get callstacks. Then >==2573== error 9 Bad file descriptor >==2573== mknod ./inner-to-vgdb-from-2573-by-paulf-on-green >==2573== valgrind: fatal error: vgdb FIFOs cannot be created. OK this is my fault. In 52dddd460b0778f862c062c82d8d2819f740c268 I messed up the handling of AT_FDCWD in mknodat f6f7cae623 (Paul Floyd 2023-02-25 16:09:41 +0100) PRE_MEM_RASCIIZ( "mknodat(pathname)", ARG2 ); 52dddd460b (Paul Floyd 2025-08-23 14:19:33 +0200) if (!ML_(fd_allowed)(ARG1, "mknodat", tid, False)) 52dddd460b (Paul Floyd 2025-08-23 14:19:33 +0200) SET_STATUS_Failure(VKI_EBADF); f6f7cae623 (Paul Floyd 2023-02-25 16:09:41 +0100) } The FreeBSD generic wrappers for bindat, connectat, chflagsat and utimesat all have the same problem. Whilst I'm at it, Linux openat2 has a message referring to openat (copy and paste) Seems to work now.
For this message
>--86152-- Reading syms from /home/paulf/tools/valgrind/libexec/valgrind/memcheck-amd64-freebsd
>--86152-- ELF section outside all mapped regions
that's the outer as seen by the inner. so not really an issue that it can't read symbols.
Also there is
==86152== Warning: ignored attempt to set SIG128 handler in sigaction();
==86152== the SIG128 signal is used internally by Valgrind
for another day.
Author: Paul Floyd <pjfloyd@wanadoo.fr> Date: Tue Aug 26 13:32:07 2025 +0200 Bug 508638 - Self-hosting not working on FreeBSD |