IBM Support

IT18337: EXECUTING XPATH FROM A JAVACOMPUTE NODE ABENDS UNDER LOAD

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

APAR status

  • Closed as program error.

Error description

  • During the evaluation of an XPath in a JavaCompute node it is
    possible for Java objects to be garbage collected before native
    code has finished using them.
    
    This can cause unsafe storage access leading to an abend. A
    typical stack is shown below:
    
    #0   0x7fbb054fc61b in ??
    #1   0x7fbb054fc951 in
    ImbAbend::printStackForCurrentThread(int, bool,
    void const*, void*, char const*)
    #2   0x7fbb052b2e89 in ImbAbend::dumpCurrentStacksToFile(void
    const*, int)
    #3   0x7fbb052b2853 in ImbAbend::dumpToFile(char*, char const*,
    int, char const*, ImbAbend::Insert const&, ImbAbend::Insert
    const&, ImbAbend::Insert const&, ImbAbend::Insert const&,
    ImbAbend::Insert const&, ImbAbend::Insert const&, void const*)
    #4   0x7fbb052b1c24 in ImbAbend::logSystemErrorInternal(char
    const*,  int, char const*, ImbAbend::Insert const&,
    ImbAbend::Insert const&,
    ImbAbend::Insert const&, ImbAbend::Insert const&,
    ImbAbend::Insert const&, ImbAbend::Insert const&, void const*,
    bool)
    #5   0x7fbb052b1eb5 in
    ImbAbend::logSystemErrorAndTerminateProcessInternal(char
    const*, int, char const*, ImbAbend::Insert const&,
    ImbAbend::Insert const&,
    ImbAbend::Insert const&, ImbAbend::Insert const&,
    ImbAbend::Insert const&, ImbAbend::Insert const&, void const*,
    bool)
    #6   0x7fbb052af221 in ImbAbend::signalHandlerInternal(int,
    siginfo_t*, void*)
    #7   0x7fbb052af0dc in ImbAbendSignalHandler
    #8   0x7fbb02c5c3d0 in ??
    #9   0x7fbb0586f1bf in ImbThreadSafeCount::increment()
    #10  0x7fbb0586f4ce in
    ImbWstring::linkToBuffer(ImbWstring::ImbRemoteBuffer*)
    #11  0x7fbb0586d79a in ImbWstring::assign(ImbWstring const&)
    #12  0x4254ef in ImbWstring::operator=(ImbWstring const&)
    #13  0x7fbaff522c19 in
    ImbXPathEngine::substituteNamespace(ImbXPathEngineContext*,
    ImbWstring*, bool)
    #14  0x7fbaff522cc9 in
    ImbXPathEngine::nameMatches(ImbXPathEngineContext*,
    ImbXPathNodetest*, ImbSyntaxElement*, bool)
    #15  0x7fbaff523a3b in
    ImbXPathEngine::parentNodeTest(ImbXPathEngineContext*,
    ImbXPathNodetest*, ImbSyntaxElement*, ImbSyntaxElement*)
    #16  0x7fbaff52540c in
    ImbXPathEngine::nodesetAxisAncestor(ImbXPathEngineContext*,
    ImbXPathNodetest*, int, ImbSyntaxElement*, ImbXPathValue&, int)
    #17  0x7fbaff51ded3 in
    ImbXPathEngine::executeNodetest(ImbXPathEngineContext*, int,
    ImbXPathNodetest*, int, ImbSyntaxElement*, ImbXPathValue&)
    #18  0x7fbaff51e334 in
    ImbXPathEngine::executeStep(ImbXPathEngineContext*,
    ImbXPathStep*,  ImbXPathValue&, bool)
    #19  0x7fbaff51e732 in
    ImbXPathEngine::executePath(ImbXPathEngineContext*,
    ImbXPathLocationPath*, ImbSyntaxElement*, ImbXPathValue&)
    #20  0x7fbaff51d247 in
    ImbXPathEngine::evaluateExpression(ImbXPathEngineContext*,
    ImbXPathExpression*, ImbSyntaxElement*, int, int)
    #21  0x7fbaff53224a in
    ImbXPathEngine::evaluateFunctionNot(ImbXPathEngineContext*,
    ImbXPathExpression*, ImbSyntaxElement*, int, int,
    ImbXPathValue&)
    #22  0x7fbaff51cdf3 in
    ImbXPathEngine::evaluateExpression(ImbXPathEngineContext*,
    ImbXPathExpression*, ImbSyntaxElement*, int, int)
    #23  0x7fbaff51db6c in
    ImbXPathEngine::filterPredicate(ImbXPathEngineContext*,
    ImbXPathPredicate*, ImbXPathValue&, bool)
    #24  0x7fbaff51e3d0 in
    ImbXPathEngine::executeStep(ImbXPathEngineContext*,
    ImbXPathStep*, ImbXPathValue&, bool)
    #25  0x7fbaff51e59f in
    ImbXPathEngine::executeStep(ImbXPathEngineContext*,
    ImbXPathStep*, ImbXPathValue&, bool)
    #26  0x7fbaff51e732 in
    ImbXPathEngine::executePath(ImbXPathEngineContext*,
    ImbXPathLocationPath*, ImbSyntaxElement*, ImbXPathValue&)
    #27  0x7fbaff51d247 in
    ImbXPathEngine::evaluateExpression(ImbXPathEngineContext*,
    ImbXPathExpression*, ImbSyntaxElement*, int, int)
    #28  0x7fbaff51c452 in ImbXPathEngine::evaluate(ImbWstring
    const&, ImbSyntaxElement*, ImbSyntaxElement*,
    ImbNamespaceBindings*,
    ImbXPathVariables*, bool)
    #29  0x7fbafeba72b2 in
    Java_com_ibm_broker_plugin_MbMessage__1evaluateXPath__JLjava_lan
    g_String_2JJJ
    #30  0x7fbac8054101 in ??
    
    
    Additional Symptom(s) Search Keyword(s):
    

