[Top][All Lists]

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

Re: 23.0.50; Emacs seg fault

From: Kim F. Storm
Subject: Re: 23.0.50; Emacs seg fault
Date: Sun, 07 Oct 2007 00:41:24 +0200
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux)

Leo <address@hidden> writes:

> On 2007-09-30 11:49 +0100, Kim F. Storm wrote:
>> Leo <address@hidden> writes:
>>> #1  0x08194676 in wait_reading_process_output (time_limit=30, microsecs=0, 
>>> read_kbd=-1, do_display=1, wait_for_cell=137551137, 
>>>     wait_proc=0x0, just_wait_proc=0) at process.c:4880
>> I doubt that is the right line number due to compiler optimizations.
>> Compile with CFLAGS="-g -O0" to get max debugging info.
>> Since xerrno = 9  (EBADF), I suspect it actually traps in
>> process.c line 4651 
> Compiled with "-g -O0". Please see the backtrace below:
> ================================
> Starting program: /home/emacs/src/emacs -nw -q
> [Thread debugging using libthread_db enabled]
> [New Thread -1208334624 (LWP 18445)]
> [Switching to Thread -1208334624 (LWP 18445)]
> [Detaching after fork from child process 18449. (Try `set detach-on-fork 
> off'.)]
> Breakpoint 1, abort () at emacs.c:431
> 431     kill (getpid (), SIGABRT);
> #0  abort () at emacs.c:431
> #1  0x081fec06 in wait_reading_process_output (time_limit=30, microsecs=0, 
> read_kbd=-1, do_display=1, wait_for_cell=138030369, 
>     wait_proc=0x0, just_wait_proc=0) at process.c:4651

Just as I expected.

Since you are pretty much alone seeing this problem, it would be
great if you could try to determine which of the file descriptors
actually causes the problem - which is that the file descriptor
has been closed but it has not been removed from input_wait_mask

The relevant code is this:

          else if (xerrno == EBADF)
#ifdef AIX
              /* AIX doesn't handle PTY closure the same way BSD does.  On AIX,
                 the child's closure of the pts gives the parent a SIGHUP, and
                 the ptc file descriptor is automatically closed,
                 yielding EBADF here or at select() call above.
                 So, SIGHUP is ignored (see def of PTY_TTY_NAME_SPRINTF
                 in m/ibmrt-aix.h), and here we just ignore the select error.
                 Cleanup occurs c/o status_notify after SIGCLD. */
              no_avail = 1; /* Cannot depend on values returned */
              abort ();

Just a wild guess - could you try to change "AIX" to "1" in the above
code and see if that makes any difference...

Kim F. Storm <address@hidden> http://www.cua.dk

reply via email to

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