gcl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: posix_spawn


From: Kirill A. Korinsky
Subject: Re: posix_spawn
Date: Sat, 23 Dec 2023 20:53:07 +0100

Sorry, I've missed the local root: 01ed2e0b2f540031171d2258ddccb951735827e7

-- 
wbr, Kirill

On 23. Dec 2023, at 19:52, Kirill A. Korinsky <kirill@korins.ky> wrote:

This build was made with local root 

It contains patches in addition to posix_spawn which allows to build it on macOS 13 arm64 under rosetta:

--- unixport/makefile
+++ unixport/makefile
@@ -68,7 +68,7 @@ $(LSPDIR)/auto_new.lsp: $(LSPDIR)/auto.lsp
  echo "(AUTOLOAD 'init-readline '|readline|)" >>$@
 
 libboot.so: ../o/boot.o
- $(CC) -shared -Wl,-undefined -Wl,dynamic_lookup $< -o $@
+ $(CC) $(CFLAGS) -shared -Wl,-undefined -Wl,dynamic_lookup $< -o $@
 
 init_raw.lsp: init_raw.lsp.in

@@ -84,7 +84,7 @@ boot.h: boot.ini
  rm $*.c
 
 $(DPP): ../bin/dpp.c
- ${CC} ${DEFS} -o $@ $<
+ ${CC} ${CFLAGS} ${DEFS} -o $@ $<
 
 new_init.c: ${INI_FILES}
  echo '#include "make-init.h"' > $@

Can you consider to add it to the upstream?

Thus, additionaly I've added patch below to catch the real place where it crashes:

