bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#56443: 28.1; Mac segmentation fault with ffap


From: Eli Zaretskii
Subject: bug#56443: 28.1; Mac segmentation fault with ffap
Date: Fri, 08 Jul 2022 08:39:49 +0300

> Cc: 56443@debbugs.gnu.org
> Date: Thu, 07 Jul 2022 22:36:53 +0200
> From:  Daniel Martín via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
> 
> Stephen Eglen <sje30@cam.ac.uk> writes:
> 
> > Can anyone replicate the following on Mac M1?  I'm using the 'emacs'
> > cask from homebrew, and I get the crash both with GUI and terminal
> > version of Emacs.  This seems to be mac-specific; I do not see the
> > problem on linux.
> >
> 
> Yes, I can reproduce the crash.  Attaching a debugger I see that the
> filename passed through file-name-case-insensitive-p is NULL:
> 
> * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS 
> (code=1, address=0x4)
>   * frame #0: 0x0000000100d61c2c 
> emacs`STRING_MULTIBYTE(str=0x0000000000000000) at lisp.h:1613:34
>     frame #1: 0x0000000100d64f68 
> emacs`encode_file_name_1(fname=0x0000000000000000) at coding.c:10397:8
>     frame #2: 0x0000000100d64f28 
> emacs`encode_file_name(fname=0x0000000000000000) at coding.c:10419:25
>     frame #3: 0x0000000100e2e098 
> emacs`file_name_case_insensitive_err(file=0x0000000000000000) at 
> fileio.c:2555:28
>     frame #4: 0x0000000100e2dfcc 
> emacs`Ffile_name_case_insensitive_p(filename=0x0000000000000000) at 
> fileio.c:2600:17
>     frame #5: 0x0000000100ec47ac emacs`funcall_subr(subr=0x0000000101083bb8, 
> numargs=1, args=0x0000000138058580) at eval.c:2996:15

That's not NULL, that's nil (which is represented as zero).

But I don't understand how could that happen, because
Ffile_name_case_insensitive_p checks the argument for validity:

  DEFUN ("file-name-case-insensitive-p", Ffile_name_case_insensitive_p,
         Sfile_name_case_insensitive_p, 1, 1, 0,
         doc: /* Return t if file FILENAME is on a case-insensitive filesystem.
  Return nil if FILENAME does not exist or is not on a case-insensitive
  filesystem, or if there was trouble determining whether the filesystem
  is case-insensitive.  */)
    (Lisp_Object filename)
  {
    Lisp_Object handler;

    CHECK_STRING (filename);  <<<<<<<<<<<<<<<<<<<<<<<<<<<<
    filename = Fexpand_file_name (filename, Qnil);

So it seems like expand-file-name returned nil in this case?

Can someone step through the code, including stepping into
Fexpand_file_name, and see  how we get that nil in this case?

(I tried to reproduce on my system, which is not a Mac, but I don't
see any nil filenames in that case.)





reply via email to

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