Ticket #183 (closed 不具合: fixed)

Opened 3 years ago

Last modified 2 years ago

Meadow3.00のファイル名のcompletionで落ちる

Reported by: nana Assigned to:
Priority: major Milestone: ver 3.00
Component: その他/一般 Version: 3.00 (開発中)
Keywords: Cc:

Description

Meadow3.00でcycle-mini.elをrequireしてファイル名の補完をすると落ちます。 再現方法は以下の通りです。

  1. meadow -qで起動
  2. (require 'cycle-mini)
  3. C-x C-fのファイル名補完時のspaceで落ちる

C-h C-vとかでは落ちないようです。また、(require 'cycle-mini)しないと落ちないようです。

環境は以下の通りです。
Meadow-3.00-r3888-1(NetInstall)

(Meadow-version)
"Meadow-3.00-dev (KIKU)"
(emacs-version)
"GNU Emacs 22.0.50.1 (i386-mingw-nt5.1.2600)
 of 2005-09-23 on CUBE"

cycle-mini.elは以下から取得。
http://joereiss.net/misc/cycle-mini.el

Attachments

mini_comp_gc.patch (0.5 kB) - added by fujii on 2005年10月03日 22時49分47秒.
Fminibuffer_complete_word で GCPRO するためのパッチ

Change History

2005年10月02日 15時05分10秒 changed by nana

r3894をMingwでコンパイルしてやってみました。backtraceは以下の通り。

Program received signal SIGSEGV, Segmentation fault.
0x77bf7372 in msvcrt!memmove () from /WINDOWS/system32/msvcrt.dll
(gdb) bt
#0  0x77bf7372 in msvcrt!memmove () from /WINDOWS/system32/msvcrt.dll
#1  0x010b85fc in copy_text (from_addr=0x0, to_addr=0x330f223 "", nbytes=19, from_multibyte=1,
    to_multibyte=1) at insdel.c:653
#2  0x010b989f in insert_from_string_1 (string=36919267, pos=0, pos_byte=0, nchars=19, nbytes=19,
    inherit=1, before_markers=0) at insdel.c:1128
#3  0x010baf69 in insert_from_string (string=36919267, pos=0, pos_byte=0, length=19,
    length_byte=19, inherit=1) at insdel.c:1064
#4  0x010d7b70 in Fminibuffer_complete_word () at minibuf.c:2349
#5  0x0100bd48 in Ffuncall (nargs=1, args=0x82f090) at eval.c:2874
#6  0x010d17b9 in Fcall_interactively (function=270591217, record_flag=270559657, keys=271528676)
    at callint.c:884
#7  0x01060106 in Fcommand_execute (cmd=270591217, record_flag=270559657, keys=270559657,
    special=270559657) at keyboard.c:9924
#8  0x01067143 in command_loop_1 () at keyboard.c:1792
#9  0x01009b94 in internal_condition_case (bfun=0x1066df0 <command_loop_1>, handlers=270561841,
    hfun=0x1060b50 <cmd_error>) at eval.c:1461
#10 0x0105aefe in command_loop_2 () at keyboard.c:1328
#11 0x01009ab9 in internal_catch (tag=270640897, func=0x105aed0 <command_loop_2>, arg=270559657)
    at eval.c:1220
#12 0x0105ac7e in command_loop () at keyboard.c:1295
#13 0x0105ad7f in recursive_edit_1 () at keyboard.c:1000
#14 0x010d4ebc in read_minibuf (map=269510197, initial=33225699, prompt=269752235, backup_n=0,
    expflag=0, histvar=270577513, histpos=0, defalt=33225699, allow_props=0,
    inherit_input_method=0, keep_all=0) at minibuf.c:700
#15 0x010d5a92 in Fcompleting_read (prompt=269752235, table=270633241, predicate=33225699,
    require_match=270559657, initial_input=33225699, hist=270577513, def=33225699,
    inherit_input_method=270559657) at minibuf.c:1749
#16 0x0104e136 in Fread_file_name (prompt=269752235, dir=270559657, default_filename=33225699,
    mustmatch=270559657, initial=270559657, predicate=270559657) at fileio.c:6439
#17 0x0100bca7 in Ffuncall (nargs=5, args=0x82f790) at eval.c:2896
#18 0x011138ad in Fbyte_code (bytestr=269671475, vector=270859196, maxdepth=40) at bytecode.c:690
#19 0x0100b698 in funcall_lambda (fun=270859172, nargs=2, arg_vector=0x82f870) at eval.c:3064
#20 0x0100b8b0 in apply_lambda (fun=270859172, args=268559397, eval_flag=1) at eval.c:2986
#21 0x0100ac82 in Feval (form=268559381) at eval.c:2277
#22 0x010d2229 in Fcall_interactively (function=270622081, record_flag=270559657, keys=271528676)
    at callint.c:384
#23 0x01060106 in Fcommand_execute (cmd=270622081, record_flag=270559657, keys=270559657,
    special=270559657) at keyboard.c:9924
#24 0x01067143 in command_loop_1 () at keyboard.c:1792
#25 0x01009b94 in internal_condition_case (bfun=0x1066df0 <command_loop_1>, handlers=270561841,
    hfun=0x1060b50 <cmd_error>) at eval.c:1461
#26 0x0105aefe in command_loop_2 () at keyboard.c:1328
#27 0x01009ab9 in internal_catch (tag=270663961, func=0x105aed0 <command_loop_2>, arg=270559657)
    at eval.c:1220
#28 0x0105acde in command_loop () at keyboard.c:1307
#29 0x0105ad7f in recursive_edit_1 () at keyboard.c:1000
#30 0x0105aeac in Frecursive_edit () at keyboard.c:1061
#31 0x01002c20 in main (argc=2, argv=0xa726b0) at emacs.c:1907

2005年10月03日 00時00分10秒 changed by miyoshi <miyoshi@meadowy.org>

手元の環境では再現しません。再現方法をもう少し詳しく教えてください。

  • どのディレクトリでも発生しますか?
  • C-x C-fの後に具体的にどのような操作をすると落ちますか?

2005年10月03日 12時05分39秒 changed by nana

completionするファイルの数とかに依存しているような感じです。
以下の手順で再現します。

  1. カレントディレクトリ(RunMW32のショートカットの作業フォルダ)に、ChangeLog?0~ChangeLog?30まで31個のファイルを作成
  2. RunMW32 -qで起動
  3. 画面のタイトルをドラッグして画面を移動
  4. *scratch*で(require 'cycle-mini)C-j
  5. C-x C-f c h [space]
  6. C-g
  7. 5,6を3回くらい繰り返すと、[space]の時に落ちる

上記を、カレントディレクトリ下のworkディレクトリでやると、5.のc h の後の[space]で落ちる。
(5. は C-x C-f w [space] c h [space]となる)

同様の事を、ChangeLog?0~ChangeLog?10の11個のファイルでやると落ちない。

2005年10月03日 12時52分51秒 changed by nana

マシン環境を書くのを忘れてました。以下の2つです。

  • Windows XP Professional SP2 / Pentium 4 3.2G Hyper Thread / Memory 1G
  • Windows XP Professional SP2 / Celeron 2.4G / Memory 1G

2005年10月03日 14時04分05秒 changed by gotoh

上の再現手順でmsvc ビルドのmeadow (r3894)でも発生しました。3回目で。

2005年10月03日 22時48分08秒 changed by fujii

私の環境(Cygwin でビルド)でも再現できましたので、調べてみました。

Fminibuffer_complete_word() から呼び出されている del_range() で GC が発生し、ローカル変数 complete が破壊されていました。

破壊されたオブジェクト complete を insert_from_string() の引数として渡してしまったため、内部でエラーが発生しています。

添付のパッチのように GCPRO すれば落ちなくなるはずです。私の環境では 3 回目の [space] で現象が発生していましたが、この修正によって発生しなくなりました。

2005年10月03日 22時49分47秒 changed by fujii

  • attachment mini_comp_gc.patch added.

Fminibuffer_complete_word で GCPRO するためのパッチ

2005年10月04日 07時10分25秒 changed by miyoshi <miyoshi@meadowy.org>

やはりGCが原因でしたか。 http://miyoshi.meadowy.org/dev/gc-candidate.txt によると、del_range() は確かに GC を起こす可能性があります。

これは GNU Emacs でも再現する可能性が高そうです。 再現することを確認してから、emacs-devel か emasc-pretest-bug に報告した方がよいでしょう。

2005年10月04日 21時14分27秒 changed by gotoh

私のところでも症状が解消できたのを確認。

それはともかくcommitしちゃいましょ。

2005年10月05日 07時15分25秒 changed by fujii

とりあえず commit しました。

NTEmacs では再現しないみたいですね(少なくともMeadowと同じ手順では)。再現する Emacsen を利用されている方はご報告いただけると助かります。

2005年10月06日 08時35分26秒 changed by nana

r3896 (NetInstall)で再現しないことを確認しました。

2005年10月15日 10時03分52秒 changed by miyoshi

  • status changed from new to closed.
  • resolution set to fixed.

修正済みなのでクローズ。

Emacs での再現方法が分かったら本家に報告しましょう。


Add/Change #183 (Meadow3.00のファイル名のcompletionで落ちる)




Change Properties
Action