From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: Emacs 23.1.93 pretest Date: Sat, 27 Feb 2010 12:21:03 +0200 Message-ID: <833a0ndlo0.fsf@gnu.org> References: <87pr3rny7e.fsf@stupidchicken.com> <83fx4n122q.fsf@gnu.org> Reply-To: Eli Zaretskii NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-2 Content-Transfer-Encoding: QUOTED-PRINTABLE X-Trace: dough.gmane.org 1267266081 30481 80.91.229.12 (27 Feb 2010 10:21:21 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sat, 27 Feb 2010 10:21:21 +0000 (UTC) To: cyd@stupidchicken.com, emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Feb 27 11:21:17 2010 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1NlJnP-0003el-O2 for ged-emacs-devel@m.gmane.org; Sat, 27 Feb 2010 11:21:16 +0100 Original-Received: from localhost ([127.0.0.1]:45675 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NlJnO-00028U-VQ for ged-emacs-devel@m.gmane.org; Sat, 27 Feb 2010 05:21:15 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NlJnF-00028P-UB for emacs-devel@gnu.org; Sat, 27 Feb 2010 05:21:05 -0500 Original-Received: from [140.186.70.92] (port=52841 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NlJnE-00028H-7q for emacs-devel@gnu.org; Sat, 27 Feb 2010 05:21:05 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1NlJnC-0006sa-0p for emacs-devel@gnu.org; Sat, 27 Feb 2010 05:21:04 -0500 Original-Received: from mtaout20.012.net.il ([80.179.55.166]:40595) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1NlJnB-0006sS-J9 for emacs-devel@gnu.org; Sat, 27 Feb 2010 05:21:01 -0500 Original-Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0KYH00900WMLMW00@a-mtaout20.012.net.il> for emacs-devel@gnu.org; Sat, 27 Feb 2010 12:21:00 +0200 (IST) Original-Received: from HOME-C4E4A596F7 ([84.228.186.130]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0KYH006YKWQYEF60@a-mtaout20.012.net.il>; Sat, 27 Feb 2010 12:21:00 +0200 (IST) In-reply-to: <83fx4n122q.fsf@gnu.org> X-012-Sender: halo1@inter.net.il X-detected-operating-system: by eggs.gnu.org: Solaris 10 (beta) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:121420 Archived-At: > Date: Sat, 27 Feb 2010 11:05:01 +0200 > From: Eli Zaretskii > Cc: emacs-devel@gnu.org >=20 > > From: Chong Yidong > > Date: Fri, 26 Feb 2010 22:40:05 -0500 > >=20 > > Emacs pretest 23.1.93 is now available for download via FTP, at t= he > > following location: > >=20 > > ftp://alpha.gnu.org/gnu/emacs/pretest/emacs-23.1.93.tar.gz > >=20 > > The xdelta against the Emacs 23.1.92 pretest is here: > >=20 > > ftp://alpha.gnu.org/gnu/emacs/pretest/emacs-23.1.92-23.1.93.xde= lta > >=20 > > This is the fourth pretest for what will be the Emacs 23.2 releas= e. >=20 > 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] " "/. ." " $" "/.*=BA" "/.*\naba/f= " "^" "/.*H" "[[^ ]*[^]] ")) There's a Latin-2 character `=BA' there. If I delete the "/.*=BA" pa= rt 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. =46rom this and other symptoms (see below), it looks like the emacs-m= ule decoding is broken in this pretest. For example, visiting the offending desktop file with the Latin-2 character in place causes man= y 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 modu= le emacs.exe Reading from location 03194000. Registers: eax=3D03194000 ebx=3D00000000 ecx=3D03194000 edx=3D00002c50 esi= =3D00000000 edi=3D0081572c eip=3D0112b000 esp=3D0080a550 ebp=3D0080a5b8 iopl=3D0 nv = up ei ng nz ac pe cy cs=3D001b ss=3D0023 ds=3D0023 es=3D0023 fs=3D003b gs=3D0000 = efl=3D00000293 Call stack: 0112B000 emacs.exe:0112B000 decode_coding_emacs_mule coding.c:= 2497 =09 ... =09 c =3D byte_after_cr, byte_after_cr =3D -1; =09=09 else > ONE_MORE_BYTE (c); =09=09 if (c < 0 || c =3D=3D 0x80) =09 ... 01134F4F emacs.exe:01134F4F decode_coding coding.c:7158 =09 ... =09=09 coding->charbuf_used =3D carryover; =09=09 (*(coding->decoder)) (coding); > coding_set_destination (coding); =09=09 carryover =3D produce_chars (coding, translation_table, 0); =09=09 if (coding->annotated) =09 ... 01138823 emacs.exe:01138823 decode_coding_gap coding.c:7666 =09 ... =09 current_buffer->text->inhibit_shrinking =3D 1; =09 decode_coding (coding); > current_buffer->text->inhibit_shrinking =3D 0; =09 attrs =3D CODING_ID_ATTRS (coding->id); =09 ... 0104E7B8 emacs.exe:0104E7B8 Finsert_file_contents fileio.c:408= 3 =09 ... =09=09 decode_coding_gap (&coding, inserted, inserted); =09=09 inserted =3D coding.produced_char; > coding_system =3D CODING_ID_NAME (coding.id); =09=09} =09 else if (inserted > 0) =09 ... 0100C5AD emacs.exe:0100C5AD Ffuncall eval.c:3038 =09 ... =09 goto done; =09 case 5: > val =3D (*XSUBR (fun)->function) (internal_args[0], int= ernal_args[1], =09 internal_args[2], internal_args[3], =09 internal_args[4]); =09 ... 0111E0F6 emacs.exe:0111E0F6 Fbyte_code bytecode.c:679 =09 ... =09=09 } =09 #endif > TOP =3D Ffuncall (op + 1, &TOP); =09=09AFTER_POTENTIAL_GC (); =09=09break; =09 ... 0100C012 emacs.exe:0100C012 funcall_lambda eval.c:3216 =09 ... =09=09} > return unbind_to (count, val); =09 } =09 ... 0100C3F6 emacs.exe:0100C3F6 Ffuncall eval.c:3093 =09 ... =09 done: =09 CHECK_CONS_LIST (); > lisp_eval_depth--; =09 if (backtrace.debug_on_exit) =09=09val =3D call_debugger (Fcons (Qexit, Fcons (val, Qnil))); =09 ... 0100C78E emacs.exe:0100C78E call4 eval.c:2880 =09 ... =09 RETURN_UNGCPRO (Ffuncall (5, &fn)); =09 #endif /* not NO_ARG_ARRAY */ > } =09 /* Call function fn with 5 arguments arg1, arg2, arg3, arg4, a= rg5 */ =09 ... 0107AC20 emacs.exe:0107AC20 Fload lread.c:1225 =09 ... =09=09 NILP (noerror) ? Qnil : Qt, =09=09 (NILP (nomessage) || force_load_messages) ? Qnil : Qt); > return unbind_to (count, val); =09 } =09=09} =09 ... 0100C5AD emacs.exe:0100C5AD Ffuncall eval.c:3038 =09 ... =09 goto done; =09 case 5: > val =3D (*XSUBR (fun)->function) (internal_args[0], int= ernal_args[1], =09 internal_args[2], internal_args[3], =09 internal_args[4]); =09 ... 0111E0F6 emacs.exe:0111E0F6 Fbyte_code bytecode.c:679 =09 ... =09=09 } =09 #endif > TOP =3D Ffuncall (op + 1, &TOP); =09=09AFTER_POTENTIAL_GC (); =09=09break; =09 ... 0100C012 emacs.exe:0100C012 funcall_lambda eval.c:3216 =09 ... =09=09} > return unbind_to (count, val); =09 } =09 ... 0100C3F6 emacs.exe:0100C3F6 Ffuncall eval.c:3093 =09 ... =09 done: =09 CHECK_CONS_LIST (); > lisp_eval_depth--; =09 if (backtrace.debug_on_exit) =09=09val =3D call_debugger (Fcons (Qexit, Fcons (val, Qnil))); =09 ... 0111E0F6 emacs.exe:0111E0F6 Fbyte_code bytecode.c:679 =09 ... =09=09 } =09 #endif > TOP =3D Ffuncall (op + 1, &TOP); =09=09AFTER_POTENTIAL_GC (); =09=09break; =09 ... 0100C012 emacs.exe:0100C012 funcall_lambda eval.c:3216 =09 ... =09=09} > return unbind_to (count, val); =09 } =09 ... 0100C3F6 emacs.exe:0100C3F6 Ffuncall eval.c:3093 =09 ... =09 done: =09 CHECK_CONS_LIST (); > lisp_eval_depth--; =09 if (backtrace.debug_on_exit) =09=09val =3D call_debugger (Fcons (Qexit, Fcons (val, Qnil))); =09 ... 0100CB8B emacs.exe:0100CB8B run_hook_with_args eval.c:2683 =09 ... =09=09{ =09=09 args[0] =3D XCAR (val); > ret =3D Ffuncall (nargs, args); =09=09} =09 } =09 ... 0100CD1C emacs.exe:0100CD1C Frun_hooks eval.c:2534 =09 ... =09 register int i; > for (i =3D 0; i < nargs; i++) =09=09{ =09=09 hook[0] =3D args[i]; =09 ... 0100C6B4 emacs.exe:0100C6B4 Ffuncall eval.c:3005 =09 ... =09=09 if (XSUBR (fun)->max_args =3D=3D MANY) =09 { > val =3D (*XSUBR (fun)->function) (numargs, args + 1); =09 goto done; =09 } =09 ... 0111E0F6 emacs.exe:0111E0F6 Fbyte_code bytecode.c:679 =09 ... =09=09 } =09 #endif > TOP =3D Ffuncall (op + 1, &TOP); =09=09AFTER_POTENTIAL_GC (); =09=09break; =09 ... 0100C012 emacs.exe:0100C012 funcall_lambda eval.c:3216 =09 ... =09=09} > return unbind_to (count, val); =09 } =09 ... 0100C3F6 emacs.exe:0100C3F6 Ffuncall eval.c:3093 =09 ... =09 done: =09 CHECK_CONS_LIST (); > lisp_eval_depth--; =09 if (backtrace.debug_on_exit) =09=09val =3D call_debugger (Fcons (Qexit, Fcons (val, Qnil))); =09 ... 0111E0F6 emacs.exe:0111E0F6 Fbyte_code bytecode.c:679 =09 ... =09=09 } =09 #endif > TOP =3D Ffuncall (op + 1, &TOP); =09=09AFTER_POTENTIAL_GC (); =09=09break; =09 ... 0100C012 emacs.exe:0100C012 funcall_lambda eval.c:3216 =09 ... =09=09} > return unbind_to (count, val); =09 } =09 ... 0100D1AD emacs.exe:0100D1AD apply_lambda eval.c:3135 =09 ... =09=09} =09 backtrace_list->evalargs =3D 0; > tem =3D funcall_lambda (fun, XINT (numargs), arg_vector= ); =09 /* Do the debug-on-exit now, while arg_vector still exists. = */ =09 ... 0100B906 emacs.exe:0100B906 Feval eval.c:2413 =09 ... =09 CHECK_CONS_LIST (); > lisp_eval_depth--; =09 if (backtrace.debug_on_exit) =09=09val =3D call_debugger (Fcons (Qexit, Fcons (val, Qnil))); =09 ... 01053927 emacs.exe:01053927 top_level_2 keyboard.c:1370 =09 ... =09 { =09 return Feval (Vtop_level); > } =09 Lisp_Object =09 ... 0100A16A emacs.exe:0100A16A internal_condition_case eval.c:149= 1 =09 ... =09 val =3D (*bfun) (); > catchlist =3D c.next; =09 handlerlist =3D h.next; =09 return val; =09 ... 01053959 emacs.exe:01053959 top_level_1 keyboard.c:1382 =09 ... =09 else =09=09message ("Bare Emacs (standard Lisp code not loaded)"); > return Qnil; =09 } =09 ... 0100A09F emacs.exe:0100A09F internal_catch eval.c:1226 =09 ... =09 /* Call FUNC. */ =09 if (! _setjmp (c.jmp)) > c.val =3D (*func) (arg); =09 /* Throw works by a longjmp that comes right here. */ =09 ... 010536F9 emacs.exe:010536F9 command_loop keyboard.c:1339 =09 ... =09=09 any_kboard_state (); =09 #endif > internal_catch (Qtop_level, command_loop_2, Qnil); =09 executing_kbd_macro =3D Qnil; =09 ... 010537B0 emacs.exe:010537B0 recursive_edit_1 keyboard.c:955 =09 ... =09 val =3D command_loop (); > if (EQ (val, Qt)) =09=09Fsignal (Qquit, Qnil); =09 /* Handle throw from read_minibuf when using minibuffer =09 ... 010538D1 emacs.exe:010538D1 Frecursive_edit keyboard.c:1017 =09 ... =09 recursive_edit_1 (); > return unbind_to (count, Qnil); =09 } =09 ... 01002E2F emacs.exe:01002E2F main emacs.c:1836 =09 ... =09 /* NOTREACHED */ =09 return 0; > } =09 /* Sort the args so we can find the most important ones =09 ... 0100124B emacs.exe:0100124B 01001298 emacs.exe:01001298 7C816D4F kernel32.dll:7C816D4F RegisterWaitForInputIdle