Backport #7629
closedSegmentation fault
Added by atd (Antonio Tapiador) almost 12 years ago. Updated almost 12 years ago.
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 |
Updated by gingerlime (Yoav Aner) almost 12 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 12 years ago
"atd (Antonio Tapiador)" atapiador@dit.upm.es 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 usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e
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 12 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 12 years ago
in p362, i am also getting segfaults and cant easy repeat it (because its crushed not every time). p327 is ok.
Updated by eitoball (Eito Katagiri) almost 12 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 12 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 12 years ago
Getting the same seg fault.
Updated by veloper (Daniel Doezema) almost 12 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 12 years ago
FYI, 1.9.3-p362's make test
fails at KNOWNBUG.rb in Moutain Lion and Linux.
Updated by yorickpeterse (Yorick Peterse) almost 12 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) almost 12 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.
Updated by nobu (Nobuyoshi Nakada) almost 12 years ago
- Tracker changed from Bug to Backport
- Project changed from Ruby master to Backport193
Updated by usa (Usaku NAKAMURA) almost 12 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) almost 12 years ago
Usaku, it is my pleasure. Thank you for making Ruby so awesome