This project is closed and read-only.
Backport #7629
closedSegmentation fault
Added by atd (Antonio Tapiador) over 13 years ago. Updated over 13 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) over 13 years ago
Actions
#1
[ruby-core:51171]
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) over 13 years ago
Actions
#2
[ruby-core:51185]
"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(
-
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) over 13 years ago
Actions
#3
[ruby-core:51191]
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) over 13 years ago
Actions
#4
[ruby-core:51194]
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) over 13 years ago
Actions
#5
[ruby-core:51196]
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) over 13 years ago
Actions
#6
[ruby-core:51206]
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) over 13 years ago
Actions
#7
[ruby-core:51208]
Getting the same seg fault.
Updated by veloper (Daniel Doezema) over 13 years ago
Actions
#8
[ruby-core:51214]
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) over 13 years ago
Actions
#9
[ruby-core:51220]
FYI, 1.9.3-p362's make test fails at KNOWNBUG.rb in Moutain Lion and Linux.
Updated by yorickpeterse (Yorick Peterse) over 13 years ago
Actions
#10
[ruby-core:51232]
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 13 years ago
Actions
#11
[ruby-core:51239]
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) over 13 years ago
Actions
#12
- Tracker changed from Bug to Backport
- Project changed from Ruby to 13
Updated by usa (Usaku NAKAMURA) over 13 years ago
Actions
#13
- 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 13 years ago
Actions
#14
[ruby-core:51317]
Usaku, it is my pleasure. Thank you for making Ruby so awesome