Ruby DBD MySQL seg faults under mod_ruby

I have an rhtml website using mysql as a backend working
just fine on a standalone FreeBSD 5.1 system, but it fails
to work in a jail under FreeBSD 4.8. I get segfaults inside
ruby when I try to use the dbi interface to access retrieved
rows. Additionally, when I run the code standalone from the
command line invoking it with ruby, everything works properly.

Can anyone point me to how I should resolve the problem?

Here are the particulars:

The error message in httpd’s error_log is:

/usr/local/lib/ruby/site_ruby/1.6/DBD/Mysql/Mysql.rb:465: [BUG] Segmentation fault
ruby 1.6.8 (2003-10-15) [i386-freebsd4]

Pertinent software:
apache_1.3.28
mod_ruby-1.1.2
eruby-1.0.5
ruby-1.6.8.2003.10.15
ruby-aspectr-0.3.5
ruby-bdb1-0.2.1
ruby-dbd_mysql-0.0.21
ruby-dbi-0.0.21
ruby-mysql-2.4.5
ruby-shim-ruby18-1.8.1.p3

THANKS!

-matt

···


matthew c. mead

http://www.goof.com/~mmead/

I know. Bad form to respond to myself.

According to gdb, this is the stack trace of where things fail.
Can anyone help me make sense of why this would fail under
FreeBSD 4.8 in a jail vs. working perfectly under FreeBSD 5.1
with NO jail?

Thanks!

#0 0x2847ba39 in rb_str_new2 () from /usr/local/lib/libruby.so.16
#1 0x2847baa6 in rb_tainted_str_new2 () from /usr/local/lib/libruby.so.16
#2 0x28635c55 in make_field_obj ()
from /usr/local/lib/ruby/site_ruby/1.6/i386-freebsd4/mysql.so
#3 0x286371c9 in fetch_fields ()
from /usr/local/lib/ruby/site_ruby/1.6/i386-freebsd4/mysql.so
#4 0x2842993d in call_cfunc () from /usr/local/lib/libruby.so.16
#5 0x28429ea1 in rb_call0 () from /usr/local/lib/libruby.so.16
#6 0x2842a6fe in rb_call () from /usr/local/lib/libruby.so.16
#7 0x28424fd4 in rb_eval () from /usr/local/lib/libruby.so.16
#8 0x28424b15 in rb_eval () from /usr/local/lib/libruby.so.16
#9 0x28423efe in rb_eval () from /usr/local/lib/libruby.so.16
#10 0x2842349e in rb_eval () from /usr/local/lib/libruby.so.16

-matt

···

On Mon, Jan 26, 2004 at 10:18:05AM +0900, matthew c. mead wrote:

I have an rhtml website using mysql as a backend working
just fine on a standalone FreeBSD 5.1 system, but it fails
to work in a jail under FreeBSD 4.8. I get segfaults inside
ruby when I try to use the dbi interface to access retrieved
rows. Additionally, when I run the code standalone from the
command line invoking it with ruby, everything works properly.

Can anyone point me to how I should resolve the problem?

Here are the particulars:

The error message in httpd’s error_log is:

/usr/local/lib/ruby/site_ruby/1.6/DBD/Mysql/Mysql.rb:465: [BUG] Segmentation fault
ruby 1.6.8 (2003-10-15) [i386-freebsd4]

Pertinent software:
apache_1.3.28
mod_ruby-1.1.2
eruby-1.0.5
ruby-1.6.8.2003.10.15
ruby-aspectr-0.3.5
ruby-bdb1-0.2.1
ruby-dbd_mysql-0.0.21
ruby-dbi-0.0.21
ruby-mysql-2.4.5
ruby-shim-ruby18-1.8.1.p3

THANKS!

-matt


matthew c. mead

http://www.goof.com/~mmead/


matthew c. mead

http://www.goof.com/~mmead/

For anyone going to take a look at this, I’ve found it fails
under FreeBSD 4.8 whether it’s running in a jail or not.

Is there an easy way to build all this (apache, ruby-mysql,
mysql client libs, etc.) debug and run it under gdb so I can get
useful information? It’s been quite a few years since I’ve
debugged with gdb.

Thanks in advance for any help.

-matt

···

On Mon, Jan 26, 2004 at 11:26:03AM +0900, matthew c. mead wrote:

I know. Bad form to respond to myself.

According to gdb, this is the stack trace of where things fail.
Can anyone help me make sense of why this would fail under
FreeBSD 4.8 in a jail vs. working perfectly under FreeBSD 5.1
with NO jail?

Thanks!

#0 0x2847ba39 in rb_str_new2 () from /usr/local/lib/libruby.so.16
#1 0x2847baa6 in rb_tainted_str_new2 () from /usr/local/lib/libruby.so.16
#2 0x28635c55 in make_field_obj ()
from /usr/local/lib/ruby/site_ruby/1.6/i386-freebsd4/mysql.so
#3 0x286371c9 in fetch_fields ()
from /usr/local/lib/ruby/site_ruby/1.6/i386-freebsd4/mysql.so
#4 0x2842993d in call_cfunc () from /usr/local/lib/libruby.so.16
#5 0x28429ea1 in rb_call0 () from /usr/local/lib/libruby.so.16
#6 0x2842a6fe in rb_call () from /usr/local/lib/libruby.so.16
#7 0x28424fd4 in rb_eval () from /usr/local/lib/libruby.so.16
#8 0x28424b15 in rb_eval () from /usr/local/lib/libruby.so.16
#9 0x28423efe in rb_eval () from /usr/local/lib/libruby.so.16
#10 0x2842349e in rb_eval () from /usr/local/lib/libruby.so.16

-matt

On Mon, Jan 26, 2004 at 10:18:05AM +0900, matthew c. mead wrote:

I have an rhtml website using mysql as a backend working
just fine on a standalone FreeBSD 5.1 system, but it fails
to work in a jail under FreeBSD 4.8. I get segfaults inside
ruby when I try to use the dbi interface to access retrieved
rows. Additionally, when I run the code standalone from the
command line invoking it with ruby, everything works properly.

Can anyone point me to how I should resolve the problem?

Here are the particulars:

The error message in httpd’s error_log is:

/usr/local/lib/ruby/site_ruby/1.6/DBD/Mysql/Mysql.rb:465: [BUG] Segmentation fault
ruby 1.6.8 (2003-10-15) [i386-freebsd4]

Pertinent software:
apache_1.3.28
mod_ruby-1.1.2
eruby-1.0.5
ruby-1.6.8.2003.10.15
ruby-aspectr-0.3.5
ruby-bdb1-0.2.1
ruby-dbd_mysql-0.0.21
ruby-dbi-0.0.21
ruby-mysql-2.4.5
ruby-shim-ruby18-1.8.1.p3

THANKS!

-matt


matthew c. mead

http://www.goof.com/~mmead/


matthew c. mead

http://www.goof.com/~mmead/


matthew c. mead

http://www.goof.com/~mmead/