emacs-devel
[Top][All Lists]
Advanced

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

Re: pdumper on Solaris 10


From: Eli Zaretskii
Subject: Re: pdumper on Solaris 10
Date: Wed, 11 Dec 2024 19:43:14 +0200

> Date: Wed, 11 Dec 2024 14:13:11 +0000
> From: Pip Cet <pipcet@protonmail.com>
> Cc: Eli Zaretskii <eliz@gnu.org>, stefankangas@gmail.com, luangruo@yahoo.com, 
> ali_gnu2@emvision.com, emacs-devel@gnu.org
> 
> Pip Cet <pipcet@protonmail.com> writes:
> > Gerd Möllmann <gerd.moellmann@gmail.com> writes:
> >> Eli Zaretskii <eliz@gnu.org> writes:
> >>> That's not what Gerd says, AFAIU.  But if you are right, then how
> >>> about making the WIDE_EMACS_INT configuration on the igc branch use
> >>> USE_LSB_TAG in the HAVE_MPS code branch?  I can volunteer to test such
> >>> a build, if that would help.
> >
> > Thanks for the offer.  I definitely think we should move away from
> > USE_LSB_TAG=0 as much as possible, and if the only place where such a
> > change would not be vetoed is scratch/igc + WIDE_EMACS_INT, we can at
> > least fix it there.  If any issues arise, of course, it will be more
> > difficult to ascertain whether they were caused by the USE_LSB_TAG
> > change or the IGC changes themselves.
> >
> > So I'll push that change in a bit, unless someone objects.
> 
> Just pushed it to the scratch/igc branch. It shouldn't have any effect
> on ordinary 64-bit builds; some of the code is to cater to the
> hypothetical big-endian 32-bit use case, and technically the x86 MPS
> weak pointer "optimization" could bite us again, but recent GCC does not
> generate the precise instructions that MPS emulates, so I'll risk it.

