[asterisk-dev] [Code Review] Resolve odbc segfaults by adding shared locks around usage of odbc handle in res_odbc
rmudgett
reviewboard at asterisk.org
Tue Feb 14 11:16:36 CST 2012
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1719/#review5501
-----------------------------------------------------------
/branches/1.8/include/asterisk/res_odbc.h
<https://reviewboard.asterisk.org/r/1719/#comment10133>
Since odbc_obj is an ao2 object, the lock should have been removed and the ao2 object lock should have been used instead. On trunk this would be a good candidate to convert to using the ao2 rwlock when I ever get around to merging that feature. :)
/branches/1.8/res/res_odbc.c
<https://reviewboard.asterisk.org/r/1719/#comment10128>
obj is never NULL here
/branches/1.8/res/res_odbc.c
<https://reviewboard.asterisk.org/r/1719/#comment10129>
Extraneous blank line
/branches/1.8/res/res_odbc.c
<https://reviewboard.asterisk.org/r/1719/#comment10130>
There is no memory that the wrlock is held on the object. There are a few cases where the sanity check is already wrlocked from the last time the sanity check was called. So upgrading from a wrlock to a wrlock is rather pointless.
A wrlock/unlock helper function could be created that sets a wrlock_held flag on the object when the wrlock is obtained and clears the flag when the lock is released.
Using the wrlock_held flag would remove the need for the different ast_odbc_sanity_check calls.
/branches/1.8/res/res_odbc.c
<https://reviewboard.asterisk.org/r/1719/#comment10131>
obj->con should be just con here because we set obj->con to NULL earlier.
/branches/1.8/res/res_odbc.c
<https://reviewboard.asterisk.org/r/1719/#comment10132>
I wonder if con needs to be initialized to NULL for safety or does SQLAllocHandle always set the con value?
- rmudgett
On Feb. 8, 2012, 8:47 a.m., jrose wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1719/
> -----------------------------------------------------------
>
> (Updated Feb. 8, 2012, 8:47 a.m.)
>
>
> Review request for Asterisk Developers, Mark Michelson, Tilghman Lesher, rmudgett, and wdoekes.
>
>
> Summary
> -------
>
> This is a continuation of wdoekes patch seen in https://reviewboard.asterisk.org/r/1622/
> This adds Tilghman Lesher's suggested changes.
>
>
> This addresses bug ASTERISK-19011.
> https://issues.asterisk.org/jira/browse/ASTERISK-19011
>
>
> Diffs
> -----
>
> /branches/1.8/res/res_odbc.c 354164
> /branches/1.8/include/asterisk/res_odbc.h 354164
>
> Diff: https://reviewboard.asterisk.org/r/1719/diff
>
>
> Testing
> -------
>
> I started by confirming that the segfault could be easily reproduced with wdoekes' setup mentioned in the issue report.
> After finishing the changes to the patch, I confirmed that following the same steps no longer produced the segfault, undid the patch to double check that I was doing it right, and then decided it was safe to post this review.
>
>
> Thanks,
>
> jrose
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20120214/de55ae63/attachment-0001.htm>
More information about the asterisk-dev
mailing list