Bug #2369
ENV's strange behavior on WinXP
| Status: | Rejected | Start date: | 11/15/2009 | |
|---|---|---|---|---|
| Priority: | Low | Due date: | ||
| Assignee: | % Done: | 0% |
||
| Category: | core | |||
| Target version: | 2.0.0 | |||
| ruby -v: | ruby 1.9.2dev (2009-11-14 trunk 25768) [i386-mingw32] |
Description
Windows XP SP2 環境の Mingw で、環境変数に最大文字数に近い長さの値か または最大文字数を超えた長さの値を設定しようとした場合の挙動がおかしいようです。 確認用のスクリプトを添付します。 スクリプトのコメントに書きましたとおり、 32767 文字よりやや短い値をセットすると値が正しく取り出せません。 GetEnvironmentVariableAで確認すると正しく取り出せているようです。 また、32767 文字を超えた値を何度もセットすると SEGV します。 恐らくこのために、make test-all が TestRequire#test_require_too_long_filename か あるいは数個先の TestRipper_Generic#test_parse_files 等で落ちます。 根本的には前者は kernel32.dll、後者は msvcrt.dll のバグだとは思うのですが、 よろしければ対策をお願いいたします。
History
Updated by usa (Usaku NAKAMURA) over 2 years ago
- Status changed from Open to Assigned
- Assignee set to usa (Usaku NAKAMURA)
Updated by usa (Usaku NAKAMURA) over 2 years ago
(単なるメモです) Windows 7でrubyのバージョンによらず再現せず。
Updated by usa (Usaku NAKAMURA) over 2 years ago
(単なるメモです) XP SP3で確認。 msvcrtは関係なし。GetEnvironmentStrings()らしい。
Updated by usa (Usaku NAKAMURA) over 2 years ago
(単なるメモです) 前者はGetEnvironmentStringsA()のバグ。Wを使えば回避可能ではある。 後者はさっきのは私の勘違いで、msvcrtのputenv()のバグ。1.9.1ではputenv()使ってないので落ちはしない。
Updated by usa (Usaku NAKAMURA) over 2 years ago
- Priority changed from Normal to Low
Updated by usa (Usaku NAKAMURA) over 2 years ago
(単なるメモです) Vistaでも問題なし。 対応すべきかどうか微妙になってきました。
Updated by wanabe (_ wanabe) about 2 years ago
Vista/7 で再現しないことと、32767 文字近い環境変数など普通は扱わないこと、 実用的なケースでこの件が問題になったわけでなくテストケース上だけだということを考えると Reject が妥当のように思えてきましたのでそうします。 失礼しました。
Updated by wanabe (_ wanabe) about 2 years ago
- Status changed from Assigned to Rejected