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

Bogdan-Andrei Iancu bogdan at voice-system.ro
Sat Jun 2 14:12:46 CEST 2007


Hi there,

Thanks a lot for the report - you are right - an unlock was missing. I 
made the fix on both trunk and 1.2.
Please update from SVN.

Regards,
Bogdan

rubel Ahmed wrote:
> 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
> ------------------------------------------------------------------------
>
> _______________________________________________
> Devel mailing list
> Devel at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/devel
>   




More information about the Devel mailing list