Hi everybody,

I want to use Apache (v1.3.39), mod_ssl (v2.8.30), OpenSSL (v0.9.8y) with a 
nCipher card but when I start it, I have the following error message:
[error] OpenSSL: error:81067064:CHIL engine:HWCRHK_INIT:already loaded
[error] OpenSSL: error:260B806D:engine routines:ENGINE_TABLE_REGISTER:init 
failed

Thanks to GDB I tried to find why it happens.
First, the error comes from the function "hwcrhk_init": the variable 
"hwcrhk_dso" isn't NULL.
As Apache reads the conf twice, this function is called twice and it happens at 
the second call.
But between these two calls, "hwcrhk_finish" isn't executed (so "hwcrhk_dso" 
isn't freed and not set to NULL).
The call to "hwcrhk_finish" depends of the value of "funct_ref" in the "ENGINE" 
structure.
This variable is incremented in "engine_unlocked_init" (where is the call to 
"hwcrhk_init") and decremented in "engine_unlocked_finish" (where is the call 
to "hwcrhk_finish").
When you look at the calls to these two functions, you see:
* "engine_unlocked_init" => "ENGINE_set_default_[RSA|DH|RAND|...]" and 
"ENGINE_get_default_[RSA|DH|RAND|...]" functions
* "engine_unlocked_finish" => "RSA_free" and "DH_free" (no "RAND_free"?)

My conclusion would be: I don't think it's correct to increment "funct_ref" 
when the call to "engine_unlocked_init" comes from a "get" function.

So, I'd like to have your help on this problem: if you already know the 
solution and / or if you have any idea to continue this analysis (ie. where to 
look at).

Thank you in advance,
Clement.

                                          

Reply via email to