qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mo Morsi (JIRA)" <qpid-...@incubator.apache.org>
Subject [jira] Commented: (QPID-2405) SASL<->Ruby binding can cause seg_faults
Date Sun, 05 Sep 2010 16:50:32 GMT

    [ https://issues.apache.org/jira/browse/QPID-2405?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12906355#action_12906355

Mo Morsi commented on QPID-2405:

This issue seems to be propagating up and causing some major breakage in the Ruby QPID binding.
Case in point, try to do the following:

require 'qpid'
Qpid::Connection.new(TCPSocket.new('localhost', 5672)).inspect

Which currently results in

[BUG] Segmentation fault
ruby 1.8.6 (2010-02-05) [x86_64-linux]

I am running ruby-qpid via the stock RPM that ships on Fedora13 (ruby-qpid version 0.6)

Qpid::Connection::inspect is segfaulting because

  - Qpid::Delegate::Client  is a member of Qpid::Connection
  - Qpid::Delegate::Client attempts to interface with sasl by executing the following in the
constructor (/usr/lib/ruby/site_ruby/1.8/qpid/delegates.rb:189)
         @saslConn = Sasl.client_new(@mechanism, @service, args[:host],@username, @password,
@min_ssf, @max_ssf)

Attempting to call the "to_s" method (or even the ".class" method) on @saslConn, as would
occur when Qpid::Connection.inspect is invoked, results in a segfault _every time_.

I haven't tried the patch above, please shout out if I can do anymore to help get this resolved.

> SASL<->Ruby binding can cause seg_faults
> ----------------------------------------
>                 Key: QPID-2405
>                 URL: https://issues.apache.org/jira/browse/QPID-2405
>             Project: Qpid
>          Issue Type: Bug
>          Components: Ruby Client
>    Affects Versions: 0.5
>         Environment: Ubuntu, ruby 1.8.7, qpid 0.5
>            Reporter: Sam Hendley
>            Assignee: Ted Ross
>             Fix For: 0.5
>         Attachments: sasl.patch
> There is an issue with the sasl bindings where it returns a raw ruby VALUE type for the
sasl context. This works _UNTIL_ the ruby runtime tries to access that variable which then
causes a segfault. 
> This is easy to see if you try to inspect the variable at all (like print it or ask for
its class or methods). In my application, for reasons I haven't determined yet, just having
this variable on the heap meant that when an exception occurred trying to print the exceptions
message caused a seg fault. 
> In any case, passing back raw VALUEs to ruby code is a Bad Idea and goes against the
spec. There is a simple macro and fix for this which wraps the returned value in a ruby object.
This fixes the issue I was having and means the deleting of the object is done automatically
(instead of having a manual free function).
> I have a patch with the simple, low impact fix, really it would be better to the extension
so the sasl client is repersented as a real ruby object but that would require atleast some
client code changes.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org

View raw message