[asterisk-dev] [Code Review] Out-of-tree modules can fail because of compiler flag differences.

Jeff Peeler jpeeler at digium.com
Thu Apr 22 12:32:25 CDT 2010


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

Ship it!


I can't find anything wrong here, but it would be good to try and test with a third party module if possible.


/trunk/include/asterisk/lock.h
<https://reviewboard.asterisk.org/r/508/#comment4102>

    Spacing is inconsistent here: a, # a


- Jeff


On 2010-04-12 15:55:13, Jason Parker wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/508/
> -----------------------------------------------------------
> 
> (Updated 2010-04-12 15:55:13)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Summary
> -------
> 
> When compiling modules out-of-tree, there is a large potential for ABI breakage, due to changing compiler flags.  If Asterisk is compiled with DEBUG_THREADS, and an out-of-tree module is not, it should not give undefined symbol errors during load (in fact, there's no reason it shouldn't work).  The biggest problem areas seemed to be DEBUG_THREADS and DEBUG_CHANNEL_LOCKS.
> 
> Is this the right way to go about this?
> 
> 
> Note: Many of the functions in lock.h had to be moved into a .c file (main/lock.c).  They were defined as static inline, which defeats much of the purpose.  A module *would* have the information about where a lock was obtained, but since it was including lock.h without DEBUG_THREADS enabled, it wouldn't bother logging it - even though Asterisk would really like it to.
> 
> 
> Diffs
> -----
> 
>   /trunk/include/asterisk/astobj2.h 256980 
>   /trunk/include/asterisk/heap.h 256980 
>   /trunk/include/asterisk/lock.h 256980 
>   /trunk/include/asterisk/res_odbc.h 256980 
>   /trunk/main/astobj2.c 256980 
>   /trunk/main/heap.c 256980 
>   /trunk/main/lock.c PRE-CREATION 
>   /trunk/res/res_odbc.c 256980 
> 
> Diff: https://reviewboard.asterisk.org/r/508/diff
> 
> 
> Testing
> -------
> 
> Compile tests with/without DEBUG_THREADS and DEBUG_CHANNEL_LOCKS work great.  I've not tried building an external module with different flags yet.  I suspect that one would compile fine, but may not act properly, partially because of the note above.
> 
> 
> Thanks,
> 
> Jason
> 
>




More information about the asterisk-dev mailing list