Hey All, I just wanted to put this out there and see firstly if anyone has experienced the same problem, and secondly maybe someone has some ideas as to how to go about fixing it. I've posted some stuff mentioning this problem with Ruby-ODBC, the Ruby-OpenGL module, and Timothy Hunter has also noticed it with RMagick (http://www.codecomments.com/message491846.html). My current problem is with the ruby-odbc module on Tiger with Ruby 1.8.2 (self-compiled, although the problem exists with rubys compiled via fink, darwinports and Apple). I have also seen this in the past (on Panther, too) when I did some work to compile OpenGL on the mac using native frameworks, and a similar problem has been hinted at with RubyCocoa and IRB (http://rubycocoa.sourceforge.net/doc/programming.en.html#label-2). The problem is *only* present when requiring the library from the command-line, and not once IRB has loaded, i.e. $ irb -r odbc ==> bus error ...but... $ irb irb(main):0> require 'odbc' ==> true I'm confident that you can substitute "opengl", "rmagick", or maybe even rubycocoa for odbc wherever I use it below. It gets worse. I then added the following to my .irbrc file: IRB.conf[:LOAD_MODULES] << "odbc" ... which basically adds the ODBC module to the array used to determine which modules IRB should load. Now, ODBC gets loaded automatically into IRB, without needing to be specified, i.e.: $ irb irb(main):0> puts ODBC.class ==> Module Which means that it loaded fine! Here's why this is very strange - you can trace the execution within IRB to get to this point as follows: /usr/local/bin/irb /usr/local/lib/ruby/1.8/irb.rb (IRB.start, around line 50) /usr/local/lib/ruby/1.8/irb/init.rb (IRB.setup, at the top) In IRB.setup, a bunch of stuff happens, including parsing the command-line options and adding anything after a "-r" to @CONF[:LOAD_MODULES] (IRB.parse_opts), and then finally taking each string in that Array and loading each module (IRB.load_modules, at the bottom of init.rb). So what I can tell from this is that at the point where the module is actually loaded (IRB.load_modules) adding a module to the @CONF structure has resulted in exactly the same situation as having specified it with "-r" on the command line. The @CONF[:LOAD_MODULES] array is in exactly the same state if you specify modules in .irbrc as it is if you require them with "-r" on the command line, and yet one method works, and the other fails. Very, very strange. BUT - here's where it gets TRULY weird. Keep this line in .irbrc, so the offending module will be loaded. Next, in /usr/local/bin/irb, immediately after the #! line, add this: ARGV.clear .... so basically I'm nuking ANY command-line arguments at all. Watch and be amazed: $ irb irb(main):0> puts ODBC.class ==> Module irb(main):1> exit $ irb a_nonsense_argument_that_will_get_cleared_anyway ..... Bus Error. It basically looks like having ANYTHING as a command line argument, even if IRB doesn't do anything with that data (remember, the ARGV array gets wiped immediately so IRB.parse_opts doesn't do anything), we still get a bus error. You can replicate this effect without even clearing ARGV. Try this: $ irb -I . .... it should crash too. I'm at the end of my tether, and can only see this as being a bug in Mac OS X. However, I can't even find a reference for memcmp in __CFInitialize (see http://darwinsource.opendarwin.org/10.4/CF-368/Base.subproj/CFRuntime.c, the Darwin source for Tiger). I am totally stumped. Anyway, if ANYONE has got anything that might enlighten me, please please let me know. - James