hangs in gss_accept_sec_context call on Windows with krb5-1.9.5 libs

diptivs@gmail.com diptivs at gmail.com
Fri May 10 04:49:15 EDT 2013


Hi,
Any conclusion on this discussion. I am facing the similar problem with
1.9.5.

My application works fine with 1.5.3 but when I upgraded to 1.9.5 then the
thread making a call to "gss_accept_sec_context" is hanging.

The hang is at:
File: src/include/k5-thread.h
Function:
static inline int k5_os_mutex_lock(k5_os_mutex *m)
{
...
    res = *WaitForSingleObject*(m->h, INFINITE);
...
}

Also the value for m_>h is 0xffffffff. I saw that its an enum. So does this
mean initialization is not done properly?



When I debugged the code I could get following is the call stack:

<i>Unflagged > 3600 0 Worker Thread _threadstartex k5_os_mutex_lock Normal
       gssapi32.dll!k5_os_mutex_lock(k5_os_mutex * m)  Line 651
       gssapi32.dll!k5_mutex_lock_1(k5_mutex_t * m, k5_debug_loc l)  Line
733 + 0xc bytes
       gssapi32.dll!g_save()  Line 96 + 0x1a bytes
       gssapi32.dll!gssint_g_save_cred_id(g_set * vdb, gss_cred_id_struct *
cred)  Line 246 + 0xf bytes
       gssapi32.dll!acquire_cred(unsigned int * minor_status, const
acquire_cred_args * args, gss_cred_id_struct * * output_cred_handle,
unsigned int * time_rec)  Line 613 + 0xe bytes
       gssapi32.dll!krb5_gss_acquire_cred(unsigned int * minor_status,
gss_name_struct * desired_name, unsigned int time_req,
gss_OID_set_desc_struct * desired_mechs, int cred_usage, gss_cred_id_struct
* * output_cred_handle, gss_OID_set_desc_struct * * actual_mechs, unsigned
int * time_rec)  Line 720 + 0x15 bytes
       gssapi32.dll!kg_accept_krb5()  Line 510 + 0x19 bytes
       gssapi32.dll!krb5_gss_accept_sec_context_ext(unsigned int *
minor_status, gss_ctx_id_struct * * context_handle, gss_cred_id_struct *
verifier_cred_handle, gss_buffer_desc_struct * input_token,
gss_channel_bindings_struct * input_chan_bindings, gss_name_struct * *
src_name, gss_OID_desc_struct * * mech_type, gss_buffer_desc_struct *
output_token, unsigned int * ret_flags, unsigned int * time_rec,
gss_cred_id_struct * * delegated_cred_handle, _krb5_gss_ctx_ext_rec * exts)
 Line 1347 + 0x35 bytes
       gssapi32.dll!krb5_gss_accept_sec_context(unsigned int *
minor_status, gss_ctx_id_struct * * context_handle, gss_cred_id_struct *
verifier_cred_handle, gss_buffer_desc_struct * input_token,
gss_channel_bindings_struct * input_chan_bindings, gss_name_struct * *
src_name, gss_OID_desc_struct * * mech_type, gss_buffer_desc_struct *
output_token, unsigned int * ret_flags, unsigned int * time_rec,
gss_cred_id_struct * * delegated_cred_handle)  Line 1383 + 0x35 bytes
       gssapi32.dll!gss_accept_sec_context(unsigned int * minor_status,
gss_ctx_id_struct * * context_handle, gss_cred_id_struct *
verifier_cred_handle, gss_buffer_desc_struct * input_token_buffer,
gss_channel_bindings_struct * input_chan_bindings, gss_name_struct * *
src_name, gss_OID_desc_struct * * mech_type, gss_buffer_desc_struct *
output_token, unsigned int * ret_flags, unsigned int * time_rec,
gss_cred_id_struct * * d_cred)  Line 208 + 0x49 bytes
       gssapi32.dll!acc_ctx_call_acc(unsigned int * minor_status,
spnego_gss_ctx_id_rec * sc, spnego_gss_cred_id_rec * spcred,
gss_buffer_desc_struct * mechtok_in, gss_OID_desc_struct * * mech_type,
gss_buffer_desc_struct * mechtok_out, unsigned int * ret_flags, unsigned
int * time_rec, gss_cred_id_struct * * delegated_cred_handle, unsigned int
* negState, send_token_flag * tokflag)  Line 1545 + 0x38 bytes
       gssapi32.dll!spnego_gss_accept_sec_context(unsigned int *
minor_status, gss_ctx_id_struct * * context_handle, gss_cred_id_struct *
verifier_cred_handle, gss_buffer_desc_struct * input_token,
gss_channel_bindings_struct * input_chan_bindings, gss_name_struct * *
src_name, gss_OID_desc_struct * * mech_type, gss_buffer_desc_struct *
output_token, unsigned int * ret_flags, unsigned int * time_rec,
gss_cred_id_struct * * delegated_cred_handle)  Line 1707 + 0x31 bytes
       gssapi32.dll!gss_accept_sec_context(unsigned int * minor_status,
gss_ctx_id_struct * * context_handle, gss_cred_id_struct *
verifier_cred_handle, gss_buffer_desc_struct * input_token_buffer,
gss_channel_bindings_struct * input_chan_bindings, gss_name_struct * *
src_name, gss_OID_desc_struct * * mech_type, gss_buffer_desc_struct *
output_token, unsigned int * ret_flags, unsigned int * time_rec,
gss_cred_id_struct * * d_cred)  Line 208 + 0x49 bytes </i>


Please let me know if anyone has any idea.
Thanks,
Dipti


More information about the Kerberos mailing list