The "normal" (i.e. without WIDE_EMACS_INT) 32-bit MS-Windows build is
now broken:

    CCLD     temacs.exe
    GEN      ../etc/DOC
  /bin/mkdir -p ../etc
  make -C ../lisp update-subdirs
  make[3]: Entering directory `/d/gnu/git/emacs/feature/lisp'
  make[3]: Leaving directory `/d/gnu/git/emacs/feature/lisp'
  cp -f temacs.exe bootstrap-emacs.exe
  rm -f bootstrap-emacs.pdmp
  ./temacs --batch  -l loadup --temacs=pbootstrap \
          --bin-dest '/d/usr/bin/' --eln-dest '/d/usr/lib/emacs/31.0.50/'
  Loading loadup.el (source)...
  Dump mode: pbootstrap
  Using load-path (d:/gnu/git/emacs/feature/lisp 
d:/gnu/git/emacs/feature/lisp/emacs-lisp 
d:/gnu/git/emacs/feature/lisp/progmodes d:/gnu/git/emacs/feature/lisp/language 
d:/gnu/git/emacs/feature/lisp/international 
d:/gnu/git/emacs/feature/lisp/textmodes d:/gnu/git/emacs/feature/lisp/vc)
  Loading emacs-lisp/debug-early...
  Loading emacs-lisp/byte-run...
  Loading emacs-lisp/backquote...
  Loading subr...

  lisp.h:1273: Emacs fatal error: assertion failed: !FIXNUM_OVERFLOW_P (n)

  Backtrace:
  0124c3b2
  Makefile:1018: recipe for target `bootstrap-emacs.pdmp' failed
  make[2]: *** [bootstrap-emacs.pdmp] Error 3

Below I show the backtrace and some data from GDB.

Does such a build work on GNU/Linux?

Let me know if I can provide more data for debugging this.

  Thread 1 hit Breakpoint 1, terminate_due_to_signal (sig=sig@entry=22,
      backtrace_limit=backtrace_limit@entry=2147483647) at emacs.c:432
  432     {
  (gdb) bt
  #0  terminate_due_to_signal (sig=sig@entry=22,
      backtrace_limit=backtrace_limit@entry=2147483647) at emacs.c:432
  #1  0x00b1b53a in die (
      msg=msg@entry=0x10e4889 <i_fwd+849> "!FIXNUM_OVERFLOW_P (n)",
      file=file@entry=0x10e478d <i_fwd+597> "lisp.h", line=line@entry=1273)
      at alloc.c:8377
  #2  0x00bd7830 in make_fixnum (n=<optimized out>) at lisp.h:1273
  #3  0x00bdaf04 in make_fixnum (n=<optimized out>) at lisp.h:1273
  #4  weak_hash_table_entry (entry=...) at igc.c:4111
  #5  0x00b514e9 in WEAK_HASH_INDEX (h=<optimized out>, idx=<optimized out>)
      at fns.c:5487
  #6  0x00b52c4b in weak_hash_lookup_with_hash (h=h@entry=0xb0542b8,
      key=key@entry=XIL(0xb059b43), hash=hash@entry=make_fixnum(14948))
      at fns.c:5722
  #7  0x00b60f85 in Fputhash (key=XIL(0xb059b43), value=XIL(0xb059cfb),
      table=XIL(0xb0542bd)) at fns.c:6555
  #8  0x00b9bc8a in exec_byte_code (fun=<optimized out>, args_template=771,
      args_template@entry=0, nargs=<optimized out>, nargs@entry=0,
      args=<optimized out>, args@entry=0x0) at lisp.h:791
  #9  0x00b9e082 in Fbyte_code (bytestr=<optimized out>, vector=XIL(0xb059e9d),
      maxdepth=make_fixnum(4)) at bytecode.c:325
  #10 0x00b4be63 in eval_sub (form=form@entry=XIL(0xb059c6b)) at eval.c:2610
  #11 0x00b87f70 in readevalloop (readcharfun=readcharfun@entry=XIL(0x60a0),
      infile0=infile0@entry=0x767f048,
      sourcename=sourcename@entry=XIL(0xb059a34),
      printflag=printflag@entry=false, unibyte=unibyte@entry=XIL(0),
      readfun=readfun@entry=XIL(0), start=start@entry=XIL(0),
      end=<optimized out>, end@entry=XIL(0)) at lread.c:2540
  #12 0x00b889e5 in Fload (file=XIL(0xb0598fc), noerror=XIL(0),
      nomessage=XIL(0), nosuffix=XIL(0), must_suffix=<optimized out>)
      at lisp.h:1226
  #13 0x00b4be1a in eval_sub (form=form@entry=XIL(0xb0598eb)) at eval.c:2618
  #14 0x00b87f70 in readevalloop (readcharfun=readcharfun@entry=XIL(0x60a0),
      infile0=infile0@entry=0x767f638,
      sourcename=sourcename@entry=XIL(0xb04a314),
      printflag=printflag@entry=false, unibyte=unibyte@entry=XIL(0),
      readfun=readfun@entry=XIL(0), start=start@entry=XIL(0),
      end=<optimized out>, end@entry=XIL(0)) at lread.c:2540
  #15 0x00b889e5 in Fload (file=XIL(0xb049f84), noerror=XIL(0),
      nomessage=XIL(0), nosuffix=XIL(0), must_suffix=<optimized out>)
      at lisp.h:1226
  #16 0x00b4be1a in eval_sub (form=form@entry=XIL(0xb049fab)) at eval.c:2618
  #17 0x00b4dd99 in Feval (form=XIL(0xb049fab), lexical=lexical@entry=XIL(0x20))
      at eval.c:2463
  #18 0x00aa69a1 in top_level_2 () at lisp.h:1226
  #19 0x00b4613b in internal_condition_case (
      bfun=bfun@entry=0xaa6943 <top_level_2>, handlers=handlers@entry=XIL(0x60),
      hfun=hfun@entry=0xab0496 <cmd_error>) at eval.c:1618
  #20 0x00aa70b0 in top_level_1 (ignore=XIL(0)) at lisp.h:1226
  #21 0x00b46055 in internal_catch (tag=tag@entry=XIL(0xc540),
      func=func@entry=0xaa7087 <top_level_1>, arg=arg@entry=XIL(0))
      at eval.c:1297
  #22 0x00aa675f in command_loop () at lisp.h:1226
  #23 0x00ab0054 in recursive_edit_1 () at keyboard.c:760
  #24 0x00ab0342 in Frecursive_edit () at keyboard.c:843
  #25 0x00cf4375 in main (argc=<optimized out>, argv=<optimized out>)
      at emacs.c:2646
  (gdb) up
  #1  0x00b1b53a in die (
      msg=msg@entry=0x10e4889 <i_fwd+849> "!FIXNUM_OVERFLOW_P (n)",
      file=file@entry=0x10e478d <i_fwd+597> "lisp.h", line=line@entry=1273)
      at alloc.c:8377
  8377      terminate_due_to_signal (SIGABRT, INT_MAX);
  (gdb)
  #2  0x00bd7830 in make_fixnum (n=<optimized out>) at lisp.h:1273
  1273      eassert (!FIXNUM_OVERFLOW_P (n));
  (gdb)
  #3  0x00bdaf04 in make_fixnum (n=<optimized out>) at lisp.h:1273
  1273      eassert (!FIXNUM_OVERFLOW_P (n));
  (gdb)
  #4  weak_hash_table_entry (entry=...) at igc.c:4111
  4111          return make_fixnum (entry.intptr >> 1);
  (gdb) p entry
  $1 = {
    intptr = 4294967295,
    fixnum = make_fixnum(6)
  }
  (gdb) up
  #5  0x00b514e9 in WEAK_HASH_INDEX (h=<optimized out>, idx=<optimized out>)
      at fns.c:5487
  5487      return XFIXNUM (weak_hash_table_entry (h->strong->index[idx]));
  (gdb) up
  #6  0x00b52c4b in weak_hash_lookup_with_hash (h=h@entry=0xa8542b8,
      key=key@entry=XIL(0xa859b43), hash=hash@entry=make_fixnum(14948))
      at fns.c:5722
  5722      for (ptrdiff_t i = WEAK_HASH_INDEX (h, start_of_bucket);
  (gdb) up
  #7  0x00b60f85 in Fputhash (key=XIL(0xa859b43), value=XIL(0xa859cfb),
      table=XIL(0xa8542bd)) at fns.c:6555
  6555          ptrdiff_t i = weak_hash_lookup_with_hash (wh, key, hash);



reply via email to

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