Local fix

  • Ensure that any MbXPath, MbNamespace or MbXPathVariables
    objects are referenced in the Java compute node after the call
    to evaluateXPath.
    For example by modifying code such as this:
    // get namespace
    MbNamespaceBindings nsBindings = new MbNamespaceBindings();
    nsBindings.setDefaultNamespace(tempMessage.getRootElement().getL
    astChild().getFirstChild().getNamespace());
    //Note that we use a deliberately expensive XPath here, we are
    forcing every tree node
    //to be visited so that we give the Java garbage colelctor a
    chance to get in
    Object objects =
    tempMessage.evaluateXPath("//*[not(ancestor::X)]", nsBindings);
    to read:
    // get namespace
    MbNamespaceBindings nsBindings = new MbNamespaceBindings();
    nsBindings.setDefaultNamespace(tempMessage.getRootElement().getL
    astChild().getFirstChild().getNamespace());
    //Note that we use a deliberately expensive XPath here, we are
    forcing every tree node
    //to be visited so that we give the Java garbage colelctor a
    chance to get in
    Object objects =
    tempMessage.evaluateXPath("//*[not(ancestor::X)]", nsBindings);
    
    
    //Reference the namespace bindings again to keep them in scope
    nsBindings.toString();
    

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    All users of WebSphere Message Broker version 8.0.0.7 and above
    or IBM Integration Bus version 9.0.0.6 or 10.0.0.0 and above
    using XPath from a JavaCompute Node
    
    
    Platforms affected:
    z/OS, MultiPlatform
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    During the evaluation of an XPath in a JavaCompute node it is
    possible for Java objects to be garbage collected before native
    code has finished using them.
    
    This can cause unsafe storage access leading to an abend. A
    typical stack is shown below:
    
    #0   0x7fbb054fc61b in ??
    #1   0x7fbb054fc951 in
    ImbAbend::printStackForCurrentThread(int, bool,
    void const*, void*, char const*)
    #2   0x7fbb052b2e89 in ImbAbend::dumpCurrentStacksToFile(void
    const*, int)
    #3   0x7fbb052b2853 in ImbAbend::dumpToFile(char*, char const*,
    int, char const*, ImbAbend::Insert const&, ImbAbend::Insert
    const&, ImbAbend::Insert const&, ImbAbend::Insert const&,
    ImbAbend::Insert const&, ImbAbend::Insert const&, void const*)
    #4   0x7fbb052b1c24 in ImbAbend::logSystemErrorInternal(char
    const*,  int, char const*, ImbAbend::Insert const&,
    ImbAbend::Insert const&,
    ImbAbend::Insert const&, ImbAbend::Insert const&,
    ImbAbend::Insert const&, ImbAbend::Insert const&, void const*,
    bool)
    #5   0x7fbb052b1eb5 in
    ImbAbend::logSystemErrorAndTerminateProcessInternal(char
    const*, int, char const*, ImbAbend::Insert const&,
    ImbAbend::Insert const&,
    ImbAbend::Insert const&, ImbAbend::Insert const&,
    ImbAbend::Insert const&, ImbAbend::Insert const&, void const*,
    bool)
    #6   0x7fbb052af221 in ImbAbend::signalHandlerInternal(int,
    siginfo_t*, void*)
    #7   0x7fbb052af0dc in ImbAbendSignalHandler
    #8   0x7fbb02c5c3d0 in ??
    #9   0x7fbb0586f1bf in ImbThreadSafeCount::increment()
    #10  0x7fbb0586f4ce in
    ImbWstring::linkToBuffer(ImbWstring::ImbRemoteBuffer*)
    #11  0x7fbb0586d79a in ImbWstring::assign(ImbWstring const&)
    #12  0x4254ef in ImbWstring::operator=(ImbWstring const&)
    #13  0x7fbaff522c19 in
    ImbXPathEngine::substituteNamespace(ImbXPathEngineContext*,
    ImbWstring*, bool)
    #14  0x7fbaff522cc9 in
    ImbXPathEngine::nameMatches(ImbXPathEngineContext*,
    ImbXPathNodetest*, ImbSyntaxElement*, bool)
    #15  0x7fbaff523a3b in
    ImbXPathEngine::parentNodeTest(ImbXPathEngineContext*,
    ImbXPathNodetest*, ImbSyntaxElement*, ImbSyntaxElement*)
    #16  0x7fbaff52540c in
    ImbXPathEngine::nodesetAxisAncestor(ImbXPathEngineContext*,
    ImbXPathNodetest*, int, ImbSyntaxElement*, ImbXPathValue&, int)
    #17  0x7fbaff51ded3 in
    ImbXPathEngine::executeNodetest(ImbXPathEngineContext*, int,
    ImbXPathNodetest*, int, ImbSyntaxElement*, ImbXPathValue&)
    #18  0x7fbaff51e334 in
    ImbXPathEngine::executeStep(ImbXPathEngineContext*,
    ImbXPathStep*,  ImbXPathValue&, bool)
    #19  0x7fbaff51e732 in
    ImbXPathEngine::executePath(ImbXPathEngineContext*,
    ImbXPathLocationPath*, ImbSyntaxElement*, ImbXPathValue&)
    #20  0x7fbaff51d247 in
    ImbXPathEngine::evaluateExpression(ImbXPathEngineContext*,
    ImbXPathExpression*, ImbSyntaxElement*, int, int)
    #21  0x7fbaff53224a in
    ImbXPathEngine::evaluateFunctionNot(ImbXPathEngineContext*,
    ImbXPathExpression*, ImbSyntaxElement*, int, int,
    ImbXPathValue&)
    #22  0x7fbaff51cdf3 in
    ImbXPathEngine::evaluateExpression(ImbXPathEngineContext*,
    ImbXPathExpression*, ImbSyntaxElement*, int, int)
    #23  0x7fbaff51db6c in
    ImbXPathEngine::filterPredicate(ImbXPathEngineContext*,
    ImbXPathPredicate*, ImbXPathValue&, bool)
    #24  0x7fbaff51e3d0 in
    ImbXPathEngine::executeStep(ImbXPathEngineContext*,
    ImbXPathStep*, ImbXPathValue&, bool)
    #25  0x7fbaff51e59f in
    ImbXPathEngine::executeStep(ImbXPathEngineContext*,
    ImbXPathStep*, ImbXPathValue&, bool)
    #26  0x7fbaff51e732 in
    ImbXPathEngine::executePath(ImbXPathEngineContext*,
    ImbXPathLocationPath*, ImbSyntaxElement*, ImbXPathValue&)
    #27  0x7fbaff51d247 in
    ImbXPathEngine::evaluateExpression(ImbXPathEngineContext*,
    ImbXPathExpression*, ImbSyntaxElement*, int, int)
    #28  0x7fbaff51c452 in ImbXPathEngine::evaluate(ImbWstring
    const&, ImbSyntaxElement*, ImbSyntaxElement*,
    ImbNamespaceBindings*,
    ImbXPathVariables*, bool)
    #29  0x7fbafeba72b2 in
    Java_com_ibm_broker_plugin_MbMessage__1evaluateXPath__JLjava_lan
    g_String_2JJJ
    #30  0x7fbac8054101 in ??
    
    There are a number of resource name changes between WebSphere
    Message Broker and IBM Integration Bus Version 9.0.  For details
    visit
    http://pic.dhe.ibm.com/infocenter/wmbhelp/v9r0m0/topic/com.ibm.e
    tools.mft.doc/bb23814_.htm
    

Problem conclusion

Temporary fix

Comments

APAR Information

  • APAR number

    IT18337

  • Reported component name

    INTEGRATION BUS

  • Reported component ID

    5724J0540

  • Reported release

    A00

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2016-12-09

  • Closed date

    2017-01-19

  • Last modified date

    2017-01-19

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    INTEGRATION BUS

  • Fixed component ID

    5724J0540

Applicable component levels

  • RA00 PSY

       UP

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSNQK6","label":"IBM Integration Bus"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"10.0","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
23 March 2020