<div class="__aliyun_email_body_block"><div  style="line-height:1.7;font-family:Tahoma,Arial,STHeiti,SimSun;font-size:14.0px;color:#000000;"><div  style="clear:both;">Dear <span >Ubuntu Developers</span>,<br ></div><div  style="clear:both;">     I'm a student from Nanjing University, and I'm taking a survey about how exported symbols influence cooperation between libraries in C & C++. I find there are some symbols of boost exported in this library "/<span >usr/lib/apache2/modules/mod_passenger.so"</span> (from <span >libapache2-mod-passenger_5.0.30-1+deb9u1build0.18.04.1_amd64.deb in Ubuntu 18.04 sources</span>). I'm curious about why those symbols are exported, is it by design or just an accident? May those symbols conflict with the original boost library (e.g. a program depends on both boost and this library)? Thank you!<br ><br >List of the boost symbol in "<span >mod_passenger.so"</span> are in the following:</div><div  style="clear:both;"><br ><span >_ZN5boost6detail23get_current_thread_dataEv<br ></span><div  style="clear:both;">_ZN5boost11this_thread20restore_interruptionC1ERNS0_20disable_interruptionE<br ></div><div  style="clear:both;">_ZN5boost6thread20hardware_concurrencyEv<br ></div><div  style="clear:both;">_ZN5boost6detail16thread_data_baseD2Ev<br ></div><div  style="clear:both;">_ZN5boost11this_thread20restore_interruptionD2Ev<br ></div><div  style="clear:both;">_ZN5boost6detail12set_tss_dataEPKvNS_10shared_ptrINS0_20tss_cleanup_functionEEEPvb<br ></div><div  style="clear:both;">_ZN5boost6thread13native_handleEv<br ></div><div  style="clear:both;">_ZNK5boost6thread22interruption_requestedEv<br ></div><div  style="clear:both;">_ZN5boost6thread6detachEv<br ></div><div  style="clear:both;">_ZN5boost6detail24add_thread_exit_functionEPNS0_25thread_exit_function_baseE<br ></div><div  style="clear:both;">_ZN5boost6detail16thread_data_baseD0Ev<br ></div><div  style="clear:both;">_ZN5boost6detail12get_tss_dataEPKv<br ></div><div  style="clear:both;">_ZN5boost11this_thread22interruption_requestedEv<br ></div><div  style="clear:both;">_ZN5boost6thread20physical_concurrencyEv<br ></div><div  style="clear:both;">_ZNK5boost6thread15get_thread_infoEv<br ></div><div  style="clear:both;">_ZN5boost11this_thread18interruption_pointEv<br ></div><div  style="clear:both;">_ZN5boost6thread21start_thread_noexceptEv<br ></div><div  style="clear:both;">_ZN5boost11this_thread20disable_interruptionC1Ev<br ></div><div  style="clear:both;">_ZN5boost11this_thread20restore_interruptionD1Ev<br ></div><div  style="clear:both;">_ZN5boost6thread13join_noexceptEv<br ></div><div  style="clear:both;">_ZN5boost6thread9interruptEv<br ></div><div  style="clear:both;">_ZN5boost11this_thread20disable_interruptionD2Ev<br ></div><div  style="clear:both;">_ZN5boost6thread21start_thread_noexceptERKNS_17thread_attributesE<br ></div><div  style="clear:both;">_ZNK5boost6thread8joinableEv<br ></div><div  style="clear:both;">_ZN5boost6threadC1Ev<br ></div><div  style="clear:both;">_ZN5boost11this_thread20disable_interruptionC2Ev<br ></div><div  style="clear:both;">_ZN5boost6detail25make_ready_at_thread_exitENS_10shared_ptrINS0_17shared_state_baseEEE<br ></div><div  style="clear:both;">_ZN5boost11this_thread5yieldEv<br ></div><div  style="clear:both;">_ZN5boost11this_thread20restore_interruptionC2ERNS0_20disable_interruptionE<br ></div><div  style="clear:both;">_ZN5boost6detail16thread_data_baseD1Ev<br ></div><div  style="clear:both;">_ZN5boost11this_thread20interruption_enabledEv<br ></div><div  style="clear:both;">_ZN5boost6threadC2Ev<br ></div><div  style="clear:both;">_ZN5boost25notify_all_at_thread_exitERNS_18condition_variableENS_11unique_lockINS_5mutexEEE<br ></div><span >_ZN5boost11this_thread20disable_interruptionD1Ev</span></div><div  style="clear:both;"><span ><br ></span></div><div  style="clear:both;"><span >demangled:</span></div><div  style="clear:both;"><span ><br ></span></div><div  style="clear:both;"><span ><span >boost::detail::get_current_thread_data()<br ></span></span><div  style="clear:both;">boost::this_thread::restore_interruption::restore_interruption(boost::this_thread::disable_interruption&)<br ></div><div  style="clear:both;">boost::thread::hardware_concurrency()<br ></div><div  style="clear:both;">boost::detail::thread_data_base::~thread_data_base()<br ></div><div  style="clear:both;">boost::this_thread::restore_interruption::~restore_interruption()<br ></div><div  style="clear:both;">boost::detail::set_tss_data(void const*, boost::shared_ptr<boost::detail::tss_cleanup_function>, void*, bool)<br ></div><div  style="clear:both;">boost::thread::native_handle()<br ></div><div  style="clear:both;">boost::thread::interruption_requested() const<br ></div><div  style="clear:both;">boost::thread::detach()<br ></div><div  style="clear:both;">boost::detail::add_thread_exit_function(boost::detail::thread_exit_function_base*)<br ></div><div  style="clear:both;">boost::detail::thread_data_base::~thread_data_base()<br ></div><div  style="clear:both;">boost::detail::get_tss_data(void const*)<br ></div><div  style="clear:both;">boost::this_thread::interruption_requested()<br ></div><div  style="clear:both;">boost::thread::physical_concurrency()<br ></div><div  style="clear:both;">boost::thread::get_thread_info() const<br ></div><div  style="clear:both;">boost::this_thread::interruption_point()<br ></div><div  style="clear:both;">boost::thread::start_thread_noexcept()<br ></div><div  style="clear:both;">boost::this_thread::disable_interruption::disable_interruption()<br ></div><div  style="clear:both;">boost::this_thread::restore_interruption::~restore_interruption()<br ></div><div  style="clear:both;">boost::thread::join_noexcept()<br ></div><div  style="clear:both;">boost::thread::interrupt()<br ></div><div  style="clear:both;">boost::this_thread::disable_interruption::~disable_interruption()<br ></div><div  style="clear:both;">boost::thread::start_thread_noexcept(boost::thread_attributes const&)<br ></div><div  style="clear:both;">boost::thread::joinable() const<br ></div><div  style="clear:both;">boost::thread::thread()<br ></div><div  style="clear:both;">boost::this_thread::disable_interruption::disable_interruption()<br ></div><div  style="clear:both;">boost::detail::make_ready_at_thread_exit(boost::shared_ptr<boost::detail::shared_state_base>)<br ></div><div  style="clear:both;">boost::this_thread::yield()<br ></div><div  style="clear:both;">boost::this_thread::restore_interruption::restore_interruption(boost::this_thread::disable_interruption&)<br ></div><div  style="clear:both;">boost::detail::thread_data_base::~thread_data_base()<br ></div><div  style="clear:both;">boost::this_thread::interruption_enabled()<br ></div><div  style="clear:both;">boost::thread::thread()<br ></div><div  style="clear:both;">boost::notify_all_at_thread_exit(boost::condition_variable&, boost::unique_lock<boost::mutex>)<br ></div><div ><span >boost::this_thread::disable_interruption::~disable_interruption()</span></div></div><div  style="clear:both;"><br ></div><div  style="clear:both;">Best regards,<br >Liang<br >10/22/2020</div></div></div>