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

David Vossel dvossel at digium.com
Wed Mar 3 18:27:01 CST 2010


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

Ship it!


Great work!  As long as this compiles under all the different conditions I believe this is ready to go. It turns out that my couple of comments are just about previous behavior that looks odd now that it is more obvious what is happening.


/branches/1.4/main/channel.c
<https://reviewboard.asterisk.org/r/508/#comment3646>

    DEBUG_THREADS is nested here in the CHANNEL_LOCKS ifdef. Would this cause a problem?



/branches/1.4/main/channel.c
<https://reviewboard.asterisk.org/r/508/#comment3645>

    is it a problem that DEBUG_THREADS is nested within the DEBUG_CHANNEL_LOCKS ifdef?


- David


On 2010-03-02 17:40:06, Jason Parker wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/508/
> -----------------------------------------------------------
> 
> (Updated 2010-03-02 17:40:06)
> 
> 
> 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
> -----
> 
>   /branches/1.4/include/asterisk/astobj2.h 249888 
>   /branches/1.4/include/asterisk/lock.h 249888 
>   /branches/1.4/main/Makefile 249888 
>   /branches/1.4/main/astobj2.c 249888 
>   /branches/1.4/main/channel.c 249888 
>   /branches/1.4/main/lock.c PRE-CREATION 
> 
> 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