--- o/main.c
+++ o/main.c
@@ -665,10 +665,10 @@ main(int argc, char **argv, char **envp) {
 /* catch certain signals */
 void install_segmentation_catcher(void)
 {
-  unblock_signals(SIGSEGV,SIGSEGV);
-  unblock_signals(SIGBUS,SIGBUS);
-  (void) gcl_signal(SIGSEGV,segmentation_catcher);
-  (void) gcl_signal(SIGBUS,segmentation_catcher);
+/*   unblock_signals(SIGSEGV,SIGSEGV); */
+/*   unblock_signals(SIGBUS,SIGBUS); */
+/*   (void) gcl_signal(SIGSEGV,segmentation_catcher); */
+/*   (void) gcl_signal(SIGBUS,segmentation_catcher); */
 }
 
 void


-- 
wbr, Kirill

On 23. Dec 2023, at 19:24, Camm Maguire <camm@maguirefamily.org> wrote:

Just checking my understanding : 'gcl-devel' crashes in a different
place, and both of these are only with the posix_spawn patch, right?

Take care,

"Kirill A. Korinsky" <kirill@korins.ky> writes:

I did a bit more wired things. I add to each line inside siLheap_report a printf like this:

static void
FFN(siLheap_report)(void) {

 int i;

 check_arg(0);
 printf("1\n");fflush(stdout);

 vs_check_push(make_fixnum(sizeof(fixnum)*CHAR_SIZE));
 printf("2\n");fflush(stdout);
 vs_push(make_fixnum(PAGESIZE));
 printf("3\n");fflush(stdout);
 vs_push(make_fixnum((ufixnum)data_start));
 printf("4\n");fflush(stdout);
 vs_push(make_fixnum((ufixnum)data_start+(real_maxpage<<PAGEWIDTH)));
 printf("5\n");fflush(stdout);
 vs_push(make_fixnum(0));/*SHARED_LIB_HEAP_CEILING*/
 printf("6\n");fflush(stdout);
 i=sizeof(fixnum)*CHAR_SIZE-2;
 printf("7\n");fflush(stdout);
 i=1<<i;
 printf("8\n");fflush(stdout);
 vs_push(make_fixnum(((unsigned long)cs_base+i-1)&-i));
 printf("9\n");fflush(stdout);
 vs_push(make_fixnum(labs(cs_base-cs_org)));
 printf("10\n");fflush(stdout);
 vs_push(make_fixnum((CSTACK_DIRECTION+1)>>1));
 printf("11\n");fflush(stdout);
 vs_push(make_fixnum(CSTACK_ALIGNMENT));
 printf("12\n");fflush(stdout);
 vs_push(make_fixnum(labs(cs_limit-cs_org)));/*CSSIZE*/
 printf("13\n");fflush(stdout);
 vs_push(make_fixnum(phys_pages));
...

and it fails at the end like this.

SYSTEM>(init-system)
loading /opt/local/var/macports/build/_opt_local_var_macports_sources_github.com_catap_macports-ports_lang_gcl/gcl-devel/work/01ed2e0b2f540031171d2258ddccb951735827e7/gcl/unixport/../lsp/gcl_s.lsp
loading /opt/local/var/macports/build/_opt_local_var_macports_sources_github.com_catap_macports-ports_lang_gcl/gcl-devel/work/01ed2e0b2f540031171d2258ddccb951735827e7/gcl/unixport/../lsp/gcl_sf.lsp
loading /opt/local/var/macports/build/_opt_local_var_macports_sources_github.com_catap_macports-ports_lang_gcl/gcl-devel/work/01ed2e0b2f540031171d2258ddccb951735827e7/gcl/unixport/../lsp/gcl_rm.lsp
loading /opt/local/var/macports/build/_opt_local_var_macports_sources_github.com_catap_macports-ports_lang_gcl/gcl-devel/work/01ed2e0b2f540031171d2258ddccb951735827e7/gcl/unixport/../lsp/gcl_dl.lsp
loading /opt/local/var/macports/build/_opt_local_var_macports_sources_github.com_catap_macports-ports_lang_gcl/gcl-devel/work/01ed2e0b2f540031171d2258ddccb951735827e7/gcl/unixport/../lsp/gcl_fle.lsp
loading /opt/local/var/macports/build/_opt_local_var_macports_sources_github.com_catap_macports-ports_lang_gcl/gcl-devel/work/01ed2e0b2f540031171d2258ddccb951735827e7/gcl/unixport/../lsp/gcl_defmacro.lsp
loading /opt/local/var/macports/build/_opt_local_var_macports_sources_github.com_catap_macports-ports_lang_gcl/gcl-devel/work/01ed2e0b2f540031171d2258ddccb951735827e7/gcl/unixport/../lsp/gcl_hash.lsp
loading /opt/local/var/macports/build/_opt_local_var_macports_sources_github.com_catap_macports-ports_lang_gcl/gcl-devel/work/01ed2e0b2f540031171d2258ddccb951735827e7/gcl/unixport/../lsp/gcl_evalmacros.lsp
loading /opt/local/var/macports/build/_opt_local_var_macports_sources_github.com_catap_macports-ports_lang_gcl/gcl-devel/work/01ed2e0b2f540031171d2258ddccb951735827e7/gcl/unixport/../lsp/gcl_module.lsp
loading /opt/local/var/macports/build/_opt_local_var_macports_sources_github.com_catap_macports-ports_lang_gcl/gcl-devel/work/01ed2e0b2f540031171d2258ddccb951735827e7/gcl/unixport/../lsp/gcl_predlib.lsp
1
2
3
4
5
6
7
8
zsh: illegal hardware instruction  ./raw_pre_gcl
catap@Kirills-mini-m1 unixport %

So, it seems clear which line triggers an issue O:-)

Thus, I've changed the problem line to

 printf("8\n");fflush(stdout);
 make_fixnum(((unsigned long)cs_base+i-1)&-i);
 printf("9\n");fflush(stdout);

and it crashes the same way.

--
Camm Maguire         camm@maguirefamily.org
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah


Attachment: signature.asc
Description: Message signed with OpenPGP


reply via email to

[Prev in Thread] Current Thread [Next in Thread]