Ruby Issue Tracking System: Issues
https://bugs.ruby-lang.org/
https://bugs.ruby-lang.org/favicon.ico?1711330511
2013-01-03T01:42:12Z
Ruby Issue Tracking System
Redmine
Ruby master - Bug #7646 (Closed): String#each_lineでinvalid byte sequence
https://bugs.ruby-lang.org/issues/7646
2013-01-03T01:42:12Z
yoshidam (Yoshida Masato)
yoshidamx@gmail.com
<p>=begin<br>
String#each_lineでセパレータを指定したときにASCII以外の文字でinvalid byte sequenceが発生します。</p>
<p>$ ruby -ve '"\n\u0100".each_line("\n") {|l| p l }'<br>
ruby 2.0.0dev (2013-01-02 trunk 38676) [i686-linux]<br>
"\n"<br>
-e:1:in <code>each_line': invalid byte sequence in UTF-8 (ArgumentError) from -e:1:in </code>'</p>
<p>r38616あたりの変更で入ったバグのようです。</p>
<p> <br>
--- string.c.org 2012-12-27 21:57:07.000000000 +0900<br>
+++ string.c 2013-01-02 23:36:47.000000000 +0900<br>
@@ -6199,14 +6199,14 @@<br>
if (c == newline &&<br>
(rslen <= 1 ||<br>
(pend - p >= rslen && memcmp(RSTRING_PTR(rs), p, rslen) == 0))) {</p>
<ul>
<li>
<pre><code> p += (rslen ? rslen : n);
</code></pre>
</li>
<li>
<pre><code> line = rb_str_subseq(str, s - ptr, p - s);
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> const char *pp = p + (rslen ? rslen : n);
</code></pre>
</li>
<li>
<pre><code> line = rb_str_subseq(str, s - ptr, pp - s);
if (wantarray)
rb_ary_push(ary, line);
else
rb_yield(line);
str_mod_check(str, ptr, len);
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> s = p;
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> s = pp;
}
p += n;
</code></pre>
}</li>
</ul>
<p>=end</p>
Backport193 - Backport #7333 (Closed): VS2012でリンクエラー
https://bugs.ruby-lang.org/issues/7333
2012-11-12T11:06:14Z
yoshidam (Yoshida Masato)
yoshidamx@gmail.com
<p>=begin<br>
VS2012でビルドすると未解決のシンボルでリンクエラーになります。</p>
<p>generating x64-msvcr110-ruby200.def<br>
linking import-library x64-msvcr110-ruby200.lib<br>
ライブラリ x64-msvcr110-ruby200.lib とオブジェクト x64-msvcr110-ruby200.exp を作成中<br>
compiling x64-msvcr110-ruby200.rc<br>
dmyext.obj<br>
linking shared-library x64-msvcr110-ruby200.dll<br>
ライブラリ dummy.lib とオブジェクト dummy.exp を作成中<br>
dummy.exp : error LNK2001: 外部シンボル "_xmm@7fffffffffffffff7fffffffffffffff" は未解決です。<br>
x64-msvcr110-ruby200.dll : fatal error LNK1120: 1 件の未解決の外部参照</p>
<p>dumpbin.exeの出力フォーマットが多少変更されたため不要なシンボルが.defファイルに出力されるようです。</p>
<p>diff -u win32/mkexports.rb.org win32/mkexports.rb<br>
--- win32/mkexports.rb.org 2012-11-12 09:55:13.210314600 +0900<br>
+++ win32/mkexports.rb 2012-11-12 10:19:47.935357700 +0900<br>
@@ -115,7 +115,7 @@<br>
next unless l.sub!(/.*?\s(()\s+)?External\s+|\s+/, '')<br>
is_data = !$1<br>
if noprefix or /^[@_]/ =~ l</p>
<ul>
<li>
<pre><code> next if /(?!^)@.*@/ =~ l || /@[[:xdigit:]]{8,16}$/ =~ l ||
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> next if /(?!^)@.*@/ =~ l || /@[[:xdigit:]]{8,32}$/ =~ l ||
/^_?(?:Init_|.*_threadptr_|DllMain\b)/ =~ l
l.sub!(/^[@_]/, '') if /@\d+$/ !~ l
elsif !l.sub!(/^(\S+) \([^@?\`\']*\)$/, '\1')
</code></pre>
</li>
</ul>
<p>=end</p>
Ruby master - Bug #7332 (Closed): mswin64でminiruby.exeがSEGV
https://bugs.ruby-lang.org/issues/7332
2012-11-12T10:50:57Z
yoshidam (Yoshida Masato)
yoshidamx@gmail.com
<p>=begin<br>
VS2012でmswin64のビルド中にminiruby.exeがSEGVし、ビルドに失敗します。</p>
<p>CC = cl -nologo<br>
LD = cl -nologo<br>
LDSHARED = cl -nologo -LD<br>
CFLAGS = -MD -Zi -W2 -wd4996 -we4028 -we4142 -O2sy- -Zm600<br>
XCFLAGS = -DRUBY_EXPORT -I. -I.ext/include/x64-mswin64_110 -I./include -I. -I./missing<br>
CPPFLAGS = -D_WIN32_WINNT=0x0602<br>
DLDFLAGS = -incremental:no -debug -opt:ref -opt:icf -dll<br>
SOLIBS =<br>
./tool/mkconfig.rb:4: [BUG] Segmentation fault<br>
ruby 2.0.0dev (2012-11-11) [x64-mswin64_110]</p>
<p>-- Control frame information -----------------------------------------------<br>
c:0002 p:0011 s:0025 e:001440 EVAL ./tool/mkconfig.rb:4 [FINISH]<br>
c:0001 p:0000 s:0002 e:001468 TOP [FINISH]</p>
<p>./tool/mkconfig.rb:4:in `'</p>
<p>-- C level backtrace information -------------------------------------------<br>
C:\Windows\SYSTEM32\ntdll.dll(NtWaitForSingleObject+0xa) [0x000007F860092C2A]<br>
C:\Windows\system32\KERNELBASE.dll(WaitForSingleObjectEx+0x9a) [0x000007F85D0910EA]<br>
C:\Users\yoshidam\ruby-trunk\miniruby.exe(rb_vm_bugreport+0x94) [0x000007F6ADC306EC] c:\users\yoshidam\ruby-trunk\vm_dump.c:668<br>
C:\Users\yoshidam\ruby-trunk\miniruby.exe(report_bug+0x112) [0x000007F6ADB67A7E] c:\users\yoshidam\ruby-trunk\error.c:308<br>
C:\Users\yoshidam\ruby-trunk\miniruby.exe(rb_bug+0x49) [0x000007F6ADB66BF5] c:\users\yoshidam\ruby-trunk\error.c:329<br>
C:\Users\yoshidam\ruby-trunk\miniruby.exe(sigsegv+0x48) [0x000007F6ADBE1F7C] c:\users\yoshidam\ruby-trunk\signal.c:607<br>
C:\Windows\SYSTEM32\MSVCR110.dll(XcptFilter+0x1a9) [0x000007F85132F2B5]<br>
C:\Users\yoshidam\ruby-trunk\miniruby.exe(__tmainCRTStartup$filt$0+0x16) [0x000007F6ADC44E91] f:\dd\vctools\crt_bld\self_64_amd64\crt\src\crtexe.c:553<br>
C:\Windows\SYSTEM32\MSVCR110.dll(_C_specific_handler+0x93) [0x000007F85132E66F]<br>
C:\Windows\SYSTEM32\ntdll.dll(RtlLookupFunctionEntry+0x26d) [0x000007F8600B464D]<br>
C:\Windows\SYSTEM32\ntdll.dll(DbgPrint+0x47c) [0x000007F8600B567C]<br>
C:\Windows\SYSTEM32\ntdll.dll(KiUserExceptionDispatcher+0x2e) [0x000007F860094BBA]<br>
C:\Users\yoshidam\ruby-trunk\miniruby.exe(rb_gvar_get+0x0) [0x000007F6ADC0FA74] c:\users\yoshidam\ruby-trunk\variable.c:722<br>
C:\Users\yoshidam\ruby-trunk\miniruby.exe(vm_exec_core+0x552) [0x000007F6ADC2A112] c:\users\yoshidam\ruby-trunk\vm.inc:332<br>
C:\Users\yoshidam\ruby-trunk\miniruby.exe(vm_exec+0xa9) [0x000007F6ADC296D9] c:\users\yoshidam\ruby-trunk\vm.c:1159<br>
C:\Users\yoshidam\ruby-trunk\miniruby.exe(rb_iseq_eval_main+0x7c) [0x000007F6ADC24B18] c:\users\yoshidam\ruby-trunk\vm.c:1402<br>
C:\Users\yoshidam\ruby-trunk\miniruby.exe(ruby_exec_internal+0xb1) [0x000007F6ADB6ACE5] c:\users\yoshidam\ruby-trunk\eval.c:251<br>
C:\Users\yoshidam\ruby-trunk\miniruby.exe(ruby_exec_node+0x1d) [0x000007F6ADB6AD35] c:\users\yoshidam\ruby-trunk\eval.c:312<br>
C:\Users\yoshidam\ruby-trunk\miniruby.exe(ruby_run_node+0x30) [0x000007F6ADB6AF88] c:\users\yoshidam\ruby-trunk\eval.c:303<br>
C:\Users\yoshidam\ruby-trunk\miniruby.exe(main+0x40) [0x000007F6ADB41040] c:\users\yoshidam\ruby-trunk\main.c:38<br>
C:\Users\yoshidam\ruby-trunk\miniruby.exe(__tmainCRTStartup+0x10f) [0x000007F6ADC44B2F] f:\dd\vctools\crt_bld\self_64_amd64\crt\src\crtexe.c:536<br>
C:\Windows\system32\KERNEL32.DLL(BaseThreadInitThunk+0x1a) [0x000007F85D9F167E]</p>
<p>-- Other runtime information -----------------------------------------------</p>
<ul>
<li>
<p>Loaded script: ./tool/mkconfig.rb</p>
</li>
<li>
<p>Loaded features:</p>
</li>
</ul>
<p>0 enumerator.so</p>
<p>GENTRY型の大きさが32ビットのため、rb_gvar_getの引数entryの上位32ビットが失われているためと思われます。</p>
<p>diff -u vm_exec.h.org vm_exec.h<br>
--- vm_exec.h.org 2012-11-12 09:56:53.944698400 +0900<br>
+++ vm_exec.h 2012-11-12 10:08:07.652124000 +0900<br>
@@ -14,7 +14,7 @@</p>
<p>typedef long OFFSET;<br>
typedef unsigned long lindex_t;<br>
-typedef rb_num_t GENTRY;<br>
+typedef VALUE GENTRY;<br>
typedef rb_iseq_t *ISEQ;</p>
<p>#ifdef <strong>GCC</strong><br>
=end</p>