I was trying to build Ruby 1.8.2 on HPUX today. Simple "./configure;
make" works fine. However, when I try to make it with --enable-pthread,
bootstrap Ruby (make calls it "miniruby") throws SIGBUS.
It goes like this:
QTE shell session (prompt replaced with >)
uname -a
HP-UX hppc701 B.11.11 U 9000/800 ...
model
9000/800/rp7410
configure --enable-pthread --prefix=${HOME}/ruby
...skipped...configure finishes successfully...
make clean; make
...compilation of all .c sources goes without errors...
/fetuser1.pc701/fet/tst/alexeyv/ruby-1.8.2/lib/shellwords.rb:50: [BUG]
Bus Error
ruby 1.8.2 (2004-07-16) [hppa2.0w-hpux11.11]
sh: 16258 Abort(coredump)
*** Error exit code 134
UNQTE
If I drop --enable-pthread from ./configure options, then the build
succeeds. Unfortunately, without pthread DBD driver for Oracle crashes
because it is linked with pthread, and on HPUX (like on most other
Unixes) the main binary (ruby/bin/ruby in this case) must be linked with
pthread if it uses shared libraries dependent on it.
The Ruby code where SIGBUS is reported looks like this:
QTE shell session
less -N shellwords.rb
22 #
23 # Split text into an array of tokens in the same way the UNIX
Bourne
24 # shell does.
25 #
26 # See the +Shellwords+ module documentation for an example.
27 #
28 def shellwords(line)
29 line = String.new(line) rescue
30 raise(ArgumentError, "Argument must be a string")
31 line.lstrip!
32 words =
33 until line.empty?
34 field = ''
35 loop do
36 if line.sub!(/\A"(([^"\\]|\\.)*)"/, '') then
37 snippet = $1.gsub(/\\(.)/, '\1')
38 elsif line =~ /\A"/ then
39 raise ArgumentError, "Unmatched double quote: #{line}"
40 elsif line.sub!(/\A'([^']*)'/, '') then
41 snippet = $1
42 elsif line =~ /\A'/ then
43 raise ArgumentError, "Unmatched single quote: #{line}"
44 elsif line.sub!(/\A\\(.)/, '') then
45 snippet = $1
46 elsif line.sub!(/\A([^\s\\'"]+)/, '') then
47 snippet = $1
48 else
49 line.lstrip!
50 break <<<<<<<<<<<<<<<<<<<<<<<<< Bus Error happens
here (???)
51 end
52 field.concat(snippet)
53 end
54 words.push(field)
55 end
56 words
57 end
UNQTE
Can anyone shed some light on this, or have I encountered something
previously unknown?
Best regards,
Alexey Verkhovsky