[#46807] [ruby-trunk - Bug #7625][Open] Arrayを継承したオブジェクトのcompactがArrayを返す — "mogya@... (Daisuke Furukawa)" <mogya@...>

19 messages 2012/12/26

[#46822] [ruby-trunk - Feature #7639][Open] More freedom for location of comments — "sawa (Tsuyoshi Sawada)" <sawadatsuyoshi@...>

14 messages 2012/12/30

[ruby-dev:46682] Re: [ruby-trunk - Bug #7468] GC_GUARD漏れもしくはmark漏れっぽいエラーが発生してます。

From: Masaya TARUI <tarui@...>
Date: 2012-12-02 02:52:31 UTC
List: ruby-dev #46682
最適化?(手間が増えてるように見える)によって前に飛ばされてたんですね。
そこまで気が回ってませんでした。再現しない事を確認したのでticketを閉じました。

修正ありがとうございます。


2012年12月2日 6:23 kosaki (Motohiro KOSAKI) <kosaki.motohiro@gmail.com>:
>
> Issue #7468 has been updated by kosaki (Motohiro KOSAKI).
>
>
> SET_MACHINE_STACK_ENDの実体が
>
> #if defined(__x86_64__) && defined(__GNUC__) && !defined(__native_client__)
> #define SET_MACHINE_STACK_END(p) __asm__ ("movq\t%%rsp, %0" : "=r" (*(p)))
>
> のように volatileなしasmで、かつオペランド制約にrspを使うということが一切記述されてないので
> どういう最適化されても文句はいえないのではないでしょうか。
>
> とりあえず r38134 で volatileつけときました。この結果アセンブリは
>
>     3f92:       e8 00 00 00 00          callq  3f97 <rb_threadptr_execute_interrupts+0x317>
>     3f97:       48 89 e0                mov    %rsp,%rax
>     3f9a:       49 8b 7c 24 08          mov    0x8(%r12),%rdi
>     3f9f:       49 89 84 24 b0 01 00    mov    %rax,0x1b0(%r12)
>     3fa6:       00
>     3fa7:       4c 89 e6                mov    %r12,%rsi
>     3faa:       e8 c1 fa ff ff          callq  3a70 <gvl_yield>
>
> という感じになって、意図した通り gvl_yield()の直前に%rspをメモリに書いているように見えます。問題が再現出来る人がいれば
> 誰か確認お願いできませんか。
>
> # たとえ直ってなくても r38134 は1.9.3にバックポート必要でしょうね。現状危なすぎる
>
> ----------------------------------------
> Bug #7468: GC_GUARD漏れもしくはmark漏れっぽいエラーが発生してます。
> https://bugs.ruby-lang.org/issues/7468#change-34296
>
> Author: tarui (Masaya Tarui)
> Status: Open
> Priority: High
> Assignee: authorNari (Narihiro Nakamura)
> Category: core
> Target version: 2.0.0
> ruby -v: ruby -v: ruby 2.0.0dev (2012-11-30 trunk 37999) [x86_64-linux]
>
>
> いつからかtest-allで時々エラーが発生するようになってます。
>
> make  test-all TESTS="-qv  -n /test_string\$$/"
>
> でsegvや
>   1) Error:
>  test_string(DL::TestFunc):
>  ArgumentError: assertion message must be String or Proc, but Thread::Backtrace was given.
> などと言われるようになりました。
> GC.stress = true なのと、Thread::Backtraceが通常のpassでは入る事はないっぽいのでGC周りのバグだと思います。
>
>
>
> --
> http://bugs.ruby-lang.org/
>



-- 
樽家昌也(Masaya TARUI)
No Tool,No Life.

In This Thread

Prev Next