From: Ron M Date: 2005-10-05T02:56:10+09:00 Subject: Segfault with broken regular expressions When I try to define this function with a syntax error in the regular expression, ruby sometimes segfaults. I'm using "ruby 1.8.3 (2005-05-12) [i686-linux]". The obvious/easy workaround is to not have the syntax error in the regexp :-) but I just figured I'd report the less than perfect failure mode. ==================================================================================== irb(main):012:0* irb(main):013:0* irb(main):014:0* def ascleanstr(v) (v.class==String && v=~/\A\s*\Z/) ? nil : (v.class==Array && v[0].class==Fixnum) ? v.pack("C*").unpack("H*")[0] : v = v.to_s.strip.gsub(/\r/,"") v =~ v.length>3 && /\A[A-Z\#0-9 _\t\-\/(\)]*\Z\/ ? v.split(/[\t _]+/).map{|w| w=~/\d/ ? w : w.capitalize}.join(" ") : v end irb(main):015:1> irb(main):016:1* irb(main):017:1* irb(main):018:1> irb(main):019:1/ irb(main):020:0* (irb):19: warning: invalid character syntax; use ?\\ s SyntaxError: compile error (irb):19: premature end of regular expression: /\A[A-Z\#0-9 _\t\-\/(\)]*\Z\/ ? v.split(/ (irb):19: syntax error v.split(/[\t _]+/).map{|w| w=~/\d/ ? w : w.capitalize}.join(" ") : ^ (irb):19: unmatched ): /).map{|w| w=~/ (irb):19: syntax error v.split(/[\t _]+/).map{|w| w=~/\d/ ? w : w.capitalize}.join(" ") : ^ (irb):19: syntax error v.split(/[\t _]+/).map{|w| w=~/\d/ ? w : w.capitalize}.join(" ") : ^ (irb):19: syntax error from (irb):20 from ^C:0 irb(main):021:0> SyntaxError: compile error (irb):21: syntax error from (irb):21 from ^C:0 irb(main):022:0> irb(main):023:0* def ascleanstr(v) (v.class==String && v=~/\A\s*\Z/) ? nil : (v.class==Array && v[0].class==Fixnum) ? v.pack("C*").unpack("H*")[0] : v = v.to_s.strip.gsub(/\r/,"") v =~ v.length>3 && /\A[A-Z\#0-9 _\t\-\/(\)]*\Z\/ ? v.split(/[\t _]+/).map{|w| w=~/\d/ ? w : w.capitalize}.join(" ") : v end free(): invalid pointer 0x8186ac0! free(): invalid pointer 0x817a7d0! free(): invalid pointer 0x8182bf8! /usr/local/lib/ruby/1.8/irb.rb:285: [BUG] Segmentation fault ruby 1.8.3 (2005-05-12) [i686-linux] Abort greenie import/denton> ruby -version ruby 1.8.3 (2005-05-12) [i686-linux] -e:1: undefined local variable or method `rsion' for main:Object (NameError) greenie import/denton>