question

Upvotes
Accepted
26 1 3 12

Application crash at LoginCallbackClient::processStatusMsg(RsslMsg*, RsslReactorChannel*, RsslRDMLoginMsgEvent*)

Hi i am using ema3.6.6.L1. My application crashes time to time with following stack-trace. Could this be due to an invalid message received (A decoding error) ?


Using host libthread_db library "/usr/lib64/libthread_db.so.1".
Core was generated by `PricingServer Pricing:1:1:PricingServer:1'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f77662be04d in refinitiv::ema::access::LoginCallbackClient::processStatusMsg(RsslMsg*, RsslReactorChannel*, RsslRDMLoginMsgEvent*) ()
   from /x01/fxexnft/current/libs/libpricefeedelektron.od.so
[Current thread is 1 (Thread 0x7f7746364700 (LWP 1127791))]
Missing separate debuginfos, use: yum debuginfo-install enterpriseonload-7.1.4.32-1.el8.x86_64 glibc-2.28-211.el8.x86_64 keyutils-libs-1.5.10-9.el8.x86_64 krb5-libs-1.18.2-22.el8_7.x86_64 libaio-0.3.112-1.el8.x86_64 libcom_err-1.45.6-5.el8.x86_64 libgcc-8.5.0-16.el8_7.x86_64 libibverbs-41.0-1.el8.x86_64 libnl3-3.7.0-1.el8.x86_64 libnsl-2.28-211.el8.x86_64 librdmacm-41.0-1.el8.x86_64 libstdc++-8.5.0-16.el8_7.x86_64 libtirpc-1.1.4-8.el8.x86_64 libxcrypt-4.1.1-6.el8.x86_64 libxml2-2.9.7-15.el8_7.1.x86_64 numactl-libs-2.0.12-13.el8.x86_64 openssl-libs-1.1.1k-9.el8_7.x86_64 pcre2-10.32-3.el8_6.x86_64 xz-libs-5.2.4-4.el8_6.x86_64 zlib-1.2.11-21.el8_7.x86_64
(gdb) bt
#0  0x00007f77662be04d in refinitiv::ema::access::LoginCallbackClient::processStatusMsg(RsslMsg*, RsslReactorChannel*, RsslRDMLoginMsgEvent*) ()
   from /x01/fxexnft/current/libs/libpricefeedelektron.od.so
#1  0x00007f77662bf602 in refinitiv::ema::access::LoginCallbackClient::processCallback(RsslReactor*, RsslReactorChannel*, RsslRDMLoginMsgEvent*) ()
   from /x01/fxexnft/current/libs/libpricefeedelektron.od.so
#2  0x00007f77663ba367 in _reactorProcessMsg () from /x01/fxexnft/current/libs/libpricefeedelektron.od.so
#3  0x00007f77663bc65a in _reactorWatchlistMsgCallback () from /x01/fxexnft/current/libs/libpricefeedelektron.od.so
#4  0x00007f77663e3d8a in rsslWatchlistReadMsg () from /x01/fxexnft/current/libs/libpricefeedelektron.od.so
#5  0x00007f77663bca3e in _reactorReadWatchlistMsg () from /x01/fxexnft/current/libs/libpricefeedelektron.od.so
#6  0x00007f77663bcffb in _processRsslRwfMessage () from /x01/fxexnft/current/libs/libpricefeedelektron.od.so
#7  0x00007f77663bd6cf in _reactorDispatchFromChannel () from /x01/fxexnft/current/libs/libpricefeedelektron.od.so
#8  0x00007f77663c4d2a in rsslReactorDispatch () from /x01/fxexnft/current/libs/libpricefeedelektron.od.so
#9  0x00007f77662c6dcd in refinitiv::ema::access::OmmBaseImpl::rsslReactorDispatchLoop(long long, unsigned int, bool&) ()
   from /x01/fxexnft/current/libs/libpricefeedelektron.od.so
#10 0x00007f77662c72df in non-virtual thunk to refinitiv::ema::access::OmmBaseImpl::run() () from /x01/fxexnft/current/libs/libpricefeedelektron.od.so
#11 0x00007f776631c17a in refinitiv::ema::access::Thread::runThread(void*) () from /x01/fxexnft/current/libs/libpricefeedelektron.od.so
#12 0x00007f7778ca71ca in start_thread () from /usr/lib64/libpthread.so.0
#13 0x00007f7778912e73 in clone () from /usr/lib64/libc.so.6
(gdb) f 0
#0  0x00007f77662be04d in refinitiv::ema::access::LoginCallbackClient::processStatusMsg(RsslMsg*, RsslReactorChannel*, RsslRDMLoginMsgEvent*) ()
   from /x01/fxexnft/current/libs/libpricefeedelektron.od.so
(gdb)
#0  0x00007f77662be04d in refinitiv::ema::access::LoginCallbackClient::processStatusMsg(RsslMsg*, RsslReactorChannel*, RsslRDMLoginMsgEvent*) ()
   from /x01/fxexnft/current/libs/libpricefeedelektron.od.so
#technologyema-apic++refinitiv-realtime-sdk
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
Accepted
80.4k 260 52 75

@thilinaillangasinghe

Thank you for reaching out to us.

The call stack indicates that the API crashed when processing the retrieved login status message.

Can you enable tracing in the API? Therefore, we can verify the message retrieved by the API.

You can enable tracing by setting the following confiuration (XmlTraceToFile) in the Consumer. For example:

    <ConsumerList>
        <Consumer>
            <Name value="Consumer_1"/>
            <Channel value="Channel_1"/>      
            <Logger value="Logger_1"/>
            <Dictionary value="Dictionary_2"/>
            <XmlTraceToFile value="1"/>
        </Consumer>

With this configuration, the EmaTrace_xxx.xml file will created in the working directory.

Otherwise, you can try the new version of EMA 3.7.2.L1.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
26 1 3 12

As it seems, crash happens because i do not unregister handles (logins, marketdata etc.) whenever i delete consumer upon receiving a force logout message. After i unregistered them properly crash was not reproduced. In warm standby mode, how should "Force Logout from DACs" handled? Intially both active and standby connections are logged in and do RICs subscription as well. Whenever active server has a "Force Logout from DACs" my OnStatusMsg callback was not fired (Without warm standby mode, it got fired as expected), therefore i cannot destroy consumer objects and recreate. Can you explain how force logout from DACs message flow occurs with Warm Standby Mode?

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@thilinaillangasinghe

It could be a design or bug in the API when using the WarmStandby mode.

If you are a RDC (Refinitiv Developer Connect) named user, please submit this query to the API support team via Contact Premium Support.

Otherwise, you can submit this issue on GitHub.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.