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

Jason Parker jparker at digium.com
Tue Mar 2 17:40:06 CST 2010


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

(Updated 2010-03-02 17:40:06.506326)


Review request for Asterisk Developers.


Changes
-------

Address comments from Kevin.  I opted to just move the ast_mutex_info struct up to where it's typedef'd to ast_mutex_t, rather than explain why it wasn't already (it was a fairly silly reason).


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 (updated)
-----

  /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