Issue #4350 has been updated by Yui NARUSE.

Status changed from Open to Feedback

Would you show a small reproducible code?
----------------------------------------
Bug #4350: Segmentation fault and Bus Error
http://redmine.ruby-lang.org/issues/4350

Author: Leon Li
Status: Feedback
Priority: Normal
Assignee: 
Category: 
Target version: 1.9.2
ruby -v: ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-linux]


=begin
 My server crashes 0-4 times a day with segmentation faults.
 The fault seems related to activerecord transaction, but it is not always a same spot, so the attached are just examples of some occurrence.
 
 The application is a tcp server base on eventmachine.
 Ruby compiled from rvm, ruby-1.9.2-p0 and ruby-1.9.2-p136
 System info: Linux foo 2.6.31-gentoo-r6 #1 SMP Wed Dec 23 08:10:43 CST 2009 x86_64 Intel(R) Xeon(R) CPU E5520 @ 2.27GHz GenuineIntel GNU/Linux
 
 Brief of logs
 
 segfault1.ruby-1.9.2-p0.log
 /usr/local/rvm/gems/ruby-1.9.2-p0/gems/mysql2-0.2.6/lib/active_record/connection_adapters/mysql2_adapter.rb:314: [BUG] Segmentation fault
 
 segfault2.ruby-1.9.2-p0.log 
 /usr/local/rvm/gems/ruby-1.9.2-p0/gems/activemodel-3.0.3/lib/active_model/attribute_methods.rb:327: [BUG] Segmentation fault
 
 segfault3.ruby-1.9.2-p0.log
 /usr/local/rvm/gems/ruby-1.9.2-p0/gems/mysql2-0.2.6/lib/active_record/connection_adapters/mysql2_adapter.rb:314: [BUG] Bus Error
 
 segfault1.ruby-1.9.2-p136.log
 /usr/local/rvm/gems/ruby-1.9.2-p136/gems/mysql2-0.2.6/lib/active_record/connection_adapters/mysql2_adapter.rb:310: [BUG] Segmentation fault
 
 segfault2.ruby-1.9.2-p136.log
 /usr/local/rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:242: [BUG] Segmentation fault
 
 segfault3.ruby-1.9.2-p136.log
 /path_to_server/2011-01-30_231948/config/initializers/encoding.rb:12: [BUG] Segmentation fault
 
 content of /path_to_server/2011-01-30_231948/config/initializers/encoding.rb
 
   1 #workaround for "incompatible character encodings: UTF-8 and ASCII-8BIT"
   2 #due to "??" + [23423424234].pack("G")
   3   
   4 unless SERVER_TYPE == 'proxy'
   5   Encoding.default_external = Encoding::UTF_8 if RUBY_VERSION > "1.9"
   6   if RUBY_VERSION > '1.9'
   7     String.class_eval do
   8       alias_method :quick_append, :<< unless method_defined? :quick_append
   9       alias_method :quick_add, :+ unless method_defined? :quick_add
  10       def <<(str)
  11         str.force_encoding("UTF-8") unless str.frozen?
  12         self.quick_append str
  13       end
  14       def +(str)
  15         str.force_encoding("UTF-8") unless str.frozen?
  16         self.quick_add str
  17       end
  18     end
  19     StringIO.class_eval do
  20       alias_method :quick_write, :write unless method_defined? :quick_write
  21       def write(str)
  22         str.force_encoding("UTF-8") unless (!str.is_a? String) || str.frozen?
  23         self.quick_write str
  24       end
  25     end
  26 
  27   else
  28     String.class_eval do
  29       def force_encoding(encode)
  30         self
  31       end
  32     end
  33   end
  34   Fixnum.class_eval do
  35     alias_method :quick_to_s, :to_s unless method_defined? :quick_to_s
  36     def force_encoding(encode)
  37       self
  38     end
  39     def to_s(base=10)
  40       quick_to_s(base).force_encoding("UTF-8")
  41     end
  42   end
  43   Array.class_eval do
  44     alias_method :quick_pack, :pack unless method_defined? :quick_pack
  45     def pack(*args)
  46       quick_pack(*args).force_encoding("UTF-8")
  47     end
  48   end
  49 end
=end



-- 
http://redmine.ruby-lang.org