<p>Max <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/13318">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Pau Espin Pedrol: Looks good to me, but someone else must approve
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Explicitly clean up BTS singleton<br><br>Add method to explicitly cleanup BTS singleton similar to GprsMsStorage<br>class and use it from main(). The destructor becomes trivial wrapper<br>around cleanup() method.<br><br>This prevents annoying SIGABRT on exit of OsmoPCU caused by<br>rate_ctr_group_free() being called after talloc_free() which removes the<br>context in which counter group is allocated.<br><br>Change-Id: I796d56a7de3f3a1f9d59708995c8e3e9b05a2747<br>---<br>M src/bts.cpp<br>M src/bts.h<br>M src/pcu_main.cpp<br>3 files changed, 22 insertions(+), 3 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/bts.cpp b/src/bts.cpp</span><br><span>index 1804c52..e07b840 100644</span><br><span>--- a/src/bts.cpp</span><br><span>+++ b/src/bts.cpp</span><br><span>@@ -197,6 +197,11 @@</span><br><span>         return BTS::main_bts()->bts_data();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+void bts_cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        return BTS::main_bts()->cleanup();</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> struct rate_ctr_group *bts_main_data_stats()</span><br><span> {</span><br><span>      return BTS::main_bts()->rate_counters();</span><br><span>@@ -239,16 +244,27 @@</span><br><span>  OSMO_ASSERT(m_statg);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-BTS::~BTS()</span><br><span style="color: hsl(120, 100%, 40%);">+void BTS::cleanup()</span><br><span> {</span><br><span>  /* this can cause counter updates and must not be left to the</span><br><span>         * m_ms_store's destructor */</span><br><span>    m_ms_store.cleanup();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       rate_ctr_group_free(m_ratectrs);</span><br><span style="color: hsl(0, 100%, 40%);">-        osmo_stat_item_group_free(m_statg);</span><br><span style="color: hsl(120, 100%, 40%);">+   if (m_ratectrs) {</span><br><span style="color: hsl(120, 100%, 40%);">+             rate_ctr_group_free(m_ratectrs);</span><br><span style="color: hsl(120, 100%, 40%);">+              m_ratectrs = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   if (m_statg) {</span><br><span style="color: hsl(120, 100%, 40%);">+                osmo_stat_item_group_free(m_statg);</span><br><span style="color: hsl(120, 100%, 40%);">+           m_statg = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+BTS::~BTS()</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    cleanup();</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span> void BTS::set_current_frame_number(int fn)</span><br><span> {</span><br><span>diff --git a/src/bts.h b/src/bts.h</span><br><span>index b83ab4b..ee5a692 100644</span><br><span>--- a/src/bts.h</span><br><span>+++ b/src/bts.h</span><br><span>@@ -272,6 +272,7 @@</span><br><span> </span><br><span>      BTS();</span><br><span>       ~BTS();</span><br><span style="color: hsl(120, 100%, 40%);">+       void cleanup();</span><br><span> </span><br><span>  static BTS* main_bts();</span><br><span> </span><br><span>@@ -591,6 +592,7 @@</span><br><span> #ifdef __cplusplus</span><br><span> extern "C" {</span><br><span> #endif</span><br><span style="color: hsl(120, 100%, 40%);">+   void bts_cleanup();</span><br><span>  struct gprs_rlcmac_bts *bts_main_data();</span><br><span>     struct rate_ctr_group *bts_main_data_stats();</span><br><span>        struct osmo_stat_item_group *bts_main_data_stat_items();</span><br><span>diff --git a/src/pcu_main.cpp b/src/pcu_main.cpp</span><br><span>index a0f31d1..c39c337 100644</span><br><span>--- a/src/pcu_main.cpp</span><br><span>+++ b/src/pcu_main.cpp</span><br><span>@@ -356,6 +356,7 @@</span><br><span> </span><br><span>      pcu_l1if_close();</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ bts_cleanup();</span><br><span>       talloc_report_full(tall_pcu_ctx, stderr);</span><br><span>    talloc_free(tall_pcu_ctx);</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13318">change 13318</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/13318"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-pcu </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I796d56a7de3f3a1f9d59708995c8e3e9b05a2747 </div>
<div style="display:none"> Gerrit-Change-Number: 13318 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: Max <msuraev@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Max <msuraev@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Pau Espin Pedrol <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>