facing process crash issue for multiple simultaneous transacion.

Hi All,

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__'

Reading libit_xslt_util_sc53.so.5

Reading libit_xalan_sc53.so.1

Reading libit_http_api_sc53.so.5

Reading libCstd.so.1

Reading libgen.so.1

Reading libit_xalanmsg_sc53.so.1

Reading libCstd_isa.so.1

Reading libit_http_sc53.so.5

Reading libit_messaging_port_sc53.so.5

Reading libit_giop_snoop_sc53.so.5

Reading libit_soap_sc53.so.5

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_'

Reading libit_soap_common_sc53.so.5

Reading libit_coordinator_stub_sc53.so.5

Reading libit_wsat_protocol_stub_sc53.so.5

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);

(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) file

basic_types.h

(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) list

  118       return CORBA_string_dup(str);

  119   }

  120

  121   IT_NAMESPACE_STATIC_INLINE void

  122   string_free(

  123       char* str

  124   )

  125   {

  126       CORBA_string_free(str);

  127   }

(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) where

current thread: t@17

  [1] _smalloc(0x8, 0xfea427a8, 0x0, 0x8, 0x0, 0x0), at 0xfe9c1c68

  [2] malloc(0x1, 0xe68056, 0x0, 0x0, 0x0, 0x1597390), at 0xfe9c1ca8

  [3] CORBA_string_dup(0x1, 0x1558350, 0x38d080, 0xb01600, 0x0, 0xe68055), at 0xfdbca5c8

=>[4] CORBA::string_dup(str = 0xe68055 ""), line 118 in "basic_types.h"

  [5] los_global_namespace::po_vitCsImpl::sendCustomerServiceRecord(this = 0xffbeb758, WSHeader = CLASS, constCustomerServiceRecordRequest = CLASS, WSResponseHeader = CLASS, CustomerServiceRecordResponse = CLASS), line 4158 in "po_vitCsImpl.cpp"

  Devil los_global_namespace::PreOrderServer::smf_dispatch_sendCustomerServiceRecord(0xfa30d2f0, 0xfa30d2f0, 0xfa30d314, 0xfa30d314, 0xfa30d2f0, 0xfa30d2f0), at 0xa8ce14

  [7] los_global_namespace::PreOrderServer::dispatch(0xffbeb758, 0x13b82e8, 0xf4ca74, 0x0, 0x274708, 0xfe665710), at 0xa8eee4

  Music IT_Bus::ServantWrapper::dispatch(0x125f730, 0xfa30d2cc, 0xfedf460c, 0xfa30cf68, 0xfa30cf64, 0xff085b78), at 0xfedd21d0

  [9] IT_Bus::SoapInterceptor::intercept_around_dispatch(0x1295438, 0xfa30d2cc, 0xf7531028, 0x143fbc0, 0xf6b67ef8, 0xf757bcc4), at 0xf6b65614

  [10] IT_Bus::ServerEndpointHandlerImpl::message_received(0x12c8380, 0x1493458, 0x13b82e4, 0x1466d48, 0xf757ca50, 0xfa30d374), at 0xf753e6d0

  [11] IT_Bus::ServerEndpointImpl::message_received(0x125ecf0, 0xfa30d960, 0x143fb70, 0xf757ca50, 0xf753e28c, 0xf757e1b4), at 0xf7539154

  [12] IT_Bus::DispatchContextImpl::execute(0x143fb70, 0xfa30d960, 0xf7578d70, 0xf7564a88, 0xfa30d82c, 0x125ecf0), at 0xf754034c

  [13] IT_Bus::MessagingTransportCallbackImpl::dispatch(0x13a6110, 0xfa30d960, 0x143fb70, 0x143fb70, 0xfb6538, 0x1), at 0xf75450d4

  [14] IT_HTTP::ArtixHTTPService::do_post(0x13a64e8, 0xf6bd2a20, 0xf8f94134, 0xfa30d960, 0x13a653c, 0xfb6538), at 0xf8f4524c

  [15] 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?

 

  • Hi,

    Which exact version of Artix C++ are you using?

    Please provide the output of pstack and pflags from the core.

    Thanks,

    Roland