Bug #4350
closedSegmentation fault and Bus Error
Description
=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
Files
        
           Updated by qianthinking (Leon Li) over 14 years ago
          Updated by qianthinking (Leon Li) over 14 years ago
          
          
        
        
      
      =begin
It seems related to #2295
=end
        
           Updated by naruse (Yui NARUSE) over 14 years ago
          Updated by naruse (Yui NARUSE) over 14 years ago
          
          
        
        
      
      - Status changed from Open to Feedback
Would you show a small reproducible code?
        
           Updated by mame (Yusuke Endoh) about 13 years ago
          Updated by mame (Yusuke Endoh) about 13 years ago
          
          
        
        
      
      - Status changed from Feedback to Rejected
Sorry but I'm closing this ticket because it is too clueless.
I guess eventmachine is involved to this issue, but I can make no hypothesis any more.
Feel free to reopen this if you have any clue.
--
Yusuke Endoh mame@tsg.ne.jp