[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Emacs 23.1.93 pretest
From: |
Eli Zaretskii |
Subject: |
Re: Emacs 23.1.93 pretest |
Date: |
Sat, 27 Feb 2010 12:21:03 +0200 |
> Date: Sat, 27 Feb 2010 11:05:01 +0200
> From: Eli Zaretskii <address@hidden>
> Cc: address@hidden
>
> > From: Chong Yidong <address@hidden>
> > Date: Fri, 26 Feb 2010 22:40:05 -0500
> >
> > Emacs pretest 23.1.93 is now available for download via FTP, at the
> > following location:
> >
> > ftp://alpha.gnu.org/gnu/emacs/pretest/emacs-23.1.93.tar.gz
> >
> > The xdelta against the Emacs 23.1.92 pretest is here:
> >
> > ftp://alpha.gnu.org/gnu/emacs/pretest/emacs-23.1.92-23.1.93.xdelta
> >
> > This is the fourth pretest for what will be the Emacs 23.2 release.
>
> It crashes for me on MS-Windows, while loading my desktop file. I'm
> trying to debug this.
The problem is this line from my desktop file:
(setq regexp-search-ring '("[^]$" "\\bmac" "\\`n" "\\`m" "\\\\`ma" "\\. [^ ]"
"^`" "^\\\\" "/[A-Za-z] " "/. ." " $" "/.*ş" "/.*\naba/f" "^" "/.*H" "[[^
]*[^]] "))
There's a Latin-2 character `ş' there. If I delete the "/.*ş" part of
the regexp-search-ring, Emacs starts correctly. Emacs 23.1.92 loads
the same desktop file without any trouble, so this is a regression.
From this and other symptoms (see below), it looks like the emacs-mule
decoding is broken in this pretest. For example, visiting the
offending desktop file with the Latin-2 character in place causes many
characters following this Latin-2 character to disappear from display,
as if they didn't exist in the file. Killing the buffer and visiting
the file again magically restores the characters that disappeared.
I cannot produce a GDB backtrace: I could not find a way of
reproducing the crash under GDB. All I get is a weird
wrong-type-argument error:
Debugger entered--Lisp error: (wrong-type-argument symbolp (quote
((tab-width . 8) (buffer-file-coding-system . iso-latin-1-unix)
(case-fold-search . t))))
But I think this is because the failure to decode the desktop file
correctly causes Emacs to try evaluating a butchered expression.
FWIW, here's the backtrace of the crash produced by Dr MinGW, a GIT
debugger that pops up when Emacs crashes. Note that it crashes in
decode_coding_emacs_mule, yet another sign that this is the culprit.
emacs.exe caused an Access Violation at location 0112b000 in module
emacs.exe Reading from location 03194000.
Registers:
eax=03194000 ebx=00000000 ecx=03194000 edx=00002c50 esi=00000000
edi=0081572c
eip=0112b000 esp=0080a550 ebp=0080a5b8 iopl=0 nv up ei ng nz ac pe
cy
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000
efl=00000293
Call stack:
0112B000 emacs.exe:0112B000 decode_coding_emacs_mule coding.c:2497
...
c = byte_after_cr, byte_after_cr = -1;
else
> ONE_MORE_BYTE (c);
if (c < 0 || c == 0x80)
...
01134F4F emacs.exe:01134F4F decode_coding coding.c:7158
...
coding->charbuf_used = carryover;
(*(coding->decoder)) (coding);
> coding_set_destination (coding);
carryover = produce_chars (coding, translation_table, 0);
if (coding->annotated)
...
01138823 emacs.exe:01138823 decode_coding_gap coding.c:7666
...
current_buffer->text->inhibit_shrinking = 1;
decode_coding (coding);
> current_buffer->text->inhibit_shrinking = 0;
attrs = CODING_ID_ATTRS (coding->id);
...
0104E7B8 emacs.exe:0104E7B8 Finsert_file_contents fileio.c:4083
...
decode_coding_gap (&coding, inserted, inserted);
inserted = coding.produced_char;
> coding_system = CODING_ID_NAME (coding.id);
}
else if (inserted > 0)
...
0100C5AD emacs.exe:0100C5AD Ffuncall eval.c:3038
...
goto done;
case 5:
> val = (*XSUBR (fun)->function) (internal_args[0],
internal_args[1],
internal_args[2], internal_args[3],
internal_args[4]);
...
0111E0F6 emacs.exe:0111E0F6 Fbyte_code bytecode.c:679
...
}
#endif
> TOP = Ffuncall (op + 1, &TOP);
AFTER_POTENTIAL_GC ();
break;
...
0100C012 emacs.exe:0100C012 funcall_lambda eval.c:3216
...
}
> return unbind_to (count, val);
}
...
0100C3F6 emacs.exe:0100C3F6 Ffuncall eval.c:3093
...
done:
CHECK_CONS_LIST ();
> lisp_eval_depth--;
if (backtrace.debug_on_exit)
val = call_debugger (Fcons (Qexit, Fcons (val, Qnil)));
...
0100C78E emacs.exe:0100C78E call4 eval.c:2880
...
RETURN_UNGCPRO (Ffuncall (5, &fn));
#endif /* not NO_ARG_ARRAY */
> }
/* Call function fn with 5 arguments arg1, arg2, arg3, arg4, arg5 */
...
0107AC20 emacs.exe:0107AC20 Fload lread.c:1225
...
NILP (noerror) ? Qnil : Qt,
(NILP (nomessage) || force_load_messages) ? Qnil : Qt);
> return unbind_to (count, val);
}
}
...
0100C5AD emacs.exe:0100C5AD Ffuncall eval.c:3038
...
goto done;
case 5:
> val = (*XSUBR (fun)->function) (internal_args[0],
internal_args[1],
internal_args[2], internal_args[3],
internal_args[4]);
...
0111E0F6 emacs.exe:0111E0F6 Fbyte_code bytecode.c:679
...
}
#endif
> TOP = Ffuncall (op + 1, &TOP);
AFTER_POTENTIAL_GC ();
break;
...
0100C012 emacs.exe:0100C012 funcall_lambda eval.c:3216
...
}
> return unbind_to (count, val);
}
...
0100C3F6 emacs.exe:0100C3F6 Ffuncall eval.c:3093
...
done:
CHECK_CONS_LIST ();
> lisp_eval_depth--;
if (backtrace.debug_on_exit)
val = call_debugger (Fcons (Qexit, Fcons (val, Qnil)));
...
0111E0F6 emacs.exe:0111E0F6 Fbyte_code bytecode.c:679
...
}
#endif
> TOP = Ffuncall (op + 1, &TOP);
AFTER_POTENTIAL_GC ();
break;
...
0100C012 emacs.exe:0100C012 funcall_lambda eval.c:3216
...
}
> return unbind_to (count, val);
}
...
0100C3F6 emacs.exe:0100C3F6 Ffuncall eval.c:3093
...
done:
CHECK_CONS_LIST ();
> lisp_eval_depth--;
if (backtrace.debug_on_exit)
val = call_debugger (Fcons (Qexit, Fcons (val, Qnil)));
...
0100CB8B emacs.exe:0100CB8B run_hook_with_args eval.c:2683
...
{
args[0] = XCAR (val);
> ret = Ffuncall (nargs, args);
}
}
...
0100CD1C emacs.exe:0100CD1C Frun_hooks eval.c:2534
...
register int i;
> for (i = 0; i < nargs; i++)
{
hook[0] = args[i];
...
0100C6B4 emacs.exe:0100C6B4 Ffuncall eval.c:3005
...
if (XSUBR (fun)->max_args == MANY)
{
> val = (*XSUBR (fun)->function) (numargs, args + 1);
goto done;
}
...
0111E0F6 emacs.exe:0111E0F6 Fbyte_code bytecode.c:679
...
}
#endif
> TOP = Ffuncall (op + 1, &TOP);
AFTER_POTENTIAL_GC ();
break;
...
0100C012 emacs.exe:0100C012 funcall_lambda eval.c:3216
...
}
> return unbind_to (count, val);
}
...
0100C3F6 emacs.exe:0100C3F6 Ffuncall eval.c:3093
...
done:
CHECK_CONS_LIST ();
> lisp_eval_depth--;
if (backtrace.debug_on_exit)
val = call_debugger (Fcons (Qexit, Fcons (val, Qnil)));
...
0111E0F6 emacs.exe:0111E0F6 Fbyte_code bytecode.c:679
...
}
#endif
> TOP = Ffuncall (op + 1, &TOP);
AFTER_POTENTIAL_GC ();
break;
...
0100C012 emacs.exe:0100C012 funcall_lambda eval.c:3216
...
}
> return unbind_to (count, val);
}
...
0100D1AD emacs.exe:0100D1AD apply_lambda eval.c:3135
...
}
backtrace_list->evalargs = 0;
> tem = funcall_lambda (fun, XINT (numargs), arg_vector);
/* Do the debug-on-exit now, while arg_vector still exists. */
...
0100B906 emacs.exe:0100B906 Feval eval.c:2413
...
CHECK_CONS_LIST ();
> lisp_eval_depth--;
if (backtrace.debug_on_exit)
val = call_debugger (Fcons (Qexit, Fcons (val, Qnil)));
...
01053927 emacs.exe:01053927 top_level_2 keyboard.c:1370
...
{
return Feval (Vtop_level);
> }
Lisp_Object
...
0100A16A emacs.exe:0100A16A internal_condition_case eval.c:1491
...
val = (*bfun) ();
> catchlist = c.next;
handlerlist = h.next;
return val;
...
01053959 emacs.exe:01053959 top_level_1 keyboard.c:1382
...
else
message ("Bare Emacs (standard Lisp code not loaded)");
> return Qnil;
}
...
0100A09F emacs.exe:0100A09F internal_catch eval.c:1226
...
/* Call FUNC. */
if (! _setjmp (c.jmp))
> c.val = (*func) (arg);
/* Throw works by a longjmp that comes right here. */
...
010536F9 emacs.exe:010536F9 command_loop keyboard.c:1339
...
any_kboard_state ();
#endif
> internal_catch (Qtop_level, command_loop_2, Qnil);
executing_kbd_macro = Qnil;
...
010537B0 emacs.exe:010537B0 recursive_edit_1 keyboard.c:955
...
val = command_loop ();
> if (EQ (val, Qt))
Fsignal (Qquit, Qnil);
/* Handle throw from read_minibuf when using minibuffer
...
010538D1 emacs.exe:010538D1 Frecursive_edit keyboard.c:1017
...
recursive_edit_1 ();
> return unbind_to (count, Qnil);
}
...
01002E2F emacs.exe:01002E2F main emacs.c:1836
...
/* NOTREACHED */
return 0;
> }
/* Sort the args so we can find the most important ones
...
0100124B emacs.exe:0100124B
01001298 emacs.exe:01001298
7C816D4F kernel32.dll:7C816D4F RegisterWaitForInputIdle
- Emacs 23.1.93 pretest, Chong Yidong, 2010/02/26
- Re: Emacs 23.1.93 pretest, Eli Zaretskii, 2010/02/27
- Re: Emacs 23.1.93 pretest,
Eli Zaretskii <=
- Re: Emacs 23.1.93 pretest, Juanma Barranquero, 2010/02/27
- Re: Emacs 23.1.93 pretest, Juanma Barranquero, 2010/02/27
- Re: Emacs 23.1.93 pretest, Eli Zaretskii, 2010/02/27
- Re: Emacs 23.1.93 pretest, Eli Zaretskii, 2010/02/27
- Re: Emacs 23.1.93 pretest, Andreas Schwab, 2010/02/27
- Re: Emacs 23.1.93 pretest, Eli Zaretskii, 2010/02/27
- Re: Emacs 23.1.93 pretest, Lennart Borgman, 2010/02/27
- Re: Emacs 23.1.93 pretest, Eli Zaretskii, 2010/02/27
- Re: Emacs 23.1.93 pretest, Chong Yidong, 2010/02/27
- Re: Emacs 23.1.93 pretest, Eli Zaretskii, 2010/02/27