最適化?(手間が増えてるように見える)によって前に飛ばされてたんですね。
そこまで気が回ってませんでした。再現しない事を確認したので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.