From: Jim Morris Date: 2008-12-04T06:18:23+09:00 Subject: Re: 1.8.7 segfault Quite often I find this is caused by a bad memory SIMM, try running memtst86 or equivalent to eliminate a H/W problem, then you can focus on potential S/W problems. Izit Izit wrote: > Hi, > > I have a Rails app that keeps on segfaulting if I request a very > intensive task. The task involves reading a lot of DB records and > parsing each record in hashes and arrays. > > If I limit the DB record scope the segfault does not happen but with a > larger set it happens every time. Strange thing is it only happens on my > linux system not on my OS X dev system. Both run ruby 1.8.7 latest > version compiled from source. The process eats a lot of memory, keeps > growing and then the fault occurs. > > I ran gdb on the faulty process, here is some output: > > Program received signal SIGSEGV, Segmentation fault. > [Switching to Thread 48005413886848 (LWP 29060)] > ruby_re_compile_pattern (pattern=0x10f3070 ":", size= out>, > bufp=0x96f51f0) at regex.c:2730 > 2730 skip[c] = m; > (gdb) whe > #0 ruby_re_compile_pattern (pattern=0x10f3070 ":", > size=, bufp=0x96f51f0) at regex.c:2730 > #1 0x0000000000461cae in rb_reg_initialize (obj=48005969553640, > s=0x10f3070 ":", len=1, options=) at re.c:643 > #2 0x0000000000461f51 in rb_reg_new (s=0x10f3070 ":", len=1, options=0) > at re.c:1459 > #3 0x0000000000461fba in rb_reg_regcomp (str=0) at re.c:1480 > #4 0x0000000000476abd in rb_str_split_m (argc=, > argv=, str=48005969558200) at string.c:3560 > #5 0x000000000041b84a in rb_call0 (klass=48005399435280, > recv=48005969558200, > id=4665, oid=4665, argc=1, argv=0x7fffff953900, body=0x2ba920c7c9b0, > flags=) at eval.c:5904 > #6 0x000000000041c598 in rb_call (klass=48005399435280, > recv=48005969558200, > mid=4665, argc=1, argv=0x7fffff953900, scope=0, self=48005506071920) > at eval.c:6151 > #7 0x000000000041713b in rb_eval (self=48005506071920, > n=) at eval.c:3492 > #8 0x0000000000417047 in rb_eval (self=48005506071920, > n=) at eval.c:3486 > #9 0x0000000000416701 in rb_eval (self=48005506071920, > n=) at eval.c:2997 > #10 0x0000000000417641 in rb_eval (self=48005506071920, > n=) at eval.c:3047 > #11 0x0000000000418b1e in rb_eval (self=48005506071920, > n=) at eval.c:3332 > > #12 0x000000000041c0b3 in rb_call0 (klass=48005434552560, > recv=48005506071920, > id=51241, oid=, argc=32767, > argv=0x7fffff955df0, > body=0x2ba922eb97a8, flags=) at eval.c:6055 > #13 0x000000000041c598 in rb_call (klass=48005434552560, > recv=48005506071920, > mid=51241, argc=2, argv=0x7fffff955de0, scope=1, > self=48005506071920) > at eval.c:6151 > #14 0x0000000000417273 in rb_eval (self=, > n=) at eval.c:3507 > #15 0x00000000004164ec in rb_eval (self=48005506071920, > n=) at eval.c:3677 > #16 0x000000000041c0b3 in rb_call0 (klass=48005434552560, > recv=48005506071920, > id=3769, oid=, argc=32767, argv=0x7fffff957070, > body=0x2ba922e69050, flags=) at eval.c:6055 > #17 0x000000000041c598 in rb_call (klass=48005434552560, > recv=48005506071920, > mid=3769, argc=2, argv=0x7fffff957060, scope=1, self=48005506071920) > at eval.c:6151 > #18 0x0000000000417273 in rb_eval (self=, > n=) at eval.c:3507 > #19 0x000000000041c0b3 in rb_call0 (klass=48005457401280, > recv=48005506071920, > id=54129, oid=, argc=11177, > argv=0x7fffff957c90, > body=0x2ba924411fb0, flags=) at eval.c:6055 > > > Does anyone have an idea ? > > thanks > > Jeroen -- Jim Morris, http://blog.wolfman.com