NOTICE: Our Community is moving. Get more information.
I am facing a issue with Artix/C++ web service. We have one web service module that is written in C++.
Module simply receive a request and send to some other interface. and receive the response and send back to corresponding request.
When we are trying one request at a time, it is working fine.. we can say that it is working fine with sequential requests.
But when we try multiple request simultaneously then core is coming.. the strange thing is that core is coming on differnet place every time and pointing to some artix like things when we try debug using dbx.
please see log below for multiple core debug using dbx tool.
x: warning: cannot demangle '__1c9uX__unnamed_9QdDQdDQdDKAdNHJ0IXIErrorMap2F6Mi_rnGIT_BusOFaultException__'
dbx: warning: cannot demangle '__1c9uX__unnamed_9QdDQdDQdDKn1zOJ06kSwrite_header_parts6FpknGIT_BusRWSDLBindingFacade_pkn0BbAWSDLBindingOperationFacade_rn0BPWritableMessage_rn0BQSoapHeaderWriter_bb_v_'
dbx: warning: cannot demangle '__1c9uX__unnamed_9QdDQdDQdDKn1zOJ06kbCget_security_must_understand6FpnJIT_ConfigNConfiguration__b_'
dbx: warning: cannot demangle '__1c9uX__unnamed_9QdDQdDQdDKn1zOJ06kbRget_security_client_inbound_must_understand6FpnJIT_ConfigNConfiguration__b_'
detected a multithreaded program
t@17 (l@9) terminated by signal BUS (invalid address alignment)
Current function is CORBA::string_dup
118 return CORBA_string_dup(str);
121 IT_NAMESPACE_STATIC_INLINE void
123 char* str
current thread: t@17
 _smalloc(0x8, 0xfea427a8, 0x0, 0x8, 0x0, 0x0), at 0xfe9c1c68
 malloc(0x1, 0xe68056, 0x0, 0x0, 0x0, 0x1597390), at 0xfe9c1ca8
 CORBA_string_dup(0x1, 0x1558350, 0x38d080, 0xb01600, 0x0, 0xe68055), at 0xfdbca5c8
=> CORBA::string_dup(str = 0xe68055 ""), line 118 in "basic_types.h"
 los_global_namespace::po_vitCsImpl::sendCustomerServiceRecord(this = 0xffbeb758, WSHeader = CLASS, constCustomerServiceRecordRequest = CLASS, WSResponseHeader = CLASS, CustomerServiceRecordResponse = CLASS), line 4158 in "po_vitCsImpl.cpp"
los_global_namespace::PreOrderServer::smf_dispatch_sendCustomerServiceRecord(0xfa30d2f0, 0xfa30d2f0, 0xfa30d314, 0xfa30d314, 0xfa30d2f0, 0xfa30d2f0), at 0xa8ce14
 los_global_namespace::PreOrderServer::dispatch(0xffbeb758, 0x13b82e8, 0xf4ca74, 0x0, 0x274708, 0xfe665710), at 0xa8eee4
IT_Bus::ServantWrapper::dispatch(0x125f730, 0xfa30d2cc, 0xfedf460c, 0xfa30cf68, 0xfa30cf64, 0xff085b78), at 0xfedd21d0
 IT_Bus::SoapInterceptor::intercept_around_dispatch(0x1295438, 0xfa30d2cc, 0xf7531028, 0x143fbc0, 0xf6b67ef8, 0xf757bcc4), at 0xf6b65614
 IT_Bus::ServerEndpointHandlerImpl::message_received(0x12c8380, 0x1493458, 0x13b82e4, 0x1466d48, 0xf757ca50, 0xfa30d374), at 0xf753e6d0
 IT_Bus::ServerEndpointImpl::message_received(0x125ecf0, 0xfa30d960, 0x143fb70, 0xf757ca50, 0xf753e28c, 0xf757e1b4), at 0xf7539154
 IT_Bus::DispatchContextImpl::execute(0x143fb70, 0xfa30d960, 0xf7578d70, 0xf7564a88, 0xfa30d82c, 0x125ecf0), at 0xf754034c
 IT_Bus::MessagingTransportCallbackImpl::dispatch(0x13a6110, 0xfa30d960, 0x143fb70, 0x143fb70, 0xfb6538, 0x1), at 0xf75450d4
 IT_HTTP::ArtixHTTPService::do_post(0x13a64e8, 0xf6bd2a20, 0xf8f94134, 0xfa30d960, 0x13a653c, 0xfb6538), at 0xf8f4524c
 IT_HTTP::ArtixHTTPService::service_request(0x13a64e8, 0x142ff88, 0x14304a8, 0x3, 0xf8d8d8a4, 0xf8f495e4), at 0xf8f49608
also we tried multiple approach to resolve but still core is coming at uncertain place every time.
we tried following approach -
1- tried to see if there is any glocal variable and that is getting corrupt for multiple request.
2- most important thing is that we put in mutex block to make sure that only one thread is using at a time. bbut till we were getting core for multiple request.
3- we put extensive logging in code but there is no pointer provided by dbx or logging.
4- sometime we are getting core in 10 simultaneous transaction and sometime we are getting in 15 simultaneous transaction.
can anyone please point or suggest anything for this situation?
Which exact version of Artix C++ are you using?
Please provide the output of pstack and pflags from the core.