unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Pip Cet via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: Rob Browning <rlb@defaultvalue.org>
Cc: gerd.moellmann@gmail.com, 57789@debbugs.gnu.org,
	Eli Zaretskii <eliz@gnu.org>, Andrea Corallo <acorallo@gnu.org>,
	Stefan Kangas <stefankangas@gmail.com>
Subject: bug#57789: Emacs 28.1 clone build with native compilation crashes on s390x
Date: Fri, 03 Jan 2025 18:57:55 +0000	[thread overview]
Message-ID: <877c7bk9ov.fsf@protonmail.com> (raw)
In-Reply-To: <87r05jagqq.fsf@trouble.defaultvalue.org>

"Rob Browning" <rlb@defaultvalue.org> writes:

> Stefan Kangas <stefankangas@gmail.com> writes:
>
>> Thanks.  I guess not a lot of us have access to an s390x machine, so I
>> don't think anyone has been able to test it.
>
> Hmm, I think I've heard there may be (or were?) some public instances
> that provide short-term dev access, but have never looked in to it.

I have cfarm access, but cfarm doesn't have an s390 machine :-(

> I was also going to outline an easy way to test in a vm at least on a
> Debian system via debvm/mmdebstrap, but after doing that, I wasn't able
> to reproduce the problem there.  (Happy to provide instructions for
> anyone interested, otherwise.)

Same compiler?  Is ASLR in use? In any case, I'm always interested in
weird machines, even if they're virtual, so I'd appreciate such
instructions.

> In any case, I just tried both the current Debian package and an
> upstream emcs-29.4 checkout on zelenka.debian.org, and both fail.
>
> The emacs-29.4 tree fails like this:
>
> make[3]: Entering directory '/home/rlb/emacs/admin/unidata'
> make[3]: Nothing to be done for 'charscript.el'.
> make[3]: Leaving directory '/home/rlb/emacs/admin/unidata'
> make -C ../admin/unidata emoji-zwj.el
> make[3]: Entering directory '/home/rlb/emacs/admin/unidata'
> make[3]: Nothing to be done for 'emoji-zwj.el'.
> make[3]: Leaving directory '/home/rlb/emacs/admin/unidata'
>   ELC+ELN  ../lisp/emacs-lisp/eldoc.elc
>
> Error: wrong-type-argument ("../lisp/emacs-lisp/eldoc.el" hash-table-p
> [unbound unbound unbound unbound unbound unbound unbound unbound
> unbound unbound unbound unbound unbound unbound unbound unbound
> unbound unbound unbound unbound unbound unbound unbound unbound
> unbound unbound unbound unbound unbound unbound unbound unbound
> unbound unbound unbound unbound unbound unbound unbound unbound
> unbound unbound unbound unbound unbound unbound unbound unbound
> unbound unbound unbound unbound unbound unbound unbound unbound
> unbound unbound unbound unbound unbound unbound unbound unbound
> unbound unbound unbound unbound unbound unbound unbound unbound
> unbound unbound unbound unbound unbound unbound unbound unbound
> unbound unbound unbound unbound unbound unbound unbound unbound
> unbound unbound unbound unbound unbound unbound unbound unbound
> unbound unbound unbound unbound unbound unbound unbound unbound
> unbound unbound unbound unbound unbound unbound unbound unbound
> unbound unbound unbound unbound unbound unbound unbound unbound
> unbound unbound unbound unbound unbound unbound unbound unbound
> unbound unbound])
> Fatal error 11: Segmentation fault

Two random guesses:

1. purespace overflow.  This causes erratic behavior of pretty much
every description.  The tell-tale sign would be a "Pure Lisp storage
overflowed" message at some point in the "make bootstrap" log, maybe a
very long time before we crash.

2. GC problem.  One possible problem is that Emacs currently relies on
__builtin_unwind_init to do the right thing.  If __builtin_unwind_init
isn't implemented on s390, but is necessary (the second part is very
likely), we'll fail to mark some objects on the stack.

(2) seems more likely.

> Backtrace:
> ../src/bootstrap-emacs(emacs_backtrace+0x46) [0x2aa1c2f12f6]
> ../src/bootstrap-emacs(terminate_due_to_signal+0x9e) [0x2aa1c18fb76]
> ../src/bootstrap-emacs(+0x8fdde) [0x2aa1c18fdde]
> ../src/bootstrap-emacs(+0x1ef45a) [0x2aa1c2ef45a]
> ../src/bootstrap-emacs(+0x1ef4a2) [0x2aa1c2ef4a2]
> linux-vdso64.so.1(__kernel_rt_sigreturn+0x0) [0x3ffdc0e5480]
> ../src/bootstrap-emacs(+0x2433a4) [0x2aa1c3433a4]
> ../src/bootstrap-emacs(visit_static_gc_roots+0x196) [0x2aa1c342dae]
> ../src/bootstrap-emacs(garbage_collect+0x1e6) [0x2aa1c3445d6]
> ../src/bootstrap-emacs(eval_sub+0x54c) [0x2aa1c370244]
> ../src/bootstrap-emacs(eval_sub+0x4ac) [0x2aa1c3701a4]
> ../src/bootstrap-emacs(Fcond+0x84) [0x2aa1c3711f4]
> ../src/bootstrap-emacs(eval_sub+0x8d2) [0x2aa1c3705ca]
> ../src/bootstrap-emacs(Fwhile+0x6e) [0x2aa1c370fb6]

Can you disassemble the Fwhile, eval_sub, and visit_static_gc_roots
functions?  I assume s390 disassembled code isn't too hard to read...

Random aside: is 0x2aa1c3705ca a likely S390 program counter?  The
number looks familiar because it looks similar to a Lisp_Object
representing a symbol on x86-64 without ASLR (an example would be
0x2aaa8dac00e8).  I guess it's just a coincidence though.

Thanks!

Pip






  reply	other threads:[~2025-01-03 18:57 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-14  1:04 bug#57789: Emacs 28.1 clone build with native compilation crashes on s390x Rob Browning
2022-09-14  2:42 ` Eli Zaretskii
2022-09-14  3:06   ` Rob Browning
2022-09-14  3:20     ` Rob Browning
2022-09-14 20:19   ` Rob Browning
2022-09-14 20:21     ` Rob Browning
2022-09-16  6:04       ` Gerd Möllmann
2022-09-17 21:04         ` Rob Browning
2022-09-18  5:22           ` Gerd Möllmann
2022-09-18  5:49             ` Eli Zaretskii
2022-09-18  5:55               ` Gerd Möllmann
2022-09-18  5:33           ` Eli Zaretskii
2022-09-24 21:06             ` Rob Browning
2023-06-07 21:15               ` Andrea Corallo
2023-09-11 18:08                 ` Stefan Kangas
2025-01-02  1:07                   ` Stefan Kangas
2025-01-02  3:40                     ` Rob Browning
2025-01-02  5:04                       ` Stefan Kangas
2025-01-03 18:34                         ` Rob Browning
2025-01-03 18:57                           ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2025-01-05 19:18                             ` Rob Browning
2025-01-03 18:59                           ` Stefan Kangas
2025-01-05 19:23                             ` Rob Browning
2022-09-15  7:10     ` Eli Zaretskii
2022-09-15 14:51       ` Paul Eggert via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-15 16:26         ` Rob Browning
2022-09-16  8:43         ` Andrea Corallo
2022-09-16  8:39       ` Andrea Corallo
2022-09-17 21:00       ` Rob Browning

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877c7bk9ov.fsf@protonmail.com \
    --to=bug-gnu-emacs@gnu.org \
    --cc=57789@debbugs.gnu.org \
    --cc=acorallo@gnu.org \
    --cc=eliz@gnu.org \
    --cc=gerd.moellmann@gmail.com \
    --cc=pipcet@protonmail.com \
    --cc=rlb@defaultvalue.org \
    --cc=stefankangas@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).