Webrick, ldap segfault on Linux


#1

Hi all,

Although this is happening in a Rails app, this is mainly a Ruby issue.
I hit this issue on Solaris 10 with 1.8.2 but it went away with 1.8.4.
However, when I moved the app over to a Linux box (kernel 2.6.8), it
reared its ugly head again, even when using Ruby 1.8.4. I tried using a
Ruby built with and without --enable-pthread. Didn’t make a difference
either way.

./app/models/user.rb:64: [BUG] Segmentation fault
ruby 1.8.4 (2005-12-24) [i686-linux]

Aborted

user.rb (from /app/models)

require “ldap”
require “timeout”

class User < A

def self.login(cuid, password)
ldap_server = “ldapt.foo.com
bool = true

  if ENV["RAILS_ENV"].downcase == "production"
     ldap_server = "ldap.foo.com"
  end

  dn = "uid=#{cuid},ou=People,dc=foo,dc=bar,dc=com"

  begin
     Timeout.timeout(10){
        ldap = LDAP::Conn.new(ldap_server) # line 64
        ldap.simple_bind(dn, password)
        ldap.unbind
     }
  rescue Timeout::Error
     flash[:notice] = "Timed out"
     bool = false
  rescue LDAP::ResultError => err
     bool = false
  end

  return bool

end
end

The development log shows nothing special for the last entry:

Processing LoginController#login (for 1.2.3.4 at 2006-02-06 11:39:23)
[POST]
Parameters: {“commit”=>“Login”, “action”=>“login”,
“controller”=>“login”, “login”=>{“cuid”=>“djber
ge”, “password”=>“XXX”}}

Anyone else hit this? I can’t find the core file, otherwise I would
attach it. I could probably generate one on my desktop Solaris box with
Ruby 1.8.2 and post it if that would help. Let me know.

Regards,

Dan