[Devel] Dead lock in modules/dialog/dlg_hash.c

rubel Ahmed bd.rubel at gmail.com
Sat Jun 2 11:28:29 CEST 2007


Hi,
I am using Openser-1.2.1-notls.
I think there is a problem in function "mi_print_dlgs()" of file
modules/dialog/dlg_hash.c
in line number 449, there is a dlg_lock() function call,
after this in the next for loop block (starts from line 451 to 496)
some goto error labels used, but in that error label dlg_unblock() function
has never been called.
For that reason I think if there is no dlg_unlock() function call from
"error:" (label) then it may cause
a deadlock situation in openser, when next dlg_lock() try to be called.
Thats why I think there should be a dlg_unlock() function call in the
"error:" block.

448    for( i=0 ; i<d_table->size ; i++ ) {
449        dlg_lock( d_table, &(d_table->entries[i]) );
450
451        for( dlg=d_table->entries[i].first ; dlg ; dlg=dlg->next ) {
452         node = add_mi_node_child(rpl, 0, "dialog",6 , 0, 0 );
453         if (node==0)
454             goto error;
***
***
***
496        } /* This is the end of 2nd for loop*/
497     dlg_unlock( d_table, &(d_table->entries[i]) );
498 }

/* Inthe following Error code no dlg_unlock() called */
501    error:
502        LOG(L_ERR,"ERROR:mi_ps: failed to add node\n");
503     free_mi_tree(rpl_tree);
504     return 0;


Sorry for my poor English.

Regards,
Salah Uddin Ahmed
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://openser.org/pipermail/devel/attachments/20070602/fe386934/attachment.htm


More information about the Devel mailing list