Solaris, FastCGI, Apache, and "timeout.rb:52: Segmentation fault"

Just installed Ruby 1.8.6-p110. There seems to be a bug related to
net/http, FastCGI, and Apache (1 or 2). I’m seeing this with a Rails-
based application that has no problems with Mongrel, Webrick,
Lighttpd, or Apache/CGI. This is on a Solaris environment, Ruby
compiled with GCC.

% uname -a
SunOS club 5.10 Generic_118822-08 sun4u sparc SUNW,Sun-Fire-V440

% gcc -v
Using built-in specs.
Target: sparc-sun-solaris2.10
Configured with: …/configure --enable-threads=posix --disable-nls –
with-ld=/usr/ccs/bin/ld --with-as=/usr/ccs/bin/as --enable-shared –
enable-languages=c,c++,objc,fortran --disable-libgcj
Thread model: posix
gcc version 4.1.2

I’ve attempted Ruby 1.8.6-p110 and the stable nightly, both with
these parameters:
./configure --disable-pthread --disable-fastthread
or
./configure --enable-pthread --enable-fastthread

This is what appears in the Apache error_log:
/usr/local/lib/ruby/1.8/timeout.rb:52: [BUG] Segmentation fault
ruby 1.8.6 (2007-10-02) [sparc-solaris2.10]

This is what appears in the Apache site log:
[(time)] [error] [client (ip)] FastCGI: incomplete headers (0 bytes)
received from server “/mysite/public/dispatch.fcgi”

There are no errors in the Rails fastcgi.crash.log or development.log

Here is the code that triggers the error, specifically the line
“x.request( a )” -

class PostsController < ApplicationController
# GET /posts
# GET /posts.xml
def index
require ‘net/http’
http = Net::HTTP.new(“google.com”, 80)
http.start { |x|
a = Net::HTTP::Get.new(“/”)
x.request( a )
}
end
end

Everything worked fine in Ruby 1.8.4. Any help would be appreciated.

To followup I’ve installed several of the Sunfreeware Ruby packages
to narrow down the problem.1

The basic steps each attempt:
- Remove the local/lib/ruby directory
- pkgrm
- pkgadd
- Install RubyGems
- gem update
- gem install rake
- gem install rails
- gem install fcgi
- Restart Apache (2 in this case)
- /usr/bin/pkill -USR1 dispatch.fcgi
- Test page, look for error

The error is present with:
ruby-1.8.5p2-sol10-sparc-local
ruby-1.8.6-sol10-sparc-local

The error is NOT present with:
ruby-1.8.4-sol10-sparc-local

I really don’t have the smarts to say if this is directly caused by
Ruby or how the fcgi (FastCGI - fcgi.so) gem interacts with Ruby.

On Sat, 6 Oct 2007 00:48:01 +0900, Trevor W. [email protected]
wrote:

Just installed Ruby 1.8.6-p110. There seems to be a bug related to
net/http, FastCGI, and Apache (1 or 2). I’m seeing this with a Rails-
based application that has no problems with Mongrel, Webrick,
Lighttpd, or Apache/CGI. This is on a Solaris environment, Ruby
compiled with GCC.

I would strongly recommend against using timeout.rb: there is no
way to write robust code with it because it can interrupt the block at
any (i.e. the wrong) time, defeating normal cleanup/unwinding.

It shouldn’t trigger a bug in the interpreter, granted, but it’s
still risky no matter what you do.

-mental

On Oct 5, 2007, at 10:19 , MenTaLguY wrote:

any (i.e. the wrong) time, defeating normal cleanup/unwinding.
Not true. You can always rescue the Timeout::Error and do proper
cleanup. It just takes work. (This may be dependent upon the way
ruby 1.8 checks to see if it should switch threads, which happens as
you finish executing a node, not as you start it.)

See:

http://blog.segment7.net/articles/2006/04/11/care-and-feeding-of-
timeout-timeout

And [ruby-talk:215086] and the rest of that thread.

On Sat, 6 Oct 2007 02:41:11 +0900, Eric H. [email protected]
wrote:

I would strongly recommend against using timeout.rb: there is no
way to write robust code with it because it can interrupt the block at
any (i.e. the wrong) time, defeating normal cleanup/unwinding.

Not true. You can always rescue the Timeout::Error and do proper
cleanup. It just takes work.

Trivial example:

class Average
def initialize
@numbers = []
@total = 0
end

postcondition: @total == @numbers.inject(0) { |a,n| a + n }

def add(n)
@numbers.push n
@total += n
end
end

Imagine that your timeout block repeatedly calls Average#add, and
the timeout exception is delivered to the thread before the second
statement in Average#add completes. What happens?

Yes, you could rewrite all your code and the libraries it uses to
pervasively use begin/ensure around every statement to maintain
invariants at the finest possible granularity, but it obviously
wouldn’t perform well (and is also dependent on thread scheduling
behavior specific to Ruby 1.8).

-mental

A backtrace of the place ruby crashes would help. Could you generate a
core
dump and have a backtrace from there ?

Sylvain

On Oct 5, 2007, at 12:18 , MenTaLguY wrote:

Trivial example:
@total += n
wouldn’t perform well (and is also dependent on thread scheduling
behavior specific to Ruby 1.8).

When you timeout you cannot be sure of where your calculation
stopped, so you either rescue and cleanup, or you throw out the
results because they did not finish.

Also,

def add(n)
Thread.exclusive do
@numbers.push n
@total += n
end
end

On Sat, 6 Oct 2007 04:33:44 +0900, Eric H. [email protected]
wrote:

When you timeout you cannot be sure of where your calculation
stopped, so you either rescue and cleanup, or you throw out the
results because they did not finish.

Not just the results. You need to throw out any
object/class/external resource/etc. which was modified by the
aborted computation, because they may no longer be in a consistent
state.

If libraries (including stdlib) are involved, that may not be
easy to do (and cleanup could be even harder).

def add(n)
Thread.exclusive do
@numbers.push n
@total += n
end
end

What happens if Average comes from a library you’re using?

Outside of very trivial blocks, Timeout simply isn’t safe unless
the entire stack (from stdlib on up) is written in a way that would
preserve invariants in the face of asynchronous exceptions – which
is not the case (and likely wouldn’t be worth the overhead).

-mental

Was this ever resolved? I am also running ruby 1.8.6 on solaris 10 and
am getting a segmentation fault in timeout.rb. I’m not using timeout
directly but am using actionmailer to send emails with attachments.

Trevor W. wrote:

Here’s a more accurate Rails test case - it would appear the problem
is directly related to Thread.start (with fcgi, on Apache, on Solaris,
with Ruby 1.8.5 or Ruby 1.8.6).

class PostsController < ApplicationController

GET /posts

GET /posts.xml

def index
Thread.start {}
end
end

I would strongly recommend against using timeout.rb: there is no

mental- Thanks for the tip, I’m afraid timeout.rb isn’t in “my” code,
but possibly the offender is (wildly guessing) net/protocol.rb shared
by net/http for my example function.

It doesn’t look like I’m the only person to have seen something like
this on Solaris:
ruby timeout fcgi segfault - Google Search

Here’s a backtrace generated from Ruby 1.8.6-p110 compiled from
source.

Thank you very much for the attention guys. Let me know if there’s
anything else that I can do to help get this solved.

gdb /usr/local/bin/ruby core.dispatch.fcgi.14599.u60001
GNU gdb 6.2.1
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and
you are
welcome to change it and/or distribute copies of it under certain
conditions.
Type “show copying” to see the conditions.
There is absolutely no warranty for GDB. Type “show warranty” for
details.
This GDB was configured as “sparc-sun-solaris2.10”…

warning: core file may not match specified executable file.
Core was generated by `/usr/local/bin/ruby /myapp/rails/public/
dispatch.fcgi’.
Program terminated with signal 6, Aborted.
Reading symbols from /lib/libdl.so.1…
warning: Lowest section in /lib/libdl.so.1 is .dynamic at 00000094
done.
Loaded symbols for /lib/libdl.so.1
Reading symbols from /usr/lib/libcrypt_i.so.1…done.
Loaded symbols for /usr/lib/libcrypt_i.so.1
Reading symbols from /lib/libm.so.2…done.
Loaded symbols for /lib/libm.so.2
Reading symbols from /lib/libcurses.so.1…done.
Loaded symbols for /lib/libcurses.so.1
Reading symbols from /lib/libsocket.so.1…done.
Loaded symbols for /lib/libsocket.so.1
Reading symbols from /lib/libnsl.so.1…done.
Loaded symbols for /lib/libnsl.so.1
Reading symbols from /opt/local/ssl/lib/libssl.so.0.9.8…done.
Loaded symbols for /opt/local/ssl/lib/libssl.so.0.9.8
Reading symbols from /opt/local/ssl/lib/libcrypto.so.0.9.8…done.
Loaded symbols for /opt/local/ssl/lib/libcrypto.so.0.9.8
Reading symbols from /opt/local/lib/libgdbm.so.3…done.
Loaded symbols for /usr/local/lib/libgdbm.so.3
Reading symbols from /opt/local/lib/libiconv.so.2…done.
Loaded symbols for /usr/local/lib/libiconv.so.2
Reading symbols from /usr/lib/libz.so…done.
Loaded symbols for /usr/lib/libz.so
Reading symbols from /lib/libc.so.1…done.
Loaded symbols for /lib/libc.so.1
Reading symbols from /lib/libgen.so.1…done.
Loaded symbols for /lib/libgen.so.1
Reading symbols from /opt/local/lib/libgcc_s.so.1…done.
Loaded symbols for /usr/local/lib/libgcc_s.so.1
Reading symbols from /platform/SUNW,Sun-Fire-V440/lib/libc_psr.so.
1…done.
Loaded symbols for /platform/SUNW,Sun-Fire-V440/lib/libc_psr.so.1
Reading symbols from /opt/local/lib/ruby/gems/1.8/gems/fcgi-0.8.7/lib/
fcgi.so…done.
Loaded symbols for /usr/local/lib/ruby/gems/1.8/gems/fcgi-0.8.7/lib/
fcgi.so
Reading symbols from /opt/local/lib/libfcgi.so.0…done.
Loaded symbols for /usr/local/lib/libfcgi.so.0
#0 0xfedc0f90 in _lwp_kill () from /lib/libc.so.1
(gdb) bt
#0 0xfedc0f90 in _lwp_kill () from /lib/libc.so.1
#1 0xfed5fd80 in raise () from /lib/libc.so.1
#2 0xfed3ffa0 in abort () from /lib/libc.so.1
#3 0x000b28c8 in rb_bug (fmt=0x192a90 “Segmentation fault”) at
error.c:214
#4 0x001167a0 in sigsegv (sig=11) at signal.c:622
#5 0xfedbfed0 in __sighndlr () from /lib/libc.so.1
#6 0xfedb4ffc in call_user_handler () from /lib/libc.so.1
#7 0x000b525c in rb_thread_save_context (th=0x210590) at eval.c:10234
#8 0x000c5e08 in rb_thread_start_0 (fn=0xbb040 <rb_thread_yield>,
arg=0x113bd10, th=0xaf7fb0) at eval.c:11954
#9 0x000b584c in call_cfunc (func=Variable “func” is not available.
) at eval.c:5688
#10 0x000bfcbc in rb_call0 (klass=2088216, recv=2088240, id=5057,
oid=5057, argc=Variable “argc” is not available.
) at eval.c:5847
#11 0x000c00b8 in rb_call (klass=2088216, recv=2088240, mid=5057,
argc=0, argv=0x0, scope=0, self=2934240) at eval.c:6094
#12 0x000bd338 in rb_eval (self=2934240, n=Variable “n” is not
available.
) at eval.c:3473
#13 0x000beaf8 in rb_eval (self=2934240, n=0x2d0e10) at eval.c:3203
#14 0x000bba54 in rb_eval (self=2934240, n=0x2d0d08) at eval.c:3658
#15 0x000be46c in rb_eval (self=2934240, n=0x2d18c0) at eval.c:3337
#16 0x000bfcd4 in rb_call0 (klass=2933304, recv=2934240, id=11169,
oid=2, argc=2, argv=0xffbf2f60, body=0x2d18c0, flags=0) at eval.c:5998
#17 0x000c00b8 in rb_call (klass=2933304, recv=2934240, mid=11169,
argc=2, argv=0xffbf2f58, scope=0, self=18072336) at eval.c:6094
#18 0x000bd338 in rb_eval (self=18072336, n=Variable “n” is not
available.
) at eval.c:3473
#19 0x000c47a0 in block_pass (self=18072336, node=0x2cf508) at eval.c:
8904
#20 0x000bcb38 in rb_eval (self=18072336, n=0x2cf730) at eval.c:3189
#21 0x000bfcd4 in rb_call0 (klass=2107200, recv=18072336, id=11169,
oid=2, argc=1, argv=0xffbf36a4, body=0x2cf730, flags=2) at eval.c:5998
#22 0x000c00b8 in rb_call (klass=2107200, recv=18072336, mid=11169,
argc=1, argv=0xffbf36a0, scope=1, self=18072336) at eval.c:6094
#23 0x000bd460 in rb_eval (self=18072336, n=Variable “n” is not
available.
) at eval.c:3488
#24 0x000beaf8 in rb_eval (self=18072336, n=0x2e0a10) at eval.c:3203
#25 0x000bfcd4 in rb_call0 (klass=2929296, recv=18072336, id=28433,
oid=0, argc=0, argv=0x0, body=0x2e0a10, flags=2) at eval.c:5998
#26 0x000c00b8 in rb_call (klass=2929296, recv=18072336, mid=28433,
argc=0, argv=0x0, scope=2, self=18072336) at eval.c:6094
#27 0x000bd0d4 in rb_eval (self=18072336, n=0x2e12c8) at eval.c:3494
#28 0x000bbdc8 in rb_eval (self=18072336, n=0x2e1160) at eval.c:3162
#29 0x000be24c in rb_eval (self=18072336, n=0x2e0ed8) at eval.c:3289
#30 0x000bfcd4 in rb_call0 (klass=2929296, recv=18072336, id=28097,
oid=2, argc=1, argv=0xffbf4344, body=0x2e0ed8, flags=0) at eval.c:5998
#31 0x000c00b8 in rb_call (klass=2929296, recv=18072336, mid=28097,
argc=1, argv=0xffbf4340, scope=1, self=18072336) at eval.c:6094
#32 0x000bd460 in rb_eval (self=18072336, n=Variable “n” is not
available.
) at eval.c:3488
#33 0x000bd25c in rb_eval (self=18072336, n=0x2e0d28) at eval.c:3467
#34 0x000bfcd4 in rb_call0 (klass=2929296, recv=18072336, id=7353,
oid=0, argc=0, argv=0x0, body=0x2e0d28, flags=0) at eval.c:5998
#35 0x000c00b8 in rb_call (klass=2929296, recv=18072336, mid=7353,
argc=0, argv=0x0, scope=0, self=4387800) at eval.c:6094
#36 0x000bd338 in rb_eval (self=4387800, n=Variable “n” is not
available.
) at eval.c:3473
#37 0x000bba54 in rb_eval (self=4387800, n=0x2ee618) at eval.c:3658
#38 0x000bfcd4 in rb_call0 (klass=4387728, recv=4387800, id=28073,
oid=1, argc=1, argv=0xffbf4e34, body=0x2ee618, flags=2) at eval.c:5998
#39 0x000c00b8 in rb_call (klass=4387728, recv=4387800, mid=28073,
argc=1, argv=0xffbf4e30, scope=1, self=4387800) at eval.c:6094
#40 0x000bd460 in rb_eval (self=4387800, n=Variable “n” is not
available.
) at eval.c:3488
#41 0x000bca94 in rb_eval (self=4387800, n=0x2eef78) at eval.c:3261
#42 0x000bba0c in rb_eval (self=4387800, n=0x2eedf8) at eval.c:3652
#43 0x000bfcd4 in rb_call0 (klass=4387728, recv=4387800, id=26641,
oid=1, argc=1, argv=0xffbf55dc, body=0x2eedf8, flags=0) at eval.c:5998
#44 0x000c00b8 in rb_call (klass=4387728, recv=4387800, mid=26641,
argc=1, argv=0xffbf55d8, scope=0, self=18072648) at eval.c:6094
#45 0x000bd338 in rb_eval (self=18072648, n=Variable “n” is not
available.
) at eval.c:3473
#46 0x000bba54 in rb_eval (self=18072648, n=0x2ace28) at eval.c:3658
#47 0x000bd514 in rb_eval (self=18072648, n=0xffbf59a8) at eval.c:3127
#48 0x000bfcd4 in rb_call0 (klass=4397688, recv=18072648, id=26297,
oid=2, argc=1, argv=0xffbf5ed4, body=0x2ad698, flags=0) at eval.c:5998
#49 0x000c00b8 in rb_call (klass=4397688, recv=18072648, mid=26297,
argc=1, argv=0xffbf5ed0, scope=0, self=15500976) at eval.c:6094
#50 0x000bd338 in rb_eval (self=15500976, n=Variable “n” is not
available.
) at eval.c:3473
#51 0x000ba8f4 in rb_yield_0 (val=18072648, self=15500976, klass=0,
flags=Variable “flags” is not available.
) at eval.c:5021
#52 0x000bd148 in rb_eval (self=18072648, n=0x2b7340) at eval.c:3278
#53 0x000bd0f0 in rb_eval (self=18072648, n=0x2b72e0) at eval.c:3417
#54 0x000be46c in rb_eval (self=18072648, n=0x2b71a8) at eval.c:3337
#55 0x000bfcd4 in rb_call0 (klass=4397688, recv=18072648, id=5057,
oid=0, argc=0, argv=0x0, body=0x2b71a8, flags=0) at eval.c:5998
#56 0x000c00b8 in rb_call (klass=4397688, recv=18072648, mid=5057,
argc=0, argv=0x0, scope=0, self=15500976) at eval.c:6094
#57 0x000bd338 in rb_eval (self=15500976, n=Variable “n” is not
available.
) at eval.c:3473
#58 0x000beaf8 in rb_eval (self=15500976, n=0xffbf6a78) at eval.c:3203
#59 0x000bfcd4 in rb_call0 (klass=15500952, recv=15500976, id=81241,
oid=2, argc=2, argv=0xffbf6f30, body=0xec9910, flags=0) at eval.c:5998
#60 0x000c00b8 in rb_call (klass=15500952, recv=15500976, mid=81241,
argc=2, argv=0xffbf6f28, scope=1, self=15500976) at eval.c:6094
#61 0x000bd460 in rb_eval (self=15500976, n=Variable “n” is not
available.
) at eval.c:3488
#62 0x000bba54 in rb_eval (self=15500976, n=0xffbf7150) at eval.c:3658
#63 0x000bccd4 in rb_eval (self=15500976, n=0xecd0c0) at eval.c:2945
#64 0x000bfcd4 in rb_call0 (klass=15500952, recv=15500976, id=29913,
oid=1, argc=1, argv=0xffbf77d4, body=0xecd0c0, flags=0) at eval.c:5998
#65 0x000c00b8 in rb_call (klass=15500952, recv=15500976, mid=29913,
argc=1, argv=0xffbf77d0, scope=0, self=18099960) at eval.c:6094
#66 0x000bd338 in rb_eval (self=18099960, n=Variable “n” is not
available.
) at eval.c:3473
#67 0x000c47a0 in block_pass (self=18099960, node=0x8b5600) at eval.c:
8904
#68 0x000bcb38 in rb_eval (self=18099960, n=0x8b5690) at eval.c:3189
#69 0x000bfcd4 in rb_call0 (klass=9092016, recv=18099960, id=5265,
oid=1, argc=1, argv=0xffbf7f0c, body=0x8b5690, flags=0) at eval.c:5998
#70 0x000c00b8 in rb_call (klass=9092016, recv=18099960, mid=5265,
argc=1, argv=0xffbf7f08, scope=0, self=18099840) at eval.c:6094
#71 0x000bd338 in rb_eval (self=18099840, n=Variable “n” is not
available.
) at eval.c:3473
#72 0x000bd2cc in rb_eval (self=18099840, n=Variable “n” is not
available.
) at eval.c:3468
#73 0x000bdafc in rb_eval (self=18099840, n=0x8b6ef0) at eval.c:3034
#74 0x000bfcd4 in rb_call0 (klass=9093216, recv=18099840, id=5137,
oid=1, argc=1, argv=0xffbf8714, body=0x8b6ef0, flags=0) at eval.c:5998
#75 0x000c00b8 in rb_call (klass=9093216, recv=18099840, mid=5137,
argc=1, argv=0xffbf8710, scope=0, self=18079872) at eval.c:6094
#76 0x000bd338 in rb_eval (self=18079872, n=Variable “n” is not
available.
) at eval.c:3473
#77 0x000bd514 in rb_eval (self=18079872, n=0x8ade78) at eval.c:3127
#78 0x000bfcd4 in rb_call0 (klass=16914720, recv=18079872, id=58089,
oid=3, argc=3, argv=0xffbf8d14, body=0x8ade78, flags=0) at eval.c:5998
#79 0x000c00b8 in rb_call (klass=16914720, recv=18079872, mid=58089,
argc=3, argv=0xffbf8d08, scope=1, self=18079872) at eval.c:6094
#80 0x000bd460 in rb_eval (self=18079872, n=Variable “n” is not
available.
) at eval.c:3488
#81 0x000bfcd4 in rb_call0 (klass=16914720, recv=18079872, id=57121,
oid=0, argc=0, argv=0x0, body=0x8ac990, flags=2) at eval.c:5998
#82 0x000c00b8 in rb_call (klass=16914720, recv=18079872, mid=57121,
argc=0, argv=0x0, scope=2, self=18079872) at eval.c:6094
#83 0x000bd0d4 in rb_eval (self=18079872, n=0x8f5d10) at eval.c:3494
#84 0x000ba8f4 in rb_yield_0 (val=6, self=18079872, klass=0,
flags=Variable “flags” is not available.
) at eval.c:5021
#85 0x000bd148 in rb_eval (self=9262248, n=0x8e7280) at eval.c:3278
#86 0x000bfcd4 in rb_call0 (klass=9262128, recv=9262248, id=57081,
oid=1, argc=0, argv=0x0, body=0x8e7280, flags=0) at eval.c:5998
#87 0x000c00b8 in rb_call (klass=9262128, recv=9262248, mid=57081,
argc=0, argv=0x0, scope=0, self=18079872) at eval.c:6094
#88 0x000bd338 in rb_eval (self=18079872, n=Variable “n” is not
available.
) at eval.c:3473
#89 0x000beaf8 in rb_eval (self=18079872, n=0x8f5cf8) at eval.c:3203
#90 0x000bd25c in rb_eval (self=18079872, n=0x8f5ce0) at eval.c:3467
#91 0x000bc4bc in rb_eval (self=18079872, n=Variable “n” is not
available.
) at eval.c:3826
#92 0x000bd25c in rb_eval (self=18079872, n=0x8f5c68) at eval.c:3467
#93 0x000bba54 in rb_eval (self=18079872, n=0x8f4918) at eval.c:3658
#94 0x000bfcd4 in rb_call0 (klass=16914696, recv=18079872, id=56969,
oid=0, argc=0, argv=0x0, body=0x8f4918, flags=2) at eval.c:5998
#95 0x000c00b8 in rb_call (klass=16914696, recv=18079872, mid=56969,
argc=0, argv=0x0, scope=2, self=18079872) at eval.c:6094
#96 0x000bd0d4 in rb_eval (self=18079872, n=0x905af0) at eval.c:3494
#97 0x000be24c in rb_eval (self=18079872, n=0x905958) at eval.c:3289
#98 0x000bfcd4 in rb_call0 (klass=16914648, recv=18079872, id=51337,
oid=0, argc=0, argv=0xffbfabec, body=0x905958, flags=2) at eval.c:5998
#99 0x000c00b8 in rb_call (klass=16914648, recv=18079872, mid=51337,
argc=0, argv=0xffbfabec, scope=1, self=6) at eval.c:6094
#100 0x000c85d0 in rb_f_send (argc=1, argv=0xffbfabe8, recv=18079872)
at eval.c:6142
#101 0x000b5bdc in call_cfunc (func=0xc852c <rb_f_send>,
recv=18079872, len=-1, argc=1, argv=0xffbfabe8) at eval.c:5691
#102 0x000bfcbc in rb_call0 (klass=2107032, recv=18079872, id=4049,
oid=4049, argc=Variable “argc” is not available.
) at eval.c:5847
#103 0x000c00b8 in rb_call (klass=2107032, recv=18079872, mid=4049,
argc=1, argv=0xffbfabe8, scope=1, self=18079872) at eval.c:6094
#104 0x000bd460 in rb_eval (self=18079872, n=Variable “n” is not
available.
) at eval.c:3488
#105 0x000be46c in rb_eval (self=18079872, n=0x65c358) at eval.c:3337
#106 0x000bfcd4 in rb_call0 (klass=9688752, recv=18079872, id=58129,
oid=0, argc=3, argv=0xffbfb2cc, body=0x65c358, flags=0) at eval.c:5998
#107 0x000c00b8 in rb_call (klass=9688752, recv=18079872, mid=58129,
argc=3, argv=0xffbfb2c0, scope=1, self=18079872) at eval.c:6094
#108 0x000bd460 in rb_eval (self=18079872, n=Variable “n” is not
available.
) at eval.c:3488
#109 0x000bfcd4 in rb_call0 (klass=16914720, recv=18079872, id=60761,
oid=0, argc=3, argv=0xffbfb714, body=0x8acc48, flags=0) at eval.c:5998
#110 0x000c00b8 in rb_call (klass=16914720, recv=18079872, mid=60761,
argc=3, argv=0xffbfb708, scope=1, self=18079872) at eval.c:6094
#111 0x000bd460 in rb_eval (self=18079872, n=Variable “n” is not
available.
) at eval.c:3488
#112 0x000bfcd4 in rb_call0 (klass=16899960, recv=18079872, id=36041,
oid=0, argc=2, argv=0xffbfbbc8, body=0x8eed50, flags=0) at eval.c:5998
#113 0x000c00b8 in rb_call (klass=16899960, recv=18079872, mid=36041,
argc=2, argv=0xffbfbbc0, scope=0, self=18138912) at eval.c:6094
#114 0x000bd338 in rb_eval (self=18138912, n=Variable “n” is not
available.
) at eval.c:3473
#115 0x000bfcd4 in rb_call0 (klass=9688200, recv=18138912, id=36041,
oid=2, argc=2, argv=0xffbfc008, body=0x809e20, flags=0) at eval.c:5998
#116 0x000c00b8 in rb_call (klass=9688200, recv=18138912, mid=36041,
argc=2, argv=0xffbfc000, scope=0, self=18739248) at eval.c:6094
#117 0x000bd338 in rb_eval (self=18739248, n=Variable “n” is not
available.
) at eval.c:3473
#118 0x000bd25c in rb_eval (self=18739248, n=0x11e6ba8) at eval.c:3467
#119 0x000be24c in rb_eval (self=18739248, n=0x11e5a50) at eval.c:3289
#120 0x000be46c in rb_eval (self=18739248, n=0x11e5900) at eval.c:3337
#121 0x000bfcd4 in rb_call0 (klass=18739224, recv=18739248, id=76177,
oid=3, argc=1, argv=0xffbfc96c, body=0x11e5900, flags=0) at eval.c:
5998
#122 0x000c00b8 in rb_call (klass=18739224, recv=18739248, mid=76177,
argc=1, argv=0xffbfc968, scope=0, self=18642552) at eval.c:6094
#123 0x000bd338 in rb_eval (self=18642552, n=Variable “n” is not
available.
) at eval.c:3473
#124 0x000be24c in rb_eval (self=18642552, n=0x944058) at eval.c:3289
#125 0x000bfcd4 in rb_call0 (klass=18661080, recv=18642552, id=76137,
oid=1, argc=1, argv=0xffbfcf54, body=0x944058, flags=4) at eval.c:5998
#126 0x000c00b8 in rb_call (klass=18661080, recv=18642552, mid=76137,
argc=1, argv=0xffbfcf50, scope=1, self=18642552) at eval.c:6094
#127 0x000bd460 in rb_eval (self=18642552, n=Variable “n” is not
available.
) at eval.c:3488
#128 0x000ba8f4 in rb_yield_0 (val=6, self=18642552, klass=0,
flags=Variable “flags” is not available.
) at eval.c:5021
#129 0x000bd148 in rb_eval (self=18642552, n=0xffbfd298) at eval.c:
3278
#130 0x000be46c in rb_eval (self=18642552, n=0x9457b0) at eval.c:3337
#131 0x000bfcd4 in rb_call0 (klass=18661080, recv=18642552, id=76081,
oid=1, argc=1, argv=0xffbfd884, body=0x9457b0, flags=4) at eval.c:5998
#132 0x000c00b8 in rb_call (klass=18661080, recv=18642552, mid=76081,
argc=1, argv=0xffbfd880, scope=1, self=18642552) at eval.c:6094
#133 0x000bd460 in rb_eval (self=18642552, n=Variable “n” is not
available.
) at eval.c:3488
#134 0x000beaf8 in rb_eval (self=18642552, n=0x9447f0) at eval.c:3203
#135 0x000ba8f4 in rb_yield_0 (val=18545592, self=18642552, klass=0,
flags=Variable “flags” is not available.
) at eval.c:5021
#136 0x000bd148 in rb_eval (self=18869520, n=0x12008b8) at eval.c:3278
#137 0x000ba8f4 in rb_yield_0 (val=18579216, self=18869520, klass=0,
flags=Variable “flags” is not available.
) at eval.c:5021
#138 0xfec73280 in fcgi_s_each (self=18869520) at fcgi.c:118
#139 0x000b5bcc in call_cfunc (func=0xfec73270 <fcgi_s_each>,
recv=18869520, len=0, argc=0, argv=0x0) at eval.c:5694
#140 0x000bfcbc in rb_call0 (klass=18869496, recv=18869520, id=3841,
oid=3841, argc=Variable “argc” is not available.
) at eval.c:5847
#141 0x000c00b8 in rb_call (klass=18869496, recv=18869520, mid=3841,
argc=0, argv=0x0, scope=0, self=18869520) at eval.c:6094
#142 0x000bd338 in rb_eval (self=18869520, n=Variable “n” is not
available.
) at eval.c:3473
#143 0x000beaf8 in rb_eval (self=18869520, n=0xffbfe4a8) at eval.c:
3203
#144 0x000bfcd4 in rb_call0 (klass=18869496, recv=18869520, id=76129,
oid=0, argc=0, argv=0x0, body=0x1200d50, flags=0) at eval.c:5998
#145 0x000c00b8 in rb_call (klass=18869496, recv=18869520, mid=76129,
argc=0, argv=0x0, scope=0, self=18642552) at eval.c:6094
#146 0x000bd338 in rb_eval (self=186a42552, n=Variable “n” is not
available.
) at eval.c:3473
#147 0x000beaf8 in rb_eval (self=18642552, n=0x944700) at eval.c:3203
#148 0x000be24c in rb_eval (self=18642552, n=0x944418) at eval.c:3289
#149 0x000bfcd4 in rb_call0 (klass=18661080, recv=18642552, id=76031,
oid=1, argc=1, argv=0xffbff08c, body=0x944418, flags=4) at eval.c:5998
#150 0x000c00b8 in rb_call (klass=18661080, recv=18642552, mid=76031,
argc=1, argv=0xffbff088, scope=1, self=18642552) at eval.c:6094
#151 0x000bd460 in rb_eval (self=18642552, n=Variable “n” is not
available.
) at eval.c:3488
#152 0x000be24c in rb_eval (self=18642552, n=0x9473a0) at eval.c:3289
#153 0x000bfcd4 in rb_call0 (klass=18661080, recv=18642552, id=23095,
oid=1, argc=0, argv=0x0, body=0x9473a0, flags=0) at eval.c:5998
#154 0x000c00b8 in rb_call (klass=18661080, recv=18642552, mid=23095,
argc=0, argv=0x0, scope=0, self=18661080) at eval.c:6094
#155 0x000bd338 in rb_eval (self=18661080, n=Variable “n” is not
available.
) at eval.c:3473
#156 0x000bfcd4 in rb_call0 (klass=18661248, recv=18661080, id=23095,
oid=0, argc=0, argv=0x0, body=0x948f48, flags=0) at eval.c:5998
#157 0x000c00b8 in rb_call (klass=18661248, recv=18661080, mid=23095,
argc=0, argv=0x0, scope=0, self=2101200) at eval.c:6094
#158 0x000bd338 in rb_eval (self=2101200, n=Variable “n” is not
available.
) at eval.c:3473
#159 0x000cb1fc in ruby_exec_internal () at eval.c:1634
#160 0x000cb230 in ruby_exec () at eval.c:1654
#161 0x000cb260 in ruby_run () at eval.c:1664
#162 0x00030a48 in main (argc=2, argv=0xffbffef4, envp=0xffbfff00) at
main.c:48
(gdb)

Here’s a more accurate Rails test case - it would appear the problem
is directly related to Thread.start (with fcgi, on Apache, on Solaris,
with Ruby 1.8.5 or Ruby 1.8.6).

class PostsController < ApplicationController

GET /posts

GET /posts.xml

def index
Thread.start {}
end
end

(gdb) gdb /usr/local/bin/ruby core.dispatch.fcgi.24194.u60001
GNU gdb 6.2.1
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and
you are
welcome to change it and/or distribute copies of it under certain
conditions.
Type “show copying” to see the conditions.
There is absolutely no warranty for GDB. Type “show warranty” for
details.
This GDB was configured as “sparc-sun-solaris2.10”…

warning: core file may not match specified executable file.
Core was generated by `/usr/local/bin/ruby /myapp/public/
dispatch.fcgi’.
Program terminated with signal 6, Aborted.
Reading symbols from /lib/libdl.so.1…
warning: Lowest section in /lib/libdl.so.1 is .dynamic at 00000094
done.
Loaded symbols for /lib/libdl.so.1
Reading symbols from /usr/lib/libcrypt_i.so.1…done.
Loaded symbols for /usr/lib/libcrypt_i.so.1
Reading symbols from /lib/libm.so.2…done.
Loaded symbols for /lib/libm.so.2
Reading symbols from /lib/libcurses.so.1…done.
Loaded symbols for /lib/libcurses.so.1
Reading symbols from /lib/libsocket.so.1…done.
Loaded symbols for /lib/libsocket.so.1
Reading symbols from /lib/libnsl.so.1…done.
Loaded symbols for /lib/libnsl.so.1
Reading symbols from /opt/local/ssl/lib/libssl.so.0.9.8…done.
Loaded symbols for /opt/local/ssl/lib/libssl.so.0.9.8
Reading symbols from /opt/local/ssl/lib/libcrypto.so.0.9.8…done.
Loaded symbols for /opt/local/ssl/lib/libcrypto.so.0.9.8
Reading symbols from /opt/local/lib/libgdbm.so.3…done.
Loaded symbols for /usr/local/lib/libgdbm.so.3
Reading symbols from /opt/local/lib/libiconv.so.2…done.
Loaded symbols for /usr/local/lib/libiconv.so.2
Reading symbols from /usr/lib/libz.so…done.
Loaded symbols for /usr/lib/libz.so
Reading symbols from /lib/libc.so.1…done.
Loaded symbols for /lib/libc.so.1
Reading symbols from /lib/libgen.so.1…done.
Loaded symbols for /lib/libgen.so.1
Reading symbols from /opt/local/lib/libgcc_s.so.1…done.
Loaded symbols for /usr/local/lib/libgcc_s.so.1
Reading symbols from /platform/SUNW,Sun-Fire-V440/lib/libc_psr.so.
1…done.
Loaded symbols for /platform/SUNW,Sun-Fire-V440/lib/libc_psr.so.1
Reading symbols from /opt/local/lib/ruby/gems/1.8/gems/fcgi-0.8.7/lib/
fcgi.so…done.
Loaded symbols for /usr/local/lib/ruby/gems/1.8/gems/fcgi-0.8.7/lib/
fcgi.so
Reading symbols from /opt/local/lib/libfcgi.so.0…done.
Loaded symbols for /usr/local/lib/libfcgi.so.0
Reading symbols from /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/
mysql.so…done.
Loaded symbols for /usr/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/
mysql.so
Reading symbols from /lib/librt.so.1…done.
Loaded symbols for /lib/librt.so.1
Reading symbols from /lib/libaio.so.1…done.
Loaded symbols for /lib/libaio.so.1
Reading symbols from /lib/libmd5.so.1…done.
Loaded symbols for /lib/libmd5.so.1
Reading symbols from /lib/nss_files.so.1…done.
Loaded symbols for /lib/nss_files.so.1
Reading symbols from /lib/nss_nis.so.1…done.
Loaded symbols for /lib/nss_nis.so.1
#0 0xfedc0f90 in _lwp_kill () from /lib/libc.so.1
(gdb) bt
#0 0xfedc0f90 in _lwp_kill () from /lib/libc.so.1
#1 0xfed5fd80 in raise () from /lib/libc.so.1
#2 0xfed3ffa0 in abort () from /lib/libc.so.1
#3 0x000b28c8 in rb_bug (fmt=0x192a90 “Segmentation fault”) at
error.c:214
#4 0x001167a0 in sigsegv (sig=11) at signal.c:622
#5 0xfedbfed0 in __sighndlr () from /lib/libc.so.1
#6 0xfedb4ffc in call_user_handler () from /lib/libc.so.1
#7 0x000b525c in rb_thread_save_context (th=0x210590) at eval.c:10234
#8 0x000c5e08 in rb_thread_start_0 (fn=0xbb040 <rb_thread_yield>,
arg=0x9d35f0, th=0x120bfe0) at eval.c:11954
#9 0x000b584c in call_cfunc (func=Variable “func” is not available.
) at eval.c:5688
#10 0x000bfcbc in rb_call0 (klass=2088216, recv=2088240, id=5057,
oid=5057, argc=Variable “argc” is not available.
) at eval.c:5847
#11 0x000c00b8 in rb_call (klass=2088216, recv=2088240, mid=5057,
argc=0, argv=0x0, scope=0, self=10383456) at eval.c:6094
#12 0x000bd338 in rb_eval (self=10383456, n=Variable “n” is not
available.
) at eval.c:3473
#13 0x000beaf8 in rb_eval (self=10383456, n=0x9f2bb0) at eval.c:3203
#14 0x000bfcd4 in rb_call0 (klass=10400400, recv=10383456, id=4345,
oid=0, argc=0, argv=0xffbf7834, body=0x9f2bb0, flags=0) at eval.c:5998
#15 0x000c00b8 in rb_call (klass=10400400, recv=10383456, mid=4345,
argc=0, argv=0xffbf7834, scope=1, self=6) at eval.c:6094
#16 0x000c85d0 in rb_f_send (argc=1, argv=0xffbf7830, recv=10383456)
at eval.c:6142
#17 0x000b5bdc in call_cfunc (func=0xc852c <rb_f_send>, recv=10383456,
len=-1, argc=1, argv=0xffbf7830) at eval.c:5691
#18 0x000bfcbc in rb_call0 (klass=2107032, recv=10383456, id=4049,
oid=4049, argc=Variable “argc” is not available.
) at eval.c:5847
#19 0x000c00b8 in rb_call (klass=2107032, recv=10383456, mid=4049,
argc=1, argv=0xffbf7830, scope=1, self=10383456) at eval.c:6094
#20 0x000bd460 in rb_eval (self=10383456, n=Variable “n” is not
available.
) at eval.c:3488
#21 0x000bfcd4 in rb_call0 (klass=18800784, recv=10383456, id=66505,
oid=0, argc=0, argv=0x0, body=0xa50528, flags=2) at eval.c:5998
#22 0x000c00b8 in rb_call (klass=18800784, recv=10383456, mid=66505,
argc=0, argv=0x0, scope=2, self=10383456) at eval.c:6094
#23 0x000bd0d4 in rb_eval (self=10383456, n=0x11afbe8) at eval.c:3494
#24 0x000bfcd4 in rb_call0 (klass=14388672, recv=10383456, id=66481,
oid=3, argc=3, argv=0xffbf7fd4, body=0x11afbe8, flags=0) at eval.c:
5998
#25 0x000c00b8 in rb_call (klass=14388672, recv=10383456, mid=66481,
argc=3, argv=0xffbf7fc8, scope=1, self=10383456) at eval.c:6094
#26 0x000bd460 in rb_eval (self=10383456, n=Variable “n” is not
available.
) at eval.c:3488
#27 0x000bfcd4 in rb_call0 (klass=14388672, recv=10383456, id=65801,
oid=0, argc=0, argv=0x0, body=0x11ae700, flags=2) at eval.c:5998
#28 0x000c00b8 in rb_call (klass=14388672, recv=10383456, mid=65801,
argc=0, argv=0x0, scope=2, self=10383456) at eval.c:6094
#29 0x000bd0d4 in rb_eval (self=10383456, n=0x11d0990) at eval.c:3494
#30 0x000ba8f4 in rb_yield_0 (val=6, self=10383456, klass=0,
flags=Variable “flags” is not available.
) at eval.c:5021
#31 0x000bd148 in rb_eval (self=8964336, n=0x8952a8) at eval.c:3278
#32 0x000bfcd4 in rb_call0 (klass=8964216, recv=8964336, id=57209,
oid=1, argc=0, argv=0x0, body=0x8952a8, flags=0) at eval.c:5998
#33 0x000c00b8 in rb_call (klass=8964216, recv=8964336, mid=57209,
argc=0, argv=0x0, scope=0, self=10383456) at eval.c:6094
#34 0x000bd338 in rb_eval (self=10383456, n=Variable “n” is not
available.
) at eval.c:3473
#35 0x000beaf8 in rb_eval (self=10383456, n=0x11d0978) at eval.c:3203
#36 0x000bd25c in rb_eval (self=10383456, n=0x11d0960) at eval.c:3467
#37 0x000bc4bc in rb_eval (self=10383456, n=Variable “n” is not
available.
) at eval.c:3826
#38 0x000bd25c in rb_eval (self=10383456, n=0x11d08e8) at eval.c:3467
#39 0x000bba54 in rb_eval (self=10383456, n=0x11cfd30) at eval.c:3658
—Type to continue, or q to quit—
#40 0x000bfcd4 in rb_call0 (klass=14388648, recv=10383456, id=65729,
oid=0, argc=0, argv=0x0, body=0x11cfd30, flags=2) at eval.c:5998
#41 0x000c00b8 in rb_call (klass=14388648, recv=10383456, mid=65729,
argc=0, argv=0x0, scope=2, self=10383456) at eval.c:6094
#42 0x000bd0d4 in rb_eval (self=10383456, n=0x11d7f50) at eval.c:3494
#43 0x000be24c in rb_eval (self=10383456, n=0x11d7db8) at eval.c:3289
#44 0x000bfcd4 in rb_call0 (klass=14388600, recv=10383456, id=68921,
oid=0, argc=0, argv=0x0, body=0x11d7db8, flags=2) at eval.c:5998
#45 0x000c00b8 in rb_call (klass=14388600, recv=10383456, mid=68921,
argc=0, argv=0x0, scope=2, self=10383456) at eval.c:6094
#46 0x000bd0d4 in rb_eval (self=10383456, n=0x107dbb8) at eval.c:3494
#47 0x000ba8f4 in rb_yield_0 (val=6, self=10383456, klass=0,
flags=Variable “flags” is not available.
) at eval.c:5021
#48 0x000bd148 in rb_eval (self=5854680, n=0xffbf9ec8) at eval.c:3278
#49 0x000be46c in rb_eval (self=5854680, n=0x54a500) at eval.c:3337
#50 0x000bfcd4 in rb_call0 (klass=5854512, recv=5854680, id=23201,
oid=0, argc=0, argv=0x0, body=0x54a500, flags=0) at eval.c:5998
#51 0x000c00b8 in rb_call (klass=5854512, recv=5854680, mid=23201,
argc=0, argv=0x0, scope=0, self=10383456) at eval.c:6094
#52 0x000bd338 in rb_eval (self=10383456, n=Variable “n” is not
available.
) at eval.c:3473
#53 0x000beaf8 in rb_eval (self=10383456, n=0x107db28) at eval.c:3203
#54 0x000bfcd4 in rb_call0 (klass=14375472, recv=10383456, id=60249,
oid=0, argc=0, argv=0xffbfabf4, body=0x107db28, flags=2) at eval.c:
5998
#55 0x000c00b8 in rb_call (klass=14375472, recv=10383456, mid=60249,
argc=0, argv=0xffbfabf4, scope=1, self=6) at eval.c:6094
#56 0x000c85d0 in rb_f_send (argc=1, argv=0xffbfabf0, recv=10383456)
at eval.c:6142
#57 0x000b5bdc in call_cfunc (func=0xc852c <rb_f_send>, recv=10383456,
len=-1, argc=1, argv=0xffbfabf0) at eval.c:5691
#58 0x000bfcbc in rb_call0 (klass=2107032, recv=10383456, id=4049,
oid=4049, argc=Variable “argc” is not available.
) at eval.c:5847
#59 0x000c00b8 in rb_call (klass=2107032, recv=10383456, mid=4049,
argc=1, argv=0xffbfabf0, scope=1, self=10383456) at eval.c:6094
#60 0x000bd460 in rb_eval (self=10383456, n=Variable “n” is not
available.
) at eval.c:3488
#61 0x000be46c in rb_eval (self=10383456, n=0xa8f480) at eval.c:3337
#62 0x000bfcd4 in rb_call0 (klass=18800784, recv=10383456, id=66521,
oid=0, argc=3, argv=0xffbfb2d4, body=0xa8f480, flags=0) at eval.c:5998
#63 0x000c00b8 in rb_call (klass=18800784, recv=10383456, mid=66521,
argc=3, argv=0xffbfb2c8, scope=1, self=10383456) at eval.c:6094
#64 0x000bd460 in rb_eval (self=10383456, n=Variable “n” is not
available.
) at eval.c:3488
#65 0x000bfcd4 in rb_call0 (klass=14388672, recv=10383456, id=69097,
oid=0, argc=3, argv=0xffbfb71c, body=0x11ae9b8, flags=0) at eval.c:
5998
#66 0x000c00b8 in rb_call (klass=14388672, recv=10383456, mid=69097,
argc=3, argv=0xffbfb710, scope=1, self=10383456) at eval.c:6094
#67 0x000bd460 in rb_eval (self=10383456, n=Variable “n” is not
available.
) at eval.c:3488
#68 0x000bfcd4 in rb_call0 (klass=14369184, recv=10383456, id=35513,
oid=0, argc=2, argv=0xffbfbbd0, body=0x1058fe8, flags=0) at eval.c:
5998
#69 0x000c00b8 in rb_call (klass=14369184, recv=10383456, mid=35513,
argc=2, argv=0xffbfbbc8, scope=0, self=10400400) at eval.c:6094
#70 0x000bd338 in rb_eval (self=10400400, n=Variable “n” is not
available.
) at eval.c:3473
#71 0x000bfcd4 in rb_call0 (klass=18800640, recv=10400400, id=35513,
oid=2, argc=2, argv=0xffbfc010, body=0xa991b8, flags=0) at eval.c:5998
#72 0x000c00b8 in rb_call (klass=18800640, recv=10400400, mid=35513,
argc=2, argv=0xffbfc008, scope=0, self=14700288) at eval.c:6094
#73 0x000bd338 in rb_eval (self=14700288, n=Variable “n” is not
available.
) at eval.c:3473
#74 0x000bd25c in rb_eval (self=14700288, n=0xe092c8) at eval.c:3467
#75 0x000be24c in rb_eval (self=14700288, n=0xe08d70) at eval.c:3289
#76 0x000be46c in rb_eval (self=14700288, n=0xe08d28) at eval.c:3337
#77 0x000bfcd4 in rb_call0 (klass=14700264, recv=14700288, id=84905,
oid=3, argc=1, argv=0xffbfc974, body=0xe08d28, flags=0) at eval.c:5998
#78 0x000c00b8 in rb_call (klass=14700264, recv=14700288, mid=84905,
argc=1, argv=0xffbfc970, scope=0, self=14647656) at eval.c:6094
#79 0x000bd338 in rb_eval (self=14647656, n=Variable “n” is not
available.
) at eval.c:3473
—Type to continue, or q to quit—
#80 0x000be24c in rb_eval (self=14647656, n=0xe49a80) at eval.c:3289
#81 0x000bfcd4 in rb_call0 (klass=14662008, recv=14647656, id=84865,
oid=1, argc=1, argv=0xffbfcf5c, body=0xe49a80, flags=4) at eval.c:5998
#82 0x000c00b8 in rb_call (klass=14662008, recv=14647656, mid=84865,
argc=1, argv=0xffbfcf58, scope=1, self=14647656) at eval.c:6094
#83 0x000bd460 in rb_eval (self=14647656, n=Variable “n” is not
available.
) at eval.c:3488
#84 0x000ba8f4 in rb_yield_0 (val=6, self=14647656, klass=0,
flags=Variable “flags” is not available.
) at eval.c:5021
#85 0x000bd148 in rb_eval (self=14647656, n=0xffbfd2a0) at eval.c:3278
#86 0x000be46c in rb_eval (self=14647656, n=0xe4bfa0) at eval.c:3337
#87 0x000bfcd4 in rb_call0 (klass=14662008, recv=14647656, id=84809,
oid=1, argc=1, argv=0xffbfd88c, body=0xe4bfa0, flags=4) at eval.c:5998
#88 0x000c00b8 in rb_call (klass=14662008, recv=14647656, mid=84809,
argc=1, argv=0xffbfd888, scope=1, self=14647656) at eval.c:6094
#89 0x000bd460 in rb_eval (self=14647656, n=Variable “n” is not
available.
) at eval.c:3488
#90 0x000beaf8 in rb_eval (self=14647656, n=0xe4a218) at eval.c:3203
#91 0x000ba8f4 in rb_yield_0 (val=14561424, self=14647656, klass=0,
flags=Variable “flags” is not available.
) at eval.c:5021
#92 0x000bd148 in rb_eval (self=14830680, n=0xe26848) at eval.c:3278
#93 0x000ba8f4 in rb_yield_0 (val=14572392, self=14830680, klass=0,
flags=Variable “flags” is not available.
) at eval.c:5021
#94 0xfec83280 in fcgi_s_each (self=14830680) at fcgi.c:118
#95 0x000b5bcc in call_cfunc (func=0xfec83270 <fcgi_s_each>,
recv=14830680, len=0, argc=0, argv=0x0) at eval.c:5694
#96 0x000bfcbc in rb_call0 (klass=14830656, recv=14830680, id=3841,
oid=3841, argc=Variable “argc” is not available.
) at eval.c:5847
#97 0x000c00b8 in rb_call (klass=14830656, recv=14830680, mid=3841,
argc=0, argv=0x0, scope=0, self=14830680) at eval.c:6094
#98 0x000bd338 in rb_eval (self=14830680, n=Variable “n” is not
available.
) at eval.c:3473
#99 0x000beaf8 in rb_eval (self=14830680, n=0xffbfe4b0) at eval.c:3203
#100 0x000bfcd4 in rb_call0 (klass=14830656, recv=14830680, id=84857,
oid=0, argc=0, argv=0x0, body=0xe26ce0, flags=0) at eval.c:5998
#101 0x000c00b8 in rb_call (klass=14830656, recv=14830680, mid=84857,
argc=0, argv=0x0, scope=0, self=14647656) at eval.c:6094
#102 0x000bd338 in rb_eval (self=14647656, n=Variable “n” is not
available.
) at eval.c:3473
#103 0x000beaf8 in rb_eval (self=14647656, n=0xe4a128) at eval.c:3203
#104 0x000be24c in rb_eval (self=14647656, n=0xe49e40) at eval.c:3289
#105 0x000bfcd4 in rb_call0 (klass=14662008, recv=14647656, id=84759,
oid=1, argc=1, argv=0xffbff094, body=0xe49e40, flags=4) at eval.c:5998
#106 0x000c00b8 in rb_call (klass=14662008, recv=14647656, mid=84759,
argc=1, argv=0xffbff090, scope=1, self=14647656) at eval.c:6094
#107 0x000bd460 in rb_eval (self=14647656, n=Variable “n” is not
available.
) at eval.c:3488
#108 0x000be24c in rb_eval (self=14647656, n=0xe50818) at eval.c:3289
#109 0x000bfcd4 in rb_call0 (klass=14662008, recv=14647656, id=23095,
oid=1, argc=0, argv=0x0, body=0xe50818, flags=0) at eval.c:5998
#110 0x000c00b8 in rb_call (klass=14662008, recv=14647656, mid=23095,
argc=0, argv=0x0, scope=0, self=14662008) at eval.c:6094
#111 0x000bd338 in rb_eval (self=14662008, n=Variable “n” is not
available.
) at eval.c:3473
#112 0x000bfcd4 in rb_call0 (klass=14662080, recv=14662008, id=23095,
oid=0, argc=0, argv=0x0, body=0xe53cf8, flags=0) at eval.c:5998
#113 0x000c00b8 in rb_call (klass=14662080, recv=14662008, mid=23095,
argc=0, argv=0x0, scope=0, self=2101200) at eval.c:6094
#114 0x000bd338 in rb_eval (self=2101200, n=Variable “n” is not
available.
) at eval.c:3473
#115 0x000cb1fc in ruby_exec_internal () at eval.c:1634
#116 0x000cb230 in ruby_exec () at eval.c:1654
#117 0x000cb260 in ruby_run () at eval.c:1664
#118 0x00030a48 in main (argc=2, argv=0xffbffefc, envp=0xffbfff08) at
main.c:48
(gdb)