Hi,
I investigated this a little bit. The problem occurs during this call:
lambda { BCrypt::Password.create(nil) }.should_not raise_error(BCrypt::Errors::InvalidSecret)
in the password_spec.rb test file.
It seems that the value (10) of the BCrypt::Engine::DEFAULT_COST constant
is to high (at least in the case when the RUBY_PLATFORM is not java).
When BCrypt::Password.create is called with one argument, the default
value {:cost => BCrypt::Engine::DEFAULT_COST} is used for the second
parameter.
In irb, BCrypt::Password.create(nil, :cost=> 4) works as expected, but
BCrypt::Password.create(nil, :cost=> 10) yields a segfault of ruby.
Values less or equal to 8 work ok.
I see there is a test for cost>=GIL_UNLOCK_COST_THRESHOLD (set to 9) for
ruby1.9 in ext/mri/bcrypt_ext.c.
Lowering the value of the BCrypt::Engine::DEFAULT_COST helps passing
some tests, but it fails later (engine_spec.rb, during Engine.calibrate,
because the :cost constantly increases.
Best regards,
Cédric
Attachment:
signature.asc
Description: Digital signature