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