Forum: Ruby-core [Closed] Ruby interpreter crashes when executing a script in debug mode

F1d6cc2b735bfd82c8773172da2aeab9?d=identicon&s=25 Nobuyoshi Nakada (nobu)
on 2014-02-26 05:27
(Received via mailing list)
Issue #9568 has been updated by Nobuyoshi Nakada.

Status changed from Open to Closed
% Done changed from 0 to 100

Applied in changeset r45180.

----------
eval.c: preserve errinfo

* eval.c (setup_exception): preserve errinfo across calling #to_s
  method on the exception.  [ruby-core:61091] [Bug #9568]

----------------------------------------
Bug #9568: Ruby interpreter crashes when executing a script in debug
mode
https://bugs.ruby-lang.org/issues/9568#change-45487

* Author: Scott Thompson
* Status: Closed
* Priority: Normal
* Assignee:
* Category:
* Target version:
* ruby -v: ruby 2.2.0dev (2014-02-26 trunk 45176) [x86_64-darwin13.0]
* Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
The following script will crash the ruby interpreter when ruby is run in
debug mode.
This script is creating mock HTTP objects and creating the Response
class out of the middle of the Savon gem and calling a private method in
a very odd way because it is a reduced test case pulled from a much
larger script.  The actual script use Savon in a much more conventional
way:

-- crash_example.rb --
require 'savon'

class SampleHTTPStuff
  def error?
    return true
  end

  def code
    return 500
  end

  def body
    return %q{<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-E...
Error</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>}
  end
end

http = SampleHTTPStuff.new()
response = Savon::Response.new(http, {}, {})

begin
  response.instance_eval { raise_soap_and_http_errors! }
rescue => e
  puts "Ouch!"
end

--- end of crash_example.rb

For what it's worth, I'm using version 2.3.3 of the Savon gem.

If I run this using:

ruby -d crash_example.rb

I get a segmentation fault error.  The problem appears to be the result
of calling vm_throw with the "throwobj" having the value 0x8

If I run the script without the "-d" debug flag, the script runs without
trouble.

I am running this on Mac OS X 10.9.1 on a MacBook Pro Retina 15"

using RVM I have tried the same code on 2.0, 2.1, and the 2.2dev head
(as of 2/25/2014).  They all exhibit the same behavior

I've attached a transcript file of the code being run.

---Files--------------------------------
crash_transcript.txt (35.1 KB)
This topic is locked and can not be replied to.