<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <tt>Hi, Mickael!<br>
      <br>
      Not sure why the signal is triggered. But what you could do is to
      replicate the behavior of the function until you find the proper
      id.<br>
      <br>
      Best regards,<br>
    </tt>
    <pre class="moz-signature" cols="72">Răzvan Crainea
OpenSIPS Solutions
<a class="moz-txt-link-abbreviated" href="http://www.opensips-solutions.com">www.opensips-solutions.com</a></pre>
    <div class="moz-cite-prefix">On 06/23/2015 05:37 PM, Mickael
      Marrache wrote:<br>
    </div>
    <blockquote
cite="mid:CA+=4G22NHg6dpgNQdM67+p+00RPmeLKaTxE5L0gbZP04ASYxMg@mail.gmail.com"
      type="cite">
      <div dir="ltr">Hi Razvan,
        <div><br>
        </div>
        <div>I'm using GDB as follows:</div>
        <div><br>
        </div>
        <div>
          <div>(gdb) p get_avp_name_id(((struct
            usr_avp*)0x2ba445441948)-&gt;id)</div>
          <div><br>
          </div>
          <div>Program received signal SIGUSR2, User defined signal 2.</div>
          <div>get_avp_name_id (id=139) at usr_avp.c:263</div>
          <div>263     {</div>
          <div>The program being debugged was signaled while in a
            function called from GDB.</div>
          <div>GDB remains in the frame where the signal was received.</div>
          <div>To change this behavior use "set unwindonsignal on"</div>
          <div>Evaluation of the expression containing the function
            (get_avp_name_id) will be abandoned.</div>
        </div>
        <div><br>
        </div>
        <div>where ((struct usr_avp*)0x2ba445441948)-&gt;id gives me the
          AVP id.</div>
        <div><br>
        </div>
        <div>I expect the result to be of type str* (representing the
          AVP name) but it looks like some signal is received while
          executing the function.</div>
        <div><br>
        </div>
        <div>Any idea?</div>
        <div><br>
        </div>
        <div>Thanks,</div>
        <div>Mickael </div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On Tue, Jun 23, 2015 at 12:08 PM,
          Răzvan Crainea <span dir="ltr">&lt;<a moz-do-not-send="true"
              href="mailto:razvan@opensips.org" target="_blank">razvan@opensips.org</a>&gt;</span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div bgcolor="#FFFFFF" text="#000000"> <tt>Hi, Mickael!<br>
                <br>
                That's the correct usage, and the AVP is attached to the
                transaction, and destroyed when the transaction is
                destroyed. However, it depends on the context when the
                AVP is populated. Is it done for each message? Timer
                based?<br>
                If I were you, I'd continue tracing the name of the AVPs
                and checking where they are populated.<br>
                <br>
                Best regards,<br>
              </tt><span class="">
                <pre cols="72">Răzvan Crainea
OpenSIPS Solutions
<a moz-do-not-send="true" href="http://www.opensips-solutions.com" target="_blank">www.opensips-solutions.com</a></pre>
              </span>
              <div>
                <div class="h5">
                  <div>On 06/22/2015 07:28 PM, Mickael Marrache wrote:<br>
                  </div>
                  <blockquote type="cite">
                    <div dir="ltr">Looking for example at the DIALPLAN
                      module, it looks like the same procedure is
                      followed, so I don't see anything special I'm
                      doing here.</div>
                    <div class="gmail_extra"><br>
                      <div class="gmail_quote">On Mon, Jun 22, 2015 at
                        7:22 PM, Mickael Marrache <span dir="ltr">&lt;<a
                            moz-do-not-send="true"
                            href="mailto:mickaelmarrache@gmail.com"
                            target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:mickaelmarrache@gmail.com">mickaelmarrache@gmail.com</a></a>&gt;</span>
                        wrote:<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          <div dir="ltr">Hi Razvan,
                            <div><br>
                            </div>
                            <div>I do the following:</div>
                            <div><br>
                            </div>
                            <div>
                              <div>static str my_avp_name = {NULL, 0};</div>
                              <div>static pv_spec_t my_avp;</div>
                            </div>
                            <div><br>
                            </div>
                            <div>
                              <div>static param_export_t params[] = {</div>
                              <div><span style="white-space:pre-wrap">        .....</span></div>
                              <div><span style="white-space:pre-wrap">        </span>{
                                "my_avp",<span style="white-space:pre-wrap"> </span>STR_PARAM,

                                &amp;my_avp_name.s}</div>
                              <div>};</div>
                            </div>
                            <div><br>
                            </div>
                            <div>
                              <div>static int mod_init(void) {</div>
                              <div>        ....</div>
                              <div><span style="white-space:pre-wrap">        my</span>_avp_name.len

                                = strlen(my_avp_name.s);</div>
                            </div>
                            <div>        ....</div>
                            <div>        if(my_avp_name.s == NULL ||
                              my_avp_name.len == 0) {</div>
                            <div><span style="white-space:pre-wrap">                </span>return

                              -1;</div>
                            <div><span style="white-space:pre-wrap">        </span>}</div>
                            <div><span style="white-space:pre-wrap">        </span>if

                              (pv_parse_spec(&amp;my_avp_name,
                              &amp;my_avp) == 0 || my_avp.type !=
                              PVT_AVP) {</div>
                            <div><span style="white-space:pre-wrap">                </span>return

                              -1;</div>
                            <div><span style="white-space:pre-wrap">        </span>}</div>
                            <div>}</div>
                            <div><br>
                            </div>
                            <div>Then, when I want to set a value to my
                              AVP (for example, for setting an integer):</div>
                            <div><br>
                            </div>
                            <div>pv_value_t pvar_value;<br>
                            </div>
                            <div>
                              <div>pvar_value.flags =
                                PV_VAL_INT|PV_TYPE_INT;</div>
                              <div>pvar_value.ri = some_integer;</div>
                              <div>if(pv_set_value(msg, &amp;my_avp,
                                (int)EQ_T, &amp;pvar_value) &lt; 0) {</div>
                              <div><span style="white-space:pre-wrap">        </span>goto

                                error;</div>
                              <div>}</div>
                            </div>
                            <div><br>
                            </div>
                            <div>And, that's all. I don't detroy the AVP
                              after use because the module can't know
                              the AVP is not used anymore. I can destroy
                              the AVP in the script after use but I
                              thought it was handled automatically.</div>
                            <div><br>
                            </div>
                            <div>In the example I gave here, is the AVP
                              attached to a transaction? What are the
                              conditions for an AVP to be attached to a
                              transaction?</div>
                            <div><br>
                            </div>
                            <div>Thanks,</div>
                            <div>Mickael</div>
                          </div>
                          <div>
                            <div>
                              <div class="gmail_extra"><br>
                                <div class="gmail_quote">On Mon, Jun 22,
                                  2015 at 10:33 AM, Răzvan Crainea <span
                                    dir="ltr">&lt;<a
                                      moz-do-not-send="true"
                                      href="mailto:razvan@opensips.org"
                                      target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:razvan@opensips.org">razvan@opensips.org</a></a>&gt;</span>
                                  wrote:<br>
                                  <blockquote class="gmail_quote"
                                    style="margin:0 0 0
                                    .8ex;border-left:1px #ccc
                                    solid;padding-left:1ex">
                                    <div bgcolor="#FFFFFF"
                                      text="#000000"> <tt>Hi, Mickael!<br>
                                        <br>
                                        Both maps are relevant, because
                                        both of them contain id2name
                                        mappings. So you should
                                        definitely look into the avp_map
                                        too. Note that those mappings do
                                        not store AVPs, they only store
                                        the real name of the AVP, as you
                                        use in script, and they can be
                                        populated at startup (in this
                                        case they are stored in PKG) and
                                        runtime (stored in SHM).<br>
                                        It depends when the AVP should
                                        be destroyed: if they are
                                        attached to the transaction (and
                                        they usually are), they are
                                        automatically destroyed by the
                                        tm module. Otherwise the module
                                        that uses them, should take care
                                        of that.<br>
                                        <br>
                                        Best regards,<br>
                                      </tt><span>
                                        <pre cols="72">Răzvan Crainea
OpenSIPS Solutions
<a moz-do-not-send="true" href="http://www.opensips-solutions.com" target="_blank">www.opensips-solutions.com</a></pre>
                                      </span>
                                      <div>
                                        <div>
                                          <div>On 06/18/2015 09:56 PM,
                                            Mickael Marrache wrote:<br>
                                          </div>
                                          <blockquote type="cite">
                                            <div dir="ltr">Hi Razvan,
                                              <div><br>
                                              </div>
                                              <div>I looked at both
                                                avp_map and avp_map_shm.
                                                In our case, only
                                                avp_map_shm is relevant
                                                since the leak appears
                                                in shared memory. I only
                                                see 4 elements in this
                                                map while I can see a
                                                lot of remaining AVPs
                                                when looking at the
                                                memory dump created at
                                                shutdown using QM debug.
                                                Therefore, it looks like
                                                these AVPs are not in
                                                the map. Looking at the
                                                new_avp function in
                                                usr_avp.c, I don't see
                                                at any moment that an
                                                entry is added to the
                                                map for the new AVP.</div>
                                              <div><br>
                                              </div>
                                              <div>
                                                <div>(gdb) print
                                                  avp_map_shm-&gt;avl_count</div>
                                                <div>$5 = 4</div>
                                                <div>(gdb) print
                                                  avp_map-&gt;avl_count</div>
                                                <div>$6 = 140</div>
                                              </div>
                                              <div><br>
                                              </div>
                                              <div>Any idea?</div>
                                              <div><br>
                                              </div>
                                              <div>At which moment
                                                during execution an AVP
                                                is destroyed? Is it
                                                required for modules
                                                returning values to
                                                script through AVPs to
                                                destroy these AVPs? or
                                                are they automatically
                                                destroyed?</div>
                                              <div><br>
                                              </div>
                                              <div>Thanks,</div>
                                              <div>Mickael</div>
                                            </div>
                                            <div class="gmail_extra"><br>
                                              <div class="gmail_quote">On
                                                Thu, Jun 18, 2015 at
                                                7:33 PM, Răzvan Crainea
                                                <span dir="ltr">&lt;<a
                                                    moz-do-not-send="true"
href="mailto:razvan@opensips.org" target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:razvan@opensips.org">razvan@opensips.org</a></a>&gt;</span>
                                                wrote:<br>
                                                <blockquote
                                                  class="gmail_quote"
                                                  style="margin:0 0 0
                                                  .8ex;border-left:1px
                                                  #ccc
                                                  solid;padding-left:1ex">
                                                  <div bgcolor="#FFFFFF"
                                                    text="#000000"> <tt><span>Hi,

                                                        Mickael!<br>
                                                        <br>
                                                        This is not
                                                        entirely true -
                                                        you can define
                                                        AVPs with the
                                                        integer value 0.
                                                        Those will have
                                                        avp-&gt;flags ==
                                                        0 and
                                                        avp-&gt;data ==
                                                        0.<br>
                                                        What I'd do, is
                                                        to note down the
                                                        avp-&gt;id value
                                                        of those AVPs
                                                        and then try to
                                                        see their names.
                                                        To do that,
                                                        you'd have to
                                                        look into the
                                                        avp_map and
                                                        avp_map_shm maps
                                                        to see the
                                                        corresponding
                                                        name for that
                                                        id.
                                                        Alternatively
                                                        you can call in
                                                        your script the
                                                        avp_print()
                                                        method, which
                                                        prints all the
                                                        AVPs for a
                                                        specific
                                                        transaction
                                                        along with their
                                                        id and names.
                                                        Let me know how
                                                        this goes.<br>
                                                        <br>
                                                      </span> Best
                                                      regards,</tt><span>
                                                      <pre cols="72">Răzvan Crainea
OpenSIPS Solutions
<a moz-do-not-send="true" href="http://www.opensips-solutions.com" target="_blank">www.opensips-solutions.com</a>
</pre>
                                                    </span></div>
                                                </blockquote>
                                              </div>
                                            </div>
                                          </blockquote>
                                        </div>
                                      </div>
                                    </div>
                                  </blockquote>
                                </div>
                              </div>
                            </div>
                          </div>
                        </blockquote>
                      </div>
                    </div>
                  </blockquote>
                </div>
              </div>
            </div>
            <br>
            _______________________________________________<br>
            Users mailing list<br>
            <a moz-do-not-send="true"
              href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>
            <a moz-do-not-send="true"
              href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users"
              rel="noreferrer" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
            <br>
          </blockquote>
        </div>
        <br>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a>
<a class="moz-txt-link-freetext" href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>