Project

General

Profile

Actions

Backport #7629

closed

Segmentation fault

Added by atd (Antonio Tapiador) almost 10 years ago. Updated over 9 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
[ruby-core:51170]

Description

ruby 1.9.3p362 produces a segmentation fault in our tests in Travis.

You can find a full trace of the bug at https://travis-ci.org/ging/social_stream/jobs/3843546


Files

yorickpeterse_segfault_1_9_3p362.txt (35.4 KB) yorickpeterse_segfault_1_9_3p362.txt yorickpeterse (Yorick Peterse), 01/04/2013 04:38 AM

Related issues 2 (0 open2 closed)

Has duplicate Backport193 - Backport #7658: Rabbit が Ruby 1.9.3p362 で落ちるClosedActions
Has duplicate Backport193 - Backport #7669: Ruby 1.9.3p362 Segfaults on gem kaminari Model.page methodClosed01/07/2013Actions

Updated by gingerlime (Yoav Aner) almost 10 years ago

we're also seeing a very similar segmentation fault after upgrading to 1.9.3p362 with unicorn (rails 3.2.9, postgresql 9.2)

...
vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.9/lib/active_record/relation.rb:241: [BUG] Segmentation fault
ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux]

Updated by normalperson (Eric Wong) almost 10 years ago

"atd (Antonio Tapiador)" wrote:

https://bugs.ruby-lang.org/issues/7629

ruby 1.9.3p362 produces a segmentation fault in our tests in Travis.

You can find a full trace of the bug at https://travis-ci.org/ging/social_stream/jobs/3843546

Can you try reverting the vm.c change of r38314?
(I just identified with "git bisect", not sure what the correct fix is)

commit 190156054e33bc3b3bdd9e7965a1fe4a8cd50ebf
Author: usa
Date: Tue Dec 11 08:51:25 2012 +0000

 [Backport #5634]
 
 * vm.c (rb_vm_make_env_object): make Proc object if Env is possible
   to point block. [ruby-core:41038] [ruby-trunk - Bug #5634]
 
 * vm.c (rb_vm_make_proc): No need to make Proc object here.
 
 * bootstraptest/test_proc.rb: add tests.
 
 
 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@38314 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

diff --git a/vm.c b/vm.c
index 4dd242f..63141ba 100644
--- a/vm.c
+++ b/vm.c
@@ -467,30 +467,16 @@ vm_collect_local_variables_in_heap(rb_thread_t *th, VALUE *dfp, VALUE ary)
}
}

-static VALUE vm_make_proc_from_block(rb_thread_t *th, rb_block_t *block);

VALUE
rb_vm_make_env_object(rb_thread_t * th, rb_control_frame_t *cfp)
{
VALUE envval;

  • VALUE *lfp;

  • rb_block_t *blockptr;

    if (VM_FRAME_TYPE(cfp) == VM_FRAME_MAGIC_FINISH) {
    /* for method_missing */
    cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
    }

  • lfp = cfp->lfp;

  • blockptr = GC_GUARDED_PTR_REF(lfp[0]);

  • if (blockptr && !(lfp[0] & 0x02)) {

  • VALUE blockprocval = vm_make_proc_from_block(th, blockptr);

  • rb_proc_t *p;

  • GetProcPtr(blockprocval, p);

  • lfp[0] = GC_GUARDED_PTR(&p->block);

  • }

  • envval = vm_make_env_each(th, cfp, cfp->dfp, cfp->lfp);
    rb_vm_rewrite_dfp_in_errinfo(th);

@@ -559,6 +545,16 @@ rb_vm_make_proc(rb_thread_t *th, const rb_block_t *block, VALUE klass)
rb_bug("rb_vm_make_proc: Proc value is already created.");
}

  • if (GC_GUARDED_PTR_REF(cfp->lfp[0])) {

  • rb_proc_t *p;

  • blockprocval = vm_make_proc_from_block(

  •  th, (rb_block_t *)GC_GUARDED_PTR_REF(*cfp->lfp));
    
  • GetProcPtr(blockprocval, p);

  • *cfp->lfp = GC_GUARDED_PTR(&p->block);

  • }

  • envval = rb_vm_make_env_object(th, cfp);

    if (PROCDEBUG) {

Updated by roidrage (Mathias Meyer) almost 10 years ago

We've had several reports of this kind of segfault on Travis CI: https://github.com/travis-ci/travis-ci/issues/827

Updated by eyeshield21 (Eyeshield 21) almost 10 years ago

in p362, i am also getting segfaults and cant easy repeat it (because its crushed not every time). p327 is ok.

https://gist.github.com/213b9129e93f56ddee56

Updated by eitoball (Eito Katagiri) almost 10 years ago

I have similar segmentation fault on the same place (gems/activerecord-3.2.9/lib/active_record/relation.rb:241).

I ran gdb with core file when I got the segmentation fault. https://gist.github.com/4411144

Updated by khustochka (Vitalii Khustochka) almost 10 years ago

Seeing the same error at the same line (gems/activerecord-3.2.9/lib/active_record/relation.rb:241) after upgrading to 1.9.3p362

Updated by ortuna (Sumeet Singh) almost 10 years ago

Getting the same seg fault.

Updated by veloper (Daniel Doezema) almost 10 years ago

I'm getting the same seg fault in local dev at very random times, but always within 50 requests -- On thin or unicorn server.

...
.rvm/gems/ruby-1.9.3-p362/gems/activerecord-3.2.9/lib/active_record/relation.rb:241: [BUG] Segmentation fault
ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-darwin12.2.0]
...

Running

  • Rails 3.2.9
  • PostgreSQL 9.2
  • Mountain Lion (10.8.2)

Going to try and revert to ruby-1.9.3-p327 and seeing how that goes.

Updated by sorah (Sorah Fukumori) almost 10 years ago

FYI, 1.9.3-p362's make test fails at KNOWNBUG.rb in Moutain Lion and Linux.

Updated by yorickpeterse (Yorick Peterse) over 9 years ago

I also experienced this issue when running "camper_van" (a Campfire to IRC bridge). The segfault log can be found in the file called "yorickpeterse_segfault_1_9_3p362.txt".

Updated by fabn (Fabio Napoleoni) over 9 years ago

Getting the same errore in a Rails 3.2.8 application after upgrade from p327 to p362 both in Mountain Lion and Debian 6.

Actions #12

Updated by nobu (Nobuyoshi Nakada) over 9 years ago

  • Tracker changed from Bug to Backport
  • Project changed from Ruby master to Backport193
Actions #13

Updated by usa (Usaku NAKAMURA) over 9 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r38726.
Antonio, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


merge revision(s) 38213: [Backport #7629]

* vm.c (rb_vm_make_proc): save the proc made from the given block so
  that it will not get collected.  [ruby-core:50545] [Bug #7507]

Updated by atd (Antonio Tapiador) over 9 years ago

Usaku, it is my pleasure. Thank you for making Ruby so awesome

Actions

Also available in: Atom PDF