[asterisk-dev] [Code Review]: adding shared locks around usage of odbc handle in res_odbc

Tilghman Lesher reviewboard at asterisk.org
Wed Dec 14 11:10:34 CST 2011



> On Dec. 14, 2011, 11:08 a.m., Tilghman Lesher wrote:
> > /branches/1.8/res/res_odbc.c, line 731
> > <https://reviewboard.asterisk.org/r/1622/diff/1/?file=22212#file22212line731>
> >
> >     Actually, you expect "at least" a read lock.  There are cases below where you've obtained a write lock before calling the sanity checking function.
> >     
> >     Maybe create an internal version of this where the type of lock held is passed, and you escalate the lock only if it's necessary (and avoid a WARNING).

Also, because this is a public API, assuming that a lock is held isn't correct unless you document it in the header file.  That speaks doubly for a private version of this.


- Tilghman


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1622/#review5009
-----------------------------------------------------------


On Dec. 14, 2011, 3:01 a.m., wdoekes wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1622/
> -----------------------------------------------------------
> 
> (Updated Dec. 14, 2011, 3:01 a.m.)
> 
> 
> Review request for Asterisk Developers and Tilghman Lesher.
> 
> 
> Summary
> -------
> 
> See bug report: under certain circumstances res_odbc can be made to crash.
> 
> Adding a shared lock around usage of the con odbc handle is a way to fix this. When a reconnect is attempted, an exclusive lock is held. Result: no usage attempts while reconnecting.
> 
> This is hacked up quickly, so could use a bit of review; it wouldn't surprise me if I double-lock something somewhere. (And the assertion I added fails too.) Also, this could be the wrong way to approach this altogether.
> 
> @tilghman: is there a reason why ->up is set to 0 after query failure? (See same question in bug report at Cause (1).)
> 
> 
> This addresses bug ASTERISK-19011.
>     https://issues.asterisk.org/jira/browse/ASTERISK-19011
> 
> 
> Diffs
> -----
> 
>   /branches/1.8/include/asterisk/res_odbc.h 348047 
>   /branches/1.8/res/res_odbc.c 348047 
> 
> Diff: https://reviewboard.asterisk.org/r/1622/diff
> 
> 
> Testing
> -------
> 
> With the patch, I'm not getting the easy crashes anymore.
> 
> 
> Thanks,
> 
> wdoekes
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20111214/370e3e36/attachment.htm>


More information about the asterisk-dev mailing list