> On 22. Dec 2023, at 17:19, Camm Maguire <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. -- wbr, Kirill
signature.asc
Description: Message signed with OpenPGP