[#34647] fork 不可能な環境での test_argv0_noarg — wanabe <s.wanabe@...>

ワナベと申します。

13 messages 2008/05/11
[#34667] Re: fork 不可能な環境での test_argv0_noarg — Yukihiro Matsumoto <matz@...> 2008/05/13

まつもと ゆきひろです

[#34742] Ruby 1.8.7-preview3 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.7-preview3 をリリースしました。

14 messages 2008/05/18
[#34744] Re: [ruby-list:44957] Ruby 1.8.7-preview3 has been released — Takahiro Kambe <taca@...> 2008/05/19

お疲れ様です。

[#34800] Windows2000上でtrunkがビルドできない — KIMURA Koichi <kimura.koichi@...>

木村です。

18 messages 2008/05/22
[#34801] Re: Windows2000上でtrunkがビルドできない — "U.Nakamura" <usa@...> 2008/05/22

こんにちは、なかむら(う)です。

[#34824] Re: Windows2000上でtrunkがビルドできない — KIMURA Koichi <kimura.koichi@...> 2008/05/23

木村です。

[#34850] Re: Windows2000上でtrunkがビルドできない — KIMURA Koichi <kimura.koichi@...> 2008/05/26

木村です。

[#34854] Re: Windows2000上でtrunkがビルドできない — "U.Nakamura" <usa@...> 2008/05/26

こんにちは、なかむら(う)です。

[#34889] Ruby 1.8.7-preview4 test-all failed in OpenSSL::TestSSL — Nobuhiro IMAI <nov@...>

いまいです。

10 messages 2008/05/29

[ruby-dev:34824] Re: Windows2000上でtrunkがビルドできない

From: KIMURA Koichi <kimura.koichi@...>
Date: 2008-05-23 07:23:23 UTC
List: ruby-dev #34824
木村です。

On Thu, 22 May 2008 17:12:08 +0900
"U.Nakamura" <usa@garbagecollect.jp> wrote:

> In message "[ruby-dev:34800] Windows2000上でtrunkがビルドできない"
>     on May.22,2008 16:48:54, <kimura.koichi@canon.co.jp> wrote:
> > 自分の環境(VC 7.1 on Windows 2000)だと、5/9あたりからtrunkのビルドに
> > 失敗するようになっています。
> > ただし、VC 7.1 on Windows xp でも試したのですがこちらでは正常にビルド
> > できています。ですので参考情報程度に考えてください。
> 
> VC 7.1 on Vistaで試しましたが、とりあえずnmake installまでは
> 成功しました。うーん。
> 
> 
> > NTDLL! 77fcc83d()
> > MSVCRT! 78001e00()
> > ruby_xfree(void * 0x013a4758) line 425 + 26 bytes
> (ry
> > 
> > 最終的にはWindowsのカーネルの中で死んでるみたいですが、どうもよくわかり
> > ません。
> > #メモリアリーナがどこかでぶっ壊されてたりするんでしょうか?
> 
> free()の中で死んでるので、そういう話なんだろうという気はしま
> す。
> 他の環境で再現しないと厳しいですねえ。

はい。
とりあえず次にどこかの環境で発生したときに何か参考になればと思いまして。

と書いたところでひとつわかったことがあります。

file.c に対して、

#if USE_NTFS
...
#endif 

となっている箇所が9箇所ありますが、この中の以下の部分に関して
コンパイルされないようにすると(たとえば #if USE_NTFS && 0 とかにする)、
nmake install でもこけないようになりました。

ここで使われているコードの何が悪いのか(影響しているのか)は
これから調べますが、まずは報告まで。

file_expand_path(VALUE fname, VALUE dname, VALUE result)

#if USE_NTFS
    *p = '\0';
    if (1 &&
#ifdef __CYGWIN__
	!(buf[0] == '/' && !buf[1]) &&
#endif
	!strpbrk(b = buf, "*?")) {
	size_t len;
	WIN32_FIND_DATA wfd;
#ifdef __CYGWIN__
	int lnk_added = 0, is_symlink = 0;
	struct stat st;
	char w32buf[MAXPATHLEN], sep = 0;
	p = 0;
	if (lstat(buf, &st) == 0 && S_ISLNK(st.st_mode)) {
	    is_symlink = 1;
	    p = strrdirsep(buf);
	    if (!p) p = skipprefix(buf);
	    if (p) {
		sep = *p;
		*p = '\0';
	    }
	}
	if (cygwin_conv_to_win32_path(buf, w32buf) == 0) {
	    b = w32buf;
	}
	if (p) *p = sep;
	else p = buf;
	if (is_symlink && b == w32buf) {
	    len = strlen(p);
	    if (len > 4 && STRCASECMP(p + len - 4, ".lnk") != 0) {
		lnk_added = 1;
		strlcat(w32buf, ".lnk", sizeof(w32buf));
	    }
	}
#endif
	HANDLE h = FindFirstFile(b, &wfd);
	if (h != INVALID_HANDLE_VALUE) {
	    FindClose(h);
	    p = strrdirsep(buf);
	    len = strlen(wfd.cFileName);
#ifdef __CYGWIN__
	    if (lnk_added && len > 4 &&
		STRCASECMP(wfd.cFileName + len - 4, ".lnk") == 0) {
		len -= 4;
	    }
#endif
	    if (!p) p = buf;
	    buflen = ++p - buf + len;
	    rb_str_resize(result, buflen);
	    memcpy(p, wfd.cFileName, len + 1);
	}
    }
#endif


-- 
木村浩一


In This Thread