長いファイル名で落ちるNo.14628
しろうず さん 03/05/09 22:15
 
別件で調査中にたまたま発見したことですが...

秀丸v3.19 + WinXP の NTFS 上で、
C:\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.txt('a'は250個)

という、ファイル名長制限ギリギリに近い、空のファイルを
作った後に秀丸で開き、文字を入力しようとすると、20文字
程度入れた時点で、秀丸が落ちてしまうようですね。
(何度か試した範囲では、100% 再現性があります)

現実にはほとんど影響はなさそうな問題ですけど。

[ ]
RE:14628 長いファイル名で落ちるNo.14637
秀丸担当 さん 03/05/12 18:53
 
>秀丸v3.19 + WinXP の NTFS 上で、
>C:\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.txt('a'は250個)

全く同じようにしてやってみましたが、特に問題は起きませんでした。
ファイルを開く方法は、どのような方法でしょうか。

[ ]
RE:14637 長いファイル名で落ちるNo.14642
しろうず さん 03/05/13 11:23
 
・Explore からダブルクリック
・既存の秀丸にドラッグ&ドロップ
・秀丸メニューの「ファイルを開く」

どれを選んでも発生しますので、開き方は関係ないようです。
以下の0バイトのファイルを作成し、秀丸で開いて、aaaa...と入力すると、20文字程
度入力した段階で落ちます。

c:\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaa.txt

なお、落ちたときの画面を以下に載せておきました。
http://www.asahi-net.or.jp/~vz4h-sruz/hidemaru.png
0x61616161 という値は 'aaaa' ですので、おそらく、
buffer overflow の類が発生しているのではと思います。

この問題の対応中の出来事でした。とほほ。
http://www.forest.impress.co.jp/article/2003/05/12/ipmessenger203.html

[ ]
RE:14642 長いファイル名で落ちるNo.14643
ENCODINGSHIFTJIS さん 03/05/13 12:17
 
デスクトップに a{250}.TXT を作り開いてみました。
メモ帳正常。MIFES開かない。

秀丸「ファイル名が長すぎます」のダイアログが出たりする。
開ける場合もある、そのときは正常に入力編集できるが
保存は a{250} だけで拡張子が消えたりする。

ダイアログのタイプなど、設定のが関連するかも

MAXPATH はWin9x の方もあるからどうなんでしょう。


[ ]
RE:14643 長いファイル名で落ちるNo.14644
ももかず さん 03/05/13 13:07
 
しろうずさん、ENCODINGSHIFTJISさん、秀丸担当さん、こんにちは。
ももかずです。

記憶違いだったらすいません。
Windowsの場合、ファイル名などは、確かフルパスで約260文字だった
ような気がします。
a{250}.TXTの場合、ファイル名だけで250+4(拡張子)で254文字。
デスクトップにファイルを作成すると、仮にaさんのデスクトップで
"C:\Documents and Settings\a\デスクトップ"となり40文字。
従ってフルパスにすると、あわせて約300文字になります。
VC++6.0のヘッダファイルを検索してみましたが、MAX_PATHは260に
なっていました。
フルパス260文字の制限があるのであれば、どのような動き方になって
もおかしくないような気がしますが...。
実際どうなんでしょう?

[ ]
RE:14644 長いファイル名で落ちるNo.14647
しろうず さん 03/05/13 20:15
 
>フルパス260文字の制限があるのであれば、どのような動き方になって
>もおかしくないような気がしますが...。

MAX_PATH を越えようが超えまいが、入力途中で buffer overflow
するような挙動ではまずい、ということはお分かりでしょうか?

[ ]
RE:14642 長いファイル名で落ちるNo.14648
elbow さん 03/05/14 00:43
 
こんにちは。
[その他]->[動作環境]->[自動保存]->[テンポラリファイルに自動保存]
になってたりはしませんよね?

この状態で再現できる(260を超えるので当たり前)ことは出来ましたが
それ以外では再現させることは出来ませんでした。

[ ]
RE:14648 長いファイル名で落ちるNo.14649
秀丸担当 さん 03/05/14 09:41
 
>[その他]->[動作環境]->[自動保存]->[テンポラリファイルに自動保存]
>になってたりはしませんよね?

これを有効にすることで再現することができました。
次のバージョンでは修正されます。

[ ]
RE:14647 長いファイル名で落ちるNo.14650
ももかず さん 03/05/14 10:13
 
しろうずさん、こんにちは。ももかずです。

>>フルパス260文字の制限があるのであれば、どのような動き方になって
>>もおかしくないような気がしますが...。
>
>MAX_PATH を越えようが超えまいが、入力途中で buffer overflow
>するような挙動ではまずい、ということはお分かりでしょうか?

まずいということはわかります。
もしこの制限があったとするならば、自動保存の動作によっては、
オーバーフローが発生してしまったりするのでは?と思ったので
投稿してみただけです。
ちょっといい加減な発言でしたね。
お気に召さなかったのであれば、すいません。

[ ]
RE:14648 長いファイル名で落ちるNo.14653
しろうず さん 03/05/14 15:49
 
>こんにちは。
>[その他]->[動作環境]->[自動保存]->[テンポラリファイルに自動保存]
>になってたりはしませんよね?

鋭いですね。そのとおりです。

>この状態で再現できる(260を超えるので当たり前)ことは出来ましたが
>それ以外では再現させることは出来ませんでした。

えーっと、その場合に爆死してしまうのは、仕様として「当たり前」
ではないですよね。

もし秀丸が、そういう状況を想定していた場合は、
「テンポラリファイルは作らない」(場合によっては警告)
「一部を省略した名前でテンポラリを作る」
などの動作をしたはずで、たぶん、この状況は、想定範囲外
だっただけだと思いますよ。

[ ]
RE:14649 長いファイル名で落ちるNo.14654
しろうず さん 03/05/14 15:50
 
>これを有効にすることで再現することができました。
>次のバージョンでは修正されます。

対応ありがとうございます。

ついでに、別件ですが、UNICODE(でしか表現できない)
文字を含むファイルも開けるようにできると嬉しいのですが(^^;

[ ]
RE:14650 長いファイル名で落ちるNo.14655
しろうず さん 03/05/14 16:17
 
>ちょっといい加減な発言でしたね。
>お気に召さなかったのであれば、すいません。

あ、いえいえ。
こちらもちょっと表現がわるかったかもしれません。
お気になさらずに。

[ ]
RE:14653 長いファイル名で落ちるNo.14663
elbow さん 03/05/14 20:24
 
こんにちは。

すいません。わかりづらくて。
「260以上を指定すると秀丸が落ちる」という問題があることが
前提で、(tempを通常のpathにしていれば)260以上を指定することになる
ので(問題が再現するのは)当たり前だろうという意味です。

しろうずさんの設定が私があげた設定と同じということなので、
再現条件が特定できて良かったです。

[ ]
RE:14663 長いファイル名で落ちるNo.14665
たけのこ さん 03/05/15 09:06
 
たけのこです。

> 「260以上を指定すると秀丸が落ちる」という問題があることが
> 前提で、(tempを通常のpathにしていれば)260以上を指定することになる
> ので(問題が再現するのは)当たり前だろうという意味です。

しろうずさんは『問題を「当たり前」でとどめるのは問題でしょ? フォールト
トレランスがないよ』と言っているんじゃないですか? 開発者でいらっしゃる
ようなので、当然の発言だと思いますが。

・そのようなことをすれば問題が発生して当然

を突き進めて

・如何にして『そのようなこと』を防ぐか(フールプルーフ)
・如何にして『問題の発生』を防ぐか(フォールトトレランス)
・如何にして問題が発生しても、『安全側に稼働』させるか(フェールセーフ)

っちゅうのは、開発者としてはそれぞれやり方なりポリシーがあるもんです。一
番の難題は『どのような問題が存在しうるか』を列挙することなのですが……。

(^^)/”

[ ]
RE:14665 長いファイル名で落ちるNo.14666
アルビレオ さん 03/05/15 12:30
 
アルビレオです。

>> 「260以上を指定すると秀丸が落ちる」という問題があることが
>> 前提で、(tempを通常のpathにしていれば)260以上を指定することになる
>> ので(問題が再現するのは)当たり前だろうという意味です。
>
>しろうずさんは『問題を「当たり前」でとどめるのは問題でしょ? フォールト
>トレランスがないよ』と言っているんじゃないですか? 開発者でいらっしゃる
>ようなので、当然の発言だと思いますが。

単純に
原因追求の結果としての「(これではトラブルが起きるのは)あたりまえ」とい
うつもりで書いているものを、しろうずさんが「(仕様として)あたりまえ」と
解釈してしまっただけの話です。
実際には「このままでいい」というようなことは誰ひとり発言していないし、考
えていないのでは。

誤解を招きやすいやりとりでしたが、ちょっとしろうずさんが先読みしすぎたよ
うな感じはします。
しろうずさんの発言もそれ自体間違っているわけでもないし(認識不足の人に
「あたりまえ」で放置されたりして苦労した経験があるんだろうなぁ)と思うだ
けで、決して非難しているわけではありません。
私もこういう勘違いはよくやりますので。

[ ]
RE:14666 長いファイル名で落ちるNo.14667
しろうず さん 03/05/15 16:55
 
その分析にはちょいと疑問もありますが(笑)、ともあれ、
elbowさんの指摘が、この問題の解析に一番役に立ったわけで、
elbowさんには感謝しています。

[ ]
RE:14667 長いファイル名で落ちるNo.14668
アルビレオ さん 03/05/15 17:28
 
アルビレオです。

>その分析にはちょいと疑問もありますが(笑)

ここまで勝手な憶測を書いてたら、人のことは言えませんね。(笑
どーもすみません

[ ]