ts decoux@moulon.inra.fr writes:
If you can give your complete configuration (apparently you run 1.6.7,
right ?) and your script to try to reproduce the segfault ?
Guy:
The following script, if run twice, segv’s the second time.
req = Apache::request
req.status = Apache::HTTP_OK
req.content_type = 'text/html'
req.send_http_header
def nil.empty?
true
end
$stderr.puts "In t.rb"
puts "Hello, world!"
This is with
ruby 1.6.7 (2002-08-01)
mod_ruby 0.9.9
Apache 1.3.26
The full backtrace for this case is below. Is it possible that
st_lookup is thinking it’s using a strhash, rather than a numhash?
#0 0x40191cd8 in main_arena () from /lib/libc.so.6
#1 0x402c06fa in st_lookup (table=0x81fdd30, key=0xc19 <Address 0xc19 out of bounds>,
value=0xbfffd140) at st.c:253
#2 0x4026e895 in search_method (klass=1078135192, id=3097, origin=0xbfffd17c) at eval.c:250
#3 0x4026e8e1 in rb_get_method_body (klassp=0xbfffd1cc, idp=0xbfffd1bc, noexp=0xbfffd1c0)
at eval.c:268
#4 0x402784b4 in rb_call (klass=1078135192, recv=4, mid=3097, argc=1, argv=0xbfffd1ec, scope=1)
at eval.c:4582
#5 0x40278869 in rb_funcall (recv=4, mid=3097, n=1) at eval.c:4679
#6 0x40274b47 in rb_eval (self=1078124132, n=0x4042da7c) at eval.c:3049
#7 0x40271b63 in rb_eval (self=1078124132, n=0x4042dc98) at eval.c:2027
#8 0x4026f99c in eval_node (self=1078124132, node=0x4042dc98) at eval.c:1057
#9 0x40279c3d in rb_load (fname=1078124172, wrap=1) at eval.c:5258
#10 0x40279ea2 in rb_f_load (argc=2, argv=0xbfffdf4c) at eval.c:5306
#11 0x40277878 in call_cfunc (func=0x40279e60 <rb_f_load>, recv=1078133872, len=-1, argc=2,
argv=0xbfffdf4c) at eval.c:4248
#12 0x40277e02 in rb_call0 (klass=1078201492, recv=1078133872, id=8473, argc=2, argv=0xbfffdf4c,
body=0x40433c24, nosuper=1) at eval.c:4385
#13 0x40278614 in rb_call (klass=1078201492, recv=1078133872, mid=8473, argc=2, argv=0xbfffdf4c,
scope=1) at eval.c:4605
#14 0x4027356c in rb_eval (self=1078133872, n=0x4042f8a4) at eval.c:2546
#15 0x40271b63 in rb_eval (self=1078133872, n=0x4042ff70) at eval.c:2027
#16 0x402781f8 in rb_call0 (klass=1078134792, recv=1078133872, id=10881, argc=0, argv=0xbfffec00,
body=0x4042ff70, nosuper=0) at eval.c:4512
#17 0x40278614 in rb_call (klass=1078134792, recv=1078133872, mid=10881, argc=1, argv=0xbfffebfc,
scope=1) at eval.c:4605
#18 0x402788e9 in rb_funcall2 (recv=1078133872, mid=10881, argc=1, argv=0xbfffebfc) at eval.c:4689
#19 0x4025a78a in protect_funcall0 (arg=3221220404) at mod_ruby.c:240
#20 0x402770ba in rb_protect (proc=0x4025a760 <protect_funcall0>, data=3221220404, state=0xbfffec90)
at eval.c:4008
#21 0x4025a828 in rb_protect_funcall (recv=1078133872, mid=10881, state=0xbfffec90, argc=1)
at mod_ruby.c:270
#22 0x4025bbcb in ruby_handler_0 (arg=0xbfffef18) at mod_ruby.c:890
#23 0x4025b8f5 in run_safely_0 (arg=0xbfffeea4) at mod_ruby.c:798
#24 0x40280287 in rb_thread_start_0 (fn=0x4025b8a0 <run_safely_0>, arg=0xbfffeea4, th_arg=0x82070a0)
at eval.c:8376
#25 0x40280487 in rb_thread_create (fn=0x4025b8a0 <run_safely_0>, arg=0xbfffeea4) at eval.c:8428
#26 0x4025b968 in run_safely (safe_level=1, timeout=270, func=0x4025bb80 <ruby_handler_0>,
arg=0xbfffef18, retval=0xbfffef14) at mod_ruby.c:817
#27 0x4025bd4f in ruby_handler (r=0x8204a1c, handlers_arr=0x80bab34, mid=10881, run_all=0, flush=1)
at mod_ruby.c:944
#28 0x4025be2e in ruby_object_handler (r=0x8204a1c) at mod_ruby.c:964
#29 0x80550a9 in ap_invoke_handler ()
#30 0x806b4ff in process_request_internal ()
#31 0x806b572 in ap_process_request ()
#32 0x8061c96 in child_main ()
#33 0x8061f1a in make_child ()
#34 0x8061fd6 in startup_children ()
#35 0x806267d in standalone_main ()
#36 0x8062eec in main ()
#37 0x400a2baf in __libc_start_main () from /lib/libc.so.6
Thanks for looking at this.
Dave