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

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

bug#14986: Latest Emacs trunk crashes when changing Ispell dictionary


From: Eli Zaretskii
Subject: bug#14986: Latest Emacs trunk crashes when changing Ispell dictionary
Date: Tue, 30 Jul 2013 23:01:28 +0300

> From: "Sebastien Vauban" <sva-news@mygooglest.com>
> Cc: 14986@debbugs.gnu.org
> Date: Tue, 30 Jul 2013 21:46:55 +0200
> 
> #1  0x011ea214 in emacs_abort () at 
> c:/msys/home/dani/emacs/trunk/src/w32fns.c:8030
> #2  0x010db2e8 in terminate_due_to_signal (sig=22, 
> backtrace_limit=2147483647) at c:/msys/home/dani/emacs/trunk/src/emacs.c:369
> #3  0x011503d5 in die (msg=0x147f8a2 <baud_convert+482> "errno != EBADF || fd 
> < 0", file=0x147f708 <baud_convert+72> 
> "c:/msys/home/dani/emacs/trunk/src/sysdep.c",
>     line=2272) at c:/msys/home/dani/emacs/trunk/src/alloc.c:6558
> #4  0x010ff747 in emacs_close (fd=2147483647) at 
> c:/msys/home/dani/emacs/trunk/src/sysdep.c:2272
> #5  0x011c0654 in create_temp_file (nargs=12, args=0x88e264) at 
> c:/msys/home/dani/emacs/trunk/src/callproc.c:1027
> #6  0x011c0965 in Fcall_process_region (nargs=12, args=0x88e264) at 
> c:/msys/home/dani/emacs/trunk/src/callproc.c:1118

Thanks.

Paul, I'm afraid that the assumption in create_temp_file, viz.:

      errno = EEXIST;
      mktemp (tempfile);
      /* INT_MAX denotes success, because close (INT_MAX) does nothing.  */
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      fd = *tempfile ? INT_MAX : -1;

and this code in emacs_close:

  int
  emacs_close (int fd)
  {
    while (1)
      {
        int r = posix_close (fd, POSIX_CLOSE_RESTART);
        if (r == 0)
          return r;
        if (!POSIX_CLOSE_RESTART || errno != EINTR)
          {
            eassert (errno != EBADF || fd < 0);
            return errno == EINPROGRESS ? 0 : r;
          }
      }

will not work on Windows, because closing a file descriptor of INT_MAX
will most certainly produce EBADF on Windows.

Why is this trickery needed for platforms that use mktemp?





reply via email to

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