Project

General

Profile

Bug #11244

[BUG] rb_gc_mark(): 0x00000001f34020 is T_NONE

Added by usa (Usaku NAKAMURA) about 4 years ago. Updated almost 4 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.3.0dev (2015-06-06 trunk 50787) [x64-mswin64_100]
[ruby-dev:49049]

Description

mswinのCIでたまに出てます。発生頻度は一割くらいでしょうか。
(参考: http://ruby-mswin.cloudapp.net/vc10-x64/ruby-trunk/log/20150605T234126Z.log.html.gz )
これが [ruby-dev:49040] の「なんかやばい気がするエラー」ですかね。

初検出はr50787のようですが、もちろん原因はもっと前にあると思われます。

Associated revisions

Revision 8b0cfe90
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (gc_mark_ptr): add a check code for #11244. It should be removed later. But we can remain this check because it is only a branch.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51010 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 51010
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (gc_mark_ptr): add a check code for #11244. It should be removed later. But we can remain this check because it is only a branch.

Revision 51010
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (gc_mark_ptr): add a check code for #11244. It should be removed later. But we can remain this check because it is only a branch.

Revision 51010
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (gc_mark_ptr): add a check code for #11244. It should be removed later. But we can remain this check because it is only a branch.

Revision 51010
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (gc_mark_ptr): add a check code for #11244. It should be removed later. But we can remain this check because it is only a branch.

Revision 51010
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (gc_mark_ptr): add a check code for #11244. It should be removed later. But we can remain this check because it is only a branch.

Revision 4a8b0481
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (gc_mark_children): add additional debug code for #11244.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51012 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 51012
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (gc_mark_children): add additional debug code for #11244.

Revision 51012
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (gc_mark_children): add additional debug code for #11244.

Revision 51012
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (gc_mark_children): add additional debug code for #11244.

Revision 51012
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (gc_mark_children): add additional debug code for #11244.

Revision 51012
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (gc_mark_children): add additional debug code for #11244.

Revision 9a263871
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (RGENGC_OBJ_INFO, obj_info): add a macro to enable/disable rich obj_info() output. At the default, the value of RGENGC_OBJ_INFO is (RGENGC_DEBUG | RGENGC_CHECK_MODE).
  • gc.c (RGENGC_OBJ_INFO): force enable it to debug #11244.
  • gc.c (gc_mark_ptr): print more details with obj_info().
  • gc.c (gc_mark_children): remove useless debug prints.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51018 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 51018
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (RGENGC_OBJ_INFO, obj_info): add a macro to enable/disable rich obj_info() output. At the default, the value of RGENGC_OBJ_INFO is (RGENGC_DEBUG | RGENGC_CHECK_MODE).
  • gc.c (RGENGC_OBJ_INFO): force enable it to debug #11244.
  • gc.c (gc_mark_ptr): print more details with obj_info().
  • gc.c (gc_mark_children): remove useless debug prints.

Revision 51018
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (RGENGC_OBJ_INFO, obj_info): add a macro to enable/disable rich obj_info() output. At the default, the value of RGENGC_OBJ_INFO is (RGENGC_DEBUG | RGENGC_CHECK_MODE).
  • gc.c (RGENGC_OBJ_INFO): force enable it to debug #11244.
  • gc.c (gc_mark_ptr): print more details with obj_info().
  • gc.c (gc_mark_children): remove useless debug prints.

Revision 51018
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (RGENGC_OBJ_INFO, obj_info): add a macro to enable/disable rich obj_info() output. At the default, the value of RGENGC_OBJ_INFO is (RGENGC_DEBUG | RGENGC_CHECK_MODE).
  • gc.c (RGENGC_OBJ_INFO): force enable it to debug #11244.
  • gc.c (gc_mark_ptr): print more details with obj_info().
  • gc.c (gc_mark_children): remove useless debug prints.

Revision 51018
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (RGENGC_OBJ_INFO, obj_info): add a macro to enable/disable rich obj_info() output. At the default, the value of RGENGC_OBJ_INFO is (RGENGC_DEBUG | RGENGC_CHECK_MODE).
  • gc.c (RGENGC_OBJ_INFO): force enable it to debug #11244.
  • gc.c (gc_mark_ptr): print more details with obj_info().
  • gc.c (gc_mark_children): remove useless debug prints.

Revision 51018
Added by ko1 (Koichi Sasada) about 4 years ago

  • gc.c (RGENGC_OBJ_INFO, obj_info): add a macro to enable/disable rich obj_info() output. At the default, the value of RGENGC_OBJ_INFO is (RGENGC_DEBUG | RGENGC_CHECK_MODE).
  • gc.c (RGENGC_OBJ_INFO): force enable it to debug #11244.
  • gc.c (gc_mark_ptr): print more details with obj_info().
  • gc.c (gc_mark_children): remove useless debug prints.

Revision f4d71ad5
Added by ko1 (Koichi Sasada) about 4 years ago

  • vm_method.c: make a rb_method_definition_t data (def) after making a rb_method_entry_t data (me). Normally, me' pointsdef'. Some Ruby objects pointed from def' and objects are marked byme' (mark_method_entry() in gc.c). However, def' is built before making ame', then nobody can mark objects pointed from def' before making (and pointing from)me'. I hope this patch solve #11244.
  • vm_method.c: remove `rb_' prefix from some static functions.
  • method.h (rb_method_entry_create): constify
  • gc.c (mark_method_entry): add checking def' and def->body.iseq.iseqptr' availability because they can be NULL.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51026 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 51026
Added by ko1 (Koichi Sasada) about 4 years ago

  • vm_method.c: make a rb_method_definition_t data (def) after making a rb_method_entry_t data (me). Normally, me' pointsdef'. Some Ruby objects pointed from def' and objects are marked byme' (mark_method_entry() in gc.c). However, def' is built before making ame', then nobody can mark objects pointed from def' before making (and pointing from)me'. I hope this patch solve #11244.
  • vm_method.c: remove `rb_' prefix from some static functions.
  • method.h (rb_method_entry_create): constify
  • gc.c (mark_method_entry): add checking def' and def->body.iseq.iseqptr' availability because they can be NULL.

Revision 51026
Added by ko1 (Koichi Sasada) about 4 years ago

  • vm_method.c: make a rb_method_definition_t data (def) after making a rb_method_entry_t data (me). Normally, me' pointsdef'. Some Ruby objects pointed from def' and objects are marked byme' (mark_method_entry() in gc.c). However, def' is built before making ame', then nobody can mark objects pointed from def' before making (and pointing from)me'. I hope this patch solve #11244.
  • vm_method.c: remove `rb_' prefix from some static functions.
  • method.h (rb_method_entry_create): constify
  • gc.c (mark_method_entry): add checking def' and def->body.iseq.iseqptr' availability because they can be NULL.

Revision 51026
Added by ko1 (Koichi Sasada) about 4 years ago

  • vm_method.c: make a rb_method_definition_t data (def) after making a rb_method_entry_t data (me). Normally, me' pointsdef'. Some Ruby objects pointed from def' and objects are marked byme' (mark_method_entry() in gc.c). However, def' is built before making ame', then nobody can mark objects pointed from def' before making (and pointing from)me'. I hope this patch solve #11244.
  • vm_method.c: remove `rb_' prefix from some static functions.
  • method.h (rb_method_entry_create): constify
  • gc.c (mark_method_entry): add checking def' and def->body.iseq.iseqptr' availability because they can be NULL.

Revision 51026
Added by ko1 (Koichi Sasada) about 4 years ago

  • vm_method.c: make a rb_method_definition_t data (def) after making a rb_method_entry_t data (me). Normally, me' pointsdef'. Some Ruby objects pointed from def' and objects are marked byme' (mark_method_entry() in gc.c). However, def' is built before making ame', then nobody can mark objects pointed from def' before making (and pointing from)me'. I hope this patch solve #11244.
  • vm_method.c: remove `rb_' prefix from some static functions.
  • method.h (rb_method_entry_create): constify
  • gc.c (mark_method_entry): add checking def' and def->body.iseq.iseqptr' availability because they can be NULL.

Revision 51026
Added by ko1 (Koichi Sasada) about 4 years ago

  • vm_method.c: make a rb_method_definition_t data (def) after making a rb_method_entry_t data (me). Normally, me' pointsdef'. Some Ruby objects pointed from def' and objects are marked byme' (mark_method_entry() in gc.c). However, def' is built before making ame', then nobody can mark objects pointed from def' before making (and pointing from)me'. I hope this patch solve #11244.
  • vm_method.c: remove `rb_' prefix from some static functions.
  • method.h (rb_method_entry_create): constify
  • gc.c (mark_method_entry): add checking def' and def->body.iseq.iseqptr' availability because they can be NULL.

Revision c36c43dc
Added by ko1 (Koichi Sasada) almost 4 years ago

  • gc.c: remove `#define RGENGC_OBJ_INFO 1' line introduced to debug Bug #11244.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51108 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 51108
Added by ko1 (Koichi Sasada) almost 4 years ago

  • gc.c: remove `#define RGENGC_OBJ_INFO 1' line introduced to debug Bug #11244.

Revision 51108
Added by ko1 (Koichi Sasada) almost 4 years ago

  • gc.c: remove `#define RGENGC_OBJ_INFO 1' line introduced to debug Bug #11244.

Revision 51108
Added by ko1 (Koichi Sasada) almost 4 years ago

  • gc.c: remove `#define RGENGC_OBJ_INFO 1' line introduced to debug Bug #11244.

Revision 51108
Added by ko1 (Koichi Sasada) almost 4 years ago

  • gc.c: remove `#define RGENGC_OBJ_INFO 1' line introduced to debug Bug #11244.

Revision 51108
Added by ko1 (Koichi Sasada) almost 4 years ago

  • gc.c: remove `#define RGENGC_OBJ_INFO 1' line introduced to debug Bug #11244.

Revision 106f033b
Added by ko1 (Koichi Sasada) over 3 years ago

  • gc.c (gc_mark_ptr): remove debug code for #11244.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52336 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 52336
Added by ko1 (Koichi Sasada) over 3 years ago

  • gc.c (gc_mark_ptr): remove debug code for #11244.

Revision 52336
Added by ko1 (Koichi Sasada) over 3 years ago

  • gc.c (gc_mark_ptr): remove debug code for #11244.

Revision 52336
Added by ko1 (Koichi Sasada) over 3 years ago

  • gc.c (gc_mark_ptr): remove debug code for #11244.

Revision 52336
Added by ko1 (Koichi Sasada) over 3 years ago

  • gc.c (gc_mark_ptr): remove debug code for #11244.

Revision 52336
Added by ko1 (Koichi Sasada) over 3 years ago

  • gc.c (gc_mark_ptr): remove debug code for #11244.

Revision 1be5cb63
Added by ko1 (Koichi Sasada) over 3 years ago

  • gc.c (gc_mark_ptr): remove debug code for #11244.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52339 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 52339
Added by ko1 (Koichi Sasada) over 3 years ago

  • gc.c (gc_mark_ptr): remove debug code for #11244.

Revision 52339
Added by ko1 (Koichi Sasada) over 3 years ago

  • gc.c (gc_mark_ptr): remove debug code for #11244.

Revision 52339
Added by ko1 (Koichi Sasada) over 3 years ago

  • gc.c (gc_mark_ptr): remove debug code for #11244.

Revision 52339
Added by ko1 (Koichi Sasada) over 3 years ago

  • gc.c (gc_mark_ptr): remove debug code for #11244.

Revision 52339
Added by ko1 (Koichi Sasada) over 3 years ago

  • gc.c (gc_mark_ptr): remove debug code for #11244.

History

Updated by usa (Usaku NAKAMURA) about 4 years ago

  • Description updated (diff)

Updated by usa (Usaku NAKAMURA) about 4 years ago

同一の原因かどうかわかりませんが、OS XのCIでもT_NONEな[BUG]が出ているようです。
( http://rubyci.blob.core.windows.net/osx1010/ruby-trunk/log/20150612T094501Z.fail.html.gz )

こちらも r50842 で追加されたテストで検出できるようになっただけで、原因はずっと以前に存在するものと思われます。
今のところ再現率100%らしいので、攻めるならこちらからでしょうか。

Updated by usa (Usaku NAKAMURA) about 4 years ago

その後、かなり高い頻度で発生するようになっています。
毎回 gc_mark_stacked_objects_all() の呼び出しから起きていて、incremental では起きないようなので、たぶんなんかその場合のみ引っかかるオブジェクト絡みで根本的な欠陥があるのでしょう。

#4

Updated by ko1 (Koichi Sasada) almost 4 years ago

  • Status changed from Open to Closed

Applied in changeset r51108.


  • gc.c: remove `#define RGENGC_OBJ_INFO 1' line introduced to debug Bug #11244.
#5

Updated by wanabe (_ wanabe) almost 4 years ago

こんにちは。
この [BUG] が、2.2 で何かの拍子に起こったりはしないだろうか、ということが気になっています。

このチケットは今後バックポート対象になるでしょうか?
それとも、2.2(や 2.1)では起こらない現象なのでしょうか。

Also available in: Atom PDF