Project

General

Profile

Actions

Bug #7350

closed

Segmentation fault with ruby 1.9.3p328 (2012-11-13) [x86_64-linux]

Added by ggiesemann (Geoffrey Giesemann) about 12 years ago. Updated almost 12 years ago.

Status:
Rejected
Target version:
ruby -v:
ruby 1.9.3p328 (2012-11-13) [x86_64-linux]
Backport:
[ruby-core:49335]

Description

I'm experiencing sporadic segmentation faults in a ruby daemon running with:

ruby 1.9.3p328 (2012-11-13) [x86_64-linux]

This is actually the 1.9.3p327 ruby patched with https://github.com/ruby/ruby/commit/ae2df330 as the issue http://bugs.ruby-lang.org/issues/7123 looked similar to the one I was experiencing.

The daemon in question sits in a loop pulling messages out of an ActiveMQ server using the stomp gem; DOM parsing a file locally using libxml-ruby; then stuffing another message back on to the server using the same stomp client. I haven't been able to isolate the problem into a smaller block; but I can reproduce it in ~15 minutes on an AWS test server.

I've included two examples of crash output, I have several more from 1.9.3p286.

Happy to try patches or anything further to help debug/diagnose the issue.


Files

ruby-1.9.3p328.crash1.log (27.6 KB) ruby-1.9.3p328.crash1.log ggiesemann (Geoffrey Giesemann), 11/14/2012 02:08 PM
ruby-1.9.3p328.crash2.log (27.7 KB) ruby-1.9.3p328.crash2.log ggiesemann (Geoffrey Giesemann), 11/14/2012 02:08 PM

Updated by usa (Usaku NAKAMURA) about 12 years ago

Can you check with trunk?

Yes, it may be difficult, I know.

It seems that crash1.log suggests the cause is in libxml-ruby gem, maybe GC bug.
crash2.log suggests ... ..... a string passed to Pathname is broken.

Does anyone have any idea?

Updated by ggiesemann (Geoffrey Giesemann) almost 12 years ago

Argh, my bad - I think it's a problem with how we were using libxml-ruby rather thank a ruby bug.

We had an area of code where we weren't correctly importing nodes into documents (see "Memory Management" in http://libxml.rubyforge.org/rdoc/) which looks like it caused bizarro heap corruption :S

For some reason this is much easier to replicate when you have a deeper call stack - like if you're inside a stomp gem handling a message frame - than it is with a vanilla code sample.

I have a reasonably small code sample to reproduce this, but you'll need a STOMP server to make it work.

Updated by mame (Yusuke Endoh) almost 12 years ago

  • Status changed from Open to Feedback
  • Target version set to 2.0.0

Could you show the small code sample?
I'm very happy if you kindly show the process to setup STOMP server :-)
We can make no progress without it.

--
Yusuke Endoh

Updated by ko1 (Koichi Sasada) almost 12 years ago

  • Assignee set to mame (Yusuke Endoh)

Updated by mame (Yusuke Endoh) almost 12 years ago

  • Status changed from Feedback to Rejected

Marking as rejected due to no response from OP.

--
Yusuke Endoh

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0