<html><head></head><body><div class="ydpb0c7b959yahoo-style-wrap" style="font-family: lucida console, sans-serif; font-size: 16px;"><div><div dir="ltr" data-setdir="false">I forgot to add the bt</div><div dir="ltr" data-setdir="false"><br><br><div><div>#0  0x00007f7ac3444d4e in ?? () from /lib/x86_64-linux-gnu/libdbus-1.so.3</div><div>(gdb) bt</div><div>#0  0x00007f7ac3444d4e in ?? () from /lib/x86_64-linux-gnu/libdbus-1.so.3</div><div>#1  0x00007f7ac3224a77 in DBus::MessageIter::recurse() () from /usr/lib/x86_64-linux-gnu/libdbus-c++-1.so.0</div><div>#2  0x00007f7ac3a421ac in HostQuery () from /usr/lib/x86_64-linux-gnu/libhostcomm.so.0</div><div>#3  0x000055dd5ee7a6c8 in ?? ()</div><div>#4  0x000055dd5ee7cb54 in ?? ()</div><div>#5  0x000055dd5ee685ae in ?? ()</div><div>#6  0x00007f7ac357809b in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6</div><div>#7  0x000055dd5ee68f4a in ?? ()</div><div>(gdb) </div><div><br></div></div><br></div><div><br></div><div class="ydpb0c7b959signature"><div style="font-family:sans-serif;font-size:16px;"><div style="font-family:sans-serif;font-size:16px;" dir="ltr"><br></div></div></div></div>
        
        </div><div id="ydp33ef4f68yahoo_quoted_2870267855" class="ydp33ef4f68yahoo_quoted">
            <div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
                
                <div>
                    On Tuesday, September 28, 2021, 01:50:42 PM PDT, Srinadh Penugonda <srinadh0@yahoo.com> wrote:
                </div>
                <div><br></div>
                <div><br></div>
                <div><div id="ydp33ef4f68yiv3519507100"><div><div class="ydp33ef4f68yiv3519507100ydpd32ff82dyahoo-style-wrap" style="font-family:lucida console, sans-serif;font-size:16px;"><div dir="ltr">Hi All,</div><div dir="ltr"><br></div><div dir="ltr">I am pretty new to using dbus and wondering if someone could help on understanding why I see a seqfault.</div><div dir="ltr"><br></div><div dir="ltr">I am trying to write a client wrapper to communicate to a module on the host. </div><div dir="ltr"><br></div><div dir="ltr">I have generated the proxy header based on the interface of the host module. </div><div dir="ltr">And have a method to communicate to the particular host module.<br><br>When I try to use that method to send a message to the host module, I see the above coredump.<br><br>Backtrace does not display anything - looks like stack is all corrupted.</div><div dir="ltr"><br></div><div dir="ltr">This is my host module:<br><div><div style="font-family:Menlo, Monaco, Consolas, Courier New, Courier, monospace;font-size:14px;white-space:pre-wrap;"><pre>   @host_service.method(host_service.bus_name(MOD_NAME), in_signature='as', out_signature='is')
    def key_ctl(self, options):
        param = options[0]
        value = options[1]</pre></div></div><br><br>Busctl shows the following:<br><div><div style="font-family:Menlo, Monaco, Consolas, Courier New, Courier, monospace;font-size:14px;white-space:pre-wrap;"><pre>root@sonic:~# busctl introspect org.SONiC.HostService.keyhandler  /org/SONiC/HostService/keyhandler
NAME                                TYPE      SIGNATURE RESULT/VALUE FLAGS
org.SONiC.HostService.keyhandler    interface -         -            -
.key_ctl                            method    as        is           -</pre></div></div><br><br>This is the proxy xml:<br><div><div style="font-family:Menlo, Monaco, Consolas, Courier New, Courier, monospace;font-size:14px;white-space:pre-wrap;"><pre>  <interface name="org.SONiC.HostService.keyhandler">
      <method name="key_ctl">
          <arg direction="in"  type="as" name="data"/>                <!-- Must be a list of strings -->
          <arg direction="out" type="(is)" name="(success, output)"/> <!-- output -->
      </method>
  </interface></pre></div></div><br>My wrapper is as below:<br><div><div>static DBus::Connection  & get_dbusconn()</div><div>{</div><div>    static DBus::Connection  * conn_p = nullptr;</div><div>    if (conn_p == nullptr)</div><div>    {</div><div>        // DBus::BusDispatcher is a "main loop" construct that</div><div>        // handles (i.e. dispatched) DBus messages. This should</div><div>        // be defined as a singleton to avoid memory leaks.</div><div>        static DBus::BusDispatcher dispatcher;</div><div><br></div><div>        // DBus::default_dispatcher must be initialized before DBus::Connection.</div><div>        DBus::default_dispatcher = &dispatcher;</div><div><br></div><div>        static DBus::Connection conn = DBus::Connection::SystemBus();</div><div><br></div><div>        conn_p = &conn;</div><div>    }</div><div><br></div><div>    return *conn_p;</div><div>}</div><div><br></div></div><br><div><div>using namespace std;</div><div>extern "C" ::DBus::Struct<int, string>  HostQuery(const char *path_p, const char *val_p[]) {</div><div>    // tokenize module and action</div><div>    string s(path_p);</div><div>    stringstream ss(s);</div><div>    vector<string> tokens;</div><div>    string temp_str;</div><div><br></div><div>    while (getline(ss, temp_str, '.')) { //use . as delim for tokenizing string</div><div>       tokens.push_back(temp_str);</div><div>    }</div><div>    syslog(LOG_CRIT, "HostQuery - tokens[0] %s tokens[1] %s\n", tokens[0].c_str(), tokens[1].c_str());</div><div>    syslog(LOG_CRIT, "HostQuery - val_p[0] %s val_p[1] %s\n", val_p[0], val_p[1]);</div><div><br></div><div>    // get absolute paths with the module</div><div>    string name(DBUS_BUS_NAME_BASE);</div><div>    name += tokens[0];</div><div><br></div><div>    string path(DBUS_OBJ_PATH_BASE);</div><div>    path += tokens[0];</div><div>    syslog(LOG_CRIT, "HOstQuery - name %s path %s\n", name.c_str(), path.c_str());</div><div>    ::DBus::Struct<int/*success*/, std::string/*errmsg*/> ret;</div><div><br></div><div>    try {</div><div>        keyhandler_proxy_c host_client(get_dbusconn(), path.c_str(), name.c_str());</div><div><br></div><div>        //TODO: need to find how many elements are there in val_p.</div><div>        // for encrypt/decrypt, there may be only one element in it.</div><div>        // but for masterkey update, there could be two elements</div><div>        vector<string> vals = {"pwEncrypt","eventd"};</div><div><br></div><div>        //vector<string> vals;</div><div>        //string v1(val_p[0]);</div><div>        //string v2(val_p[1]);</div><div>        //vals.push_back(v1);</div><div>        //vals.push_back(v2);</div><div><br></div><div>        ret = host_client.key_ctl(vals);</div><div>    } catch (DBus::Error & ex) {</div><div>        syslog(LOG_CRIT, "hostquery - DBus Exception %s\n", ex.what());</div><div>        syslog(LOG_CRIT, "hostquery (path %s val_p[0] %s \n", path_p, val_p[0]);</div><div>    }</div><div><br></div><div>    return ret;</div><div>}</div><div><br></div></div><br><br><br>The log shows the following.<br><div><div>Sep 28 20:37:47.524196+00:00 2021 sonic CRIT eventd#eventd[22]: HostQuery - tokens[0] keyhandler tokens[1] key_ctl</div><div>Sep 28 20:37:47.526096+00:00 2021 sonic CRIT eventd#eventd[22]: HostQuery - val_p[0] pwEncrypt val_p[1] eventd</div><div>Sep 28 20:37:47.526096+00:00 2021 sonic CRIT eventd#eventd[22]: HOstQuery - name org.SONiC.HostService.keyhandler path /org/SONiC/HostService/keyhandler</div><div>Sep 28 20:37:47.540123+00:00 2021 sonic CRIT kernel: [16070.635164] eventd[29966]: segfault at 10 ip 00007fbb33028d4e sp 00007ffd8d3bf380 error 4 in libdbus-1.so.3.19.13[7fbb33027000+2e000]</div><div>Sep 28 20:37:47.540105+00:00 2021 sonic WARNING kernel: [16068.361437] IPv6: PREDAD not set IP6: 00000000000000000000000000000001/80 state: 00000001</div><div>Sep 28 20:37:47.540123+00:00 2021 sonic CRIT kernel: [16070.635164] eventd[29966]: segfault at 10 ip 00007fbb33028d4e sp 00007ffd8d3bf380 error 4 in libdbus-1.so.3.19.13[7fbb33027000+2e000]</div><div>Sep 28 20:37:47.560482+00:00 2021 sonic CRIT kernel: [16070.647419] Code: 04 00 66 90 ff 25 9a 32 04 00 66 90 ff 25 9a 32 04 00 66 90 ff 25 a2 32 04 00 66 90 48 8d 3d 11 eb 02 00 31 c0 e8 62 f5 ff ff <48> 8b 04 25 10 00 00 00 0f 0b e8 63 e4 ff ff 0f 1f 00 48 8d 3d 41</div><div>Sep 28 20:37:47.803046+00:00 2021 sonic CRIT systemd-coredump[29978]: Process 29966 (eventd) of user 0 dumped core.#012#012Stack trace of thread 22:#012#0  0x00007fbb33028d4e n/a (libdbus-1.so.3)#012#1  0x00007fbb32e08a77 _ZN4DBus11MessageIter7recurseEv (libdbus-c++-1.so.0)#012#2  0x00007fbb336261ac n/a (/usr/lib/x86_64-linux-gnu/libhostcomm.so.0.0.0)#012#3  0x00007ffd00600000 n/a (n/a)</div><div>Sep 28 20:37:50.856971+00:00 2021 sonic NOTICE eventd#eventd[23][16073.969937] eventd[30278]: segfault at 10 ip 00007f7b4ba01d4e sp 00007ffe3d7ba040 error 4 in libdbus-1.so.3.19.13[7f7b4ba00000+2e000]</div><div>: :- read_events[16073.982372] Code: 04 00 66 90 ff 25 9a 32 04 00 66 90 ff 25 9a 32 04 00 66 90 ff 25 a2 32 04 00 66 90 48 8d 3d 11 eb 02 00 31 c0 e8 62 f5 ff ff <48> 8b 04 25 10 00 00 00 0f 0b e8 63 e4 ff ff 0f 1f 00 48 8d 3d 41</div><div><br></div></div><br><br></div><div><br></div><div><br></div><div class="ydp33ef4f68yiv3519507100ydpd32ff82dsignature"><div style="font-family:sans-serif;font-size:16px;"><div style="font-family:sans-serif;font-size:16px;" dir="ltr"><span><span style="color:rgb(0, 0, 0);font-family:sans-serif;font-size:16px;">~~  Thanks, Srinadh</span></span><br></div><div style="font-family:sans-serif;font-size:16px;" dir="ltr"><br></div><div style="font-family:sans-serif;font-size:16px;"><div><br></div><div><br></div></div></div></div></div></div></div></div>
            </div>
        </div></body></html>