question

Upvotes
Accepted
37 3 4 14

Crash on application using RFA C++ 770L1 and 771L1

Hi guys,

we're experiencing some crashes in an application of ours, based on RFA C++ 770L1.

Such application has been using RFA C++ 761L1 for years without issues, but after the upgrade to RFA C++ 770L1 (linked due to the rebranding), the application is experiencing regular crashes caused by the corruption of the stack of one of the application threads.

To double check our findings, we've tested several versions of the application, each of them rebuilt using both RFA C++ 770L1 and RFA C++ 761L1.

In all the cases, the application always crashed after few minutes using RFA C++ 770L1, whereas it has never crashed using RFA C++ 761L1 (days of runtime, currently still running).

We've also tried the latest RFA non-OMM version (771LI), unfortunately experiencing the same issue.

After a thorough but unsuccessful analysis, we've run the application under valgrind: when using RFA C++ 770L1 and 771L1, valgrind reports several warnings that are not present when using RFA C++ 761L1.

Those warnings are about invalid reads or writes occurring in the stack of one of the RFA threads, which might be relevant for this issue.


Could you please have a look on your side?

Let me know if I need to open a Support ticket for this.


Thanks

Best Regards,

Paolo


Please find here below the stacks in concern (with some polishing, removed re-occurrences of the same case):


Thread 5:

Invalid read of size 1

at 0x414E137: strtok (in /usr/lib/libc-2.17.so)

by 0x82FFD1B: rfa::sessionLayer::ServiceInfo::findNewsRic(rfa::common::RFA_String const&) const (in app_RFA_771L1.lx)

by 0x8290F82: rfa::sessionLayer::ItemRequest::processMarketDataItemEventImplMsg(rfa::sessionLayer::MarketDataItemEventImplMsg*) (in app_RFA_771L1.lx)

by 0x8287AC3: rfa::sessionLayer::ItemRequestMgr::processMarketDataItemEventImplMsg(rfa::sessionLayer::MarketDataItemEventImplMsg*) (in app_RFA_771L1.lx)

by 0x813CD24: rfa::sessionLayer::MarketDataSubscriberImpl::processMarketDataItemEventImplMsgEnum(rfa::support::SmartPtr<rfa::common::Message>&) (in app_RFA_771L1.lx)

by 0x814086B: rfa::sessionLayer::MarketDataSubscriberImpl::processResponseMsg(rfa::support::SmartPtr<rfa::common::Message>&) (in app_RFA_771L1.lx)

by 0x8126B05: rfa::sessionLayer::SessionImpl::dispatchResponseProcedure() (in app_RFA_771L1.lx)

by 0x81250F4: rfa::sessionLayer::SessionImpl_ResponseProcessingTimer::processTimerEvent() (in app_RFA_771L1.lx)

by 0x80CF6BB: RTREventNotifierImp::expireEvents() (in app_RFA_771L1.lx)

by 0x80CE61F: RTRSelectNotifier::enable() (in app_RFA_771L1.lx)

by 0x81277B1: rfa::sessionLayer::SessionImpl::runThread() (in app_RFA_771L1.lx)

by 0x81BA409: rfa::support::Thread::startWrapper(void*) (in app_RFA_771L1.lx)

Address 0xf6adb1a is on thread 7's stack

1058 bytes below stack pointer


Invalid read of size 1

at 0x402E5A8: strlen (vg_replace_strmem.c:461)

by 0x80A41ED: rfa::common::RFA_String::set(char const*, unsigned int, bool) (in app_RFA_771L1.lx)

by 0x80A46E8: rfa::common::RFA_String::operator=(char const*) (in app_RFA_771L1.lx)

by 0x82FFCD3: rfa::sessionLayer::ServiceInfo::findNewsRic(rfa::common::RFA_String const&) const (in app_RFA_771L1.lx)

by 0x8290F82: rfa::sessionLayer::ItemRequest::processMarketDataItemEventImplMsg(rfa::sessionLayer::MarketDataItemEventImplMsg*) (in app_RFA_771L1.lx)

by 0x8287AC3: rfa::sessionLayer::ItemRequestMgr::processMarketDataItemEventImplMsg(rfa::sessionLayer::MarketDataItemEventImplMsg*) (in app_RFA_771L1.lx)

by 0x813CD24: rfa::sessionLayer::MarketDataSubscriberImpl::processMarketDataItemEventImplMsgEnum(rfa::support::SmartPtr<rfa::common::Message>&) (in app_RFA_771L1.lx)

by 0x814086B: rfa::sessionLayer::MarketDataSubscriberImpl::processResponseMsg(rfa::support::SmartPtr<rfa::common::Message>&) (in app_RFA_771L1.lx)

by 0x8126B05: rfa::sessionLayer::SessionImpl::dispatchResponseProcedure() (in app_RFA_771L1.lx)

by 0x81250F4: rfa::sessionLayer::SessionImpl_ResponseProcessingTimer::processTimerEvent() (in app_RFA_771L1.lx)

by 0x80CF6BB: RTREventNotifierImp::expireEvents() (in app_RFA_771L1.lx)

by 0x80CE61F: RTRSelectNotifier::enable() (in app_RFA_771L1.lx)

Address 0xf6adb1f is on thread 7's stack

1053 bytes below stack pointer


Invalid read of size 1

at 0x40304C8: memcpy (vg_replace_strmem.c:1036)

by 0x80A42A6: rfa::common::RFA_String::set(char const*, unsigned int, bool) (in app_RFA_771L1.lx)

by 0x80A46E8: rfa::common::RFA_String::operator=(char const*) (in app_RFA_771L1.lx)

by 0x82FFCD3: rfa::sessionLayer::ServiceInfo::findNewsRic(rfa::common::RFA_String const&) const (in app_RFA_771L1.lx)

by 0x8290F82: rfa::sessionLayer::ItemRequest::processMarketDataItemEventImplMsg(rfa::sessionLayer::MarketDataItemEventImplMsg*) (in app_RFA_771L1.lx)

by 0x8287AC3: rfa::sessionLayer::ItemRequestMgr::processMarketDataItemEventImplMsg(rfa::sessionLayer::MarketDataItemEventImplMsg*) (in app_RFA_771L1.lx)

by 0x813CD24: rfa::sessionLayer::MarketDataSubscriberImpl::processMarketDataItemEventImplMsgEnum(rfa::support::SmartPtr<rfa::common::Message>&) (in app_RFA_771L1.lx)

by 0x814086B: rfa::sessionLayer::MarketDataSubscriberImpl::processResponseMsg(rfa::support::SmartPtr<rfa::common::Message>&) (in app_RFA_771L1.lx)

by 0x8126B05: rfa::sessionLayer::SessionImpl::dispatchResponseProcedure() (in app_RFA_771L1.lx)

by 0x81250F4: rfa::sessionLayer::SessionImpl_ResponseProcessingTimer::processTimerEvent() (in app_RFA_771L1.lx)

by 0x80CF6BB: RTREventNotifierImp::expireEvents() (in app_RFA_771L1.lx)

by 0x80CE61F: RTRSelectNotifier::enable() (in app_RFA_771L1.lx)

Address 0xf6adb1f is on thread 7's stack

1053 bytes below stack pointer

rfac++
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.

1 Answer

Upvotes
Accepted
45.2k 103 44 60

@Paolo Parlapiano

Yes, we need the API support team to replicate and investigate this issue.

Please submit this issue to the RDC support team via Contact Premium Support at Refinitiv Robust Foundation API (RFA) C++.


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.

Thanks, issue opened.