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