An attempt to build in on arm64 failed quite fast at ./configure as checking for sbrk... yes checking for ADDR_NO_RANDOMIZE constant... no assuming 0x40000 checking for ADDR_COMPAT_LAYOUT constant... no checking for ADDR_LIMIT_3GB constant... no checking for personality(ADDR_NO_RANDOMIZE) support... no checking that sbrk is (now) non-random... no Cannot build with randomized sbrk. Your options: - upgrade to a kernel/libc that knows about personality(ADDR_NO_RANDOMIZE) - recompile your kernel with CONFIG_COMPAT_BRK (if it has that option) - run sysctl kernel.randomize_va_space=0 before using gcl
but it requires a trivial patch, before it can't find sbrk at all: diff --git a/gcl/configure.in b/gcl/configure.in index a21b4ca4b..422290d2d 100644 --- a/gcl/configure.in +++ b/gcl/configure.in @@ -1237,6 +1237,7 @@ if test "$HAVE_SBRK" = "1" ; then AC_RUN_IFELSE( [AC_LANG_SOURCE( [[ + #include <unistd.h> #include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[],char *envp[]) { @@ -1253,6 +1254,7 @@ if test "$HAVE_SBRK" = "1" ; then AC_RUN_IFELSE( [AC_LANG_SOURCE( [[ + #include <unistd.h> #include <stdio.h> #include <stdlib.h> int main(int argc,char * argv[],char * envp[]) { @@ -1274,6 +1276,7 @@ if test "$HAVE_SBRK" = "1" ; then AC_RUN_IFELSE( [AC_LANG_SOURCE( [[ + #include <unistd.h> #include <stdio.h> #include <stdlib.h> int main(int argc,char * argv[],char * envp[]) { @@ -1305,6 +1308,7 @@ AC_MSG_CHECKING(CSTACK_DIRECTION) AC_RUN_IFELSE( [AC_LANG_SOURCE( [[ + #include <unistd.h> #include <stdio.h> #include <stdlib.h> int main(int argc,char **argv,char **envp) { @@ -1324,6 +1328,7 @@ AC_MSG_CHECKING([finding CSTACK_ALIGNMENT]) AC_RUN_IFELSE( [AC_LANG_SOURCE( [[ + #include <unistd.h> #include <stdio.h> #include <stdlib.h> int main(int argc,char **argv,char **envp) { -- wbr, Kirill > On 23. Dec 2023, at 01:24, Kirill A. Korinsky <kir...@korins.ky> wrote: > > I'd like to confirm that I successfully build gcl from commit > 01ed2e0b2f540031171d2258ddccb951735827e7 on macOS 12 x86_64 with using only > one series of patches: > https://github.com/macports/macports-ports/blob/master/lang/gcl/files/fix-memory-corruption-on-macOS.patch > > <https://github.com/macports/macports-ports/blob/master/lang/gcl/files/fix-memory-corruption-on-macOS.patch> > > Now I'm trying i386 and arm64, stay tuned! > > -- > wbr, Kirill > >> On 22. Dec 2023, at 22:17, Camm Maguire <c...@maguirefamily.org >> <mailto:c...@maguirefamily.org>> wrote: >> >> Greetings, and thanks again! >> >> vfork: from your trace, macosx seems to be calling malloc before exec >> in the child, and this is a no no for vfork. signal handling is >> irrelevant. I will investigate posix_spawn and let you know. >> >> I take it readline and gprof issues are clear. >> >> I've committed a fix which will hopefully get you beyond the libc >> issue. Please keep me informed. >> >> Take care, >> >> "Kirill A. Korinsky" <kir...@korins.ky <mailto:kir...@korins.ky>> writes: >> >>> On 22. Dec 2023, at 17:19, Camm Maguire <c...@maguirefamily.org >>> <mailto:c...@maguirefamily.org>> wrote: >>> >>> On 3), after reading up on vfork, and examining your logs, it is indeed >>> deprecated. This has been in use in 2.6 for many years -- have you been >>> applying a patch there as well? >>> >>> This patch was introduced by me at MacPorts when I upgraded GCL from 2.6.12 >>> to 2.6.14. Both 2.6.13 and 2.6.14 doesn't work without this patch. >>> >>> If I recall right I've used git bisect to find when it was broken to start >>> my investigation to figure out this changes. >>> >>> And the GCL code in question here is (o/unixsys.c): >>> >>> if (!(pid=pvfork())) { >>> errno=0; >>> execvp(*p1,(void *)p1); >>> _exit(128|(errno&0x7f)); >>> } >>> >>> I'm guessing macosx is mallocing the environment. Or perhaps it is the >>> profile timer blocking. You might want to try replacing pvfork above >>> with vfork. If this works it is a simple fix confining the signal >>> handling to the parent. >>> >>> I've applied the patch: >>> >>> - if (!(pid=pvfork())) { >>> + if (!(pid=vfork())) { >>> errno=0; >>> execvp(*p1,(void *)p1); >>> _exit(128|(errno&0x7f)); >>> >>> and it crashed as before with stack trace (I've disabled GCL's signals to >>> get it): >>> >>> Termination Reason: Namespace SIGNAL, Code 11 Segmentation fault: 11 >>> Terminating Process: exc handler [93250] >>> >>> VM Region Info: 0x28 is not in any region. Bytes before following region: >>> 140737488199640 >>> REGION TYPE START - END [ VSIZE] PRT/MAX >>> SHRMOD REGION DETAIL >>> UNUSED SPACE AT START >>> ---> >>> VM_ALLOCATE 7ffffffda000-7ffffffdb000 [ 4K] r-x/r-x >>> SM=ALI >>> >>> Thread 0 Crashed:: Dispatch queue: com.apple.main-thread >>> 0 libsystem_malloc.dylib 0x7ff817d3772c _malloc_fork_prepare + >>> 80 >>> 1 libSystem.B.dylib 0x7ff822d06759 >>> libSystem_atfork_prepare + 55 >>> 2 libsystem_c.dylib 0x7ff817e1b8a8 vfork + 27 >>> >>> On 5) if you could please do the following at the stopped part of the >>> build: >>> >>> cd unixport >>> ./saved_pre_gcl >>> (in-package :si) >>> (trace dlopen dlsym) >>> (mdlsym "memcmp") >>> >>> Sure, >>> >>>> (in-package :si) >>> >>> #<"SYSTEM" package> >>> >>> SYSTEM>(trace dlopen dlsym) >>> >>> (DLOPEN DLSYM) >>> >>> SYSTEM>(mdlsym "memcmp") >>> >>> 1> (DLSYM 0 "memcmp") >>> <1 (DLSYM 140703530381538) >>> |libsystem_platform|:|memcmp| >>> >>> SYSTEM> >>> >>> On 4), as I had indicated, the current bootstrap process is needlessly >>> slow and is there just to check all modes of operation. saved_pre_gcl >>> operates from evaluated lisp source, saved_gcl0 from compiled at safety >>> 3. saved_gcl is fully optimized. Until we address this at final >>> release, may I suggest keeping a build around, and when testing a >>> change, do >>> >>> cd unixport >>> ./saved_gcl >>> >>> (time (load "boot.lisp")) >>> >>> make saved_gcl >>> >>> For me this takes 240 seconds. >>> >>> Let's back to it when we fix building. >> >> -- >> Camm Maguire c...@maguirefamily.org >> <mailto:c...@maguirefamily.org> >> ========================================================================== >> "The earth is but one country, and mankind its citizens." -- Baha'u'llah >
signature.asc
Description: Message signed with OpenPGP