[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