Skip to main content

This content has been archived and is no longer being updated. Links may not function; however, this content may be relevant to outdated versions of the product.

Support Article

System crashes when tracer is run twice on same session

SA-16454

Summary



When tracer is run simultaneously by multiple developers, the system crashes.


Error Messages



The stack loops back to TraceEvent repeatedly.
  java.lang.StackOverflowError
    at com.pega.pegarules.priv.factory.IntArrayFactory.acquire(IntArrayFactory.java:88)
    at com.pega.pegarules.pub.util.PRDateFormat.formatIDT(PRDateFormat.java:628)
    at com.pega.pegarules.exec.internal.util.PRDateTimeUtilsImpl.getCurrentTimeStamp(PRDateTimeUtilsImpl.java:730)
    at com.pega.pegarules.monitor.internal.tracer.events.TraceEventBaseImpl.ctorCommon(TraceEventBaseImpl.java:241)
    at com.pega.pegarules.monitor.internal.tracer.events.TraceEventBaseImpl.<init>(TraceEventBaseImpl.java:237)
    at com.pega.pegarules.monitor.internal.tracer.TraceEvent.<init>(TraceEvent.java:236)
    at com.pega.pegarules.monitor.internal.tracer.TracerSessionImpl.logTraceEvent(TracerSessionImpl.java:571)
    at com.pega.pegarules.session.internal.mgmt.Executable.logTraceEvent(Executable.java:1468)
    at com.pega.pegarules.session.internal.mgmt.Executable.logTraceEvent(Executable.java:1454)
    at com.pega.pegarules.exec.internal.declare.infengine.pages.DeclarativePageDirectoryImpl.trace(DeclarativePageDirectoryImpl.java:967)
    at com.pega.pegarules.exec.internal.declare.infengine.pages.DeclarativePageDirectoryImpl.trace(DeclarativePageDirectoryImpl.java:958)
    at com.pega.pegarules.exec.internal.declare.infengine.pages.DeclarativePageDirectoryImpl.isDeclarePageFresh(DeclarativePageDirectoryImpl.java:1037)
    at com.pega.pegarules.session.internal.mgmt.base.handler.ReadOnlyDataPageHandler.findDataPage(ReadOnlyDataPageHandler.java:321)
    at com.pega.pegarules.session.internal.mgmt.base.AbstractPageDirectory.findDataPageInCurrentDir(AbstractPageDirectory.java:893)
    at com.pega.pegarules.session.internal.mgmt.base.AbstractPageDirectory.getDirectPage(AbstractPageDirectory.java:658)
    at com.pega.pegarules.session.internal.mgmt.base.ThreadPageDir.getDirectPage(ThreadPageDir.java:473)
    at com.pega.pegarules.session.internal.mgmt.base.ThreadPageDir.getPage(ThreadPageDir.java:431)
    at com.pega.pegarules.session.internal.mgmt.base.ThreadPageDir.getPage(ThreadPageDir.java:423)
    at com.pega.pegarules.session.internal.mgmt.PRThreadImpl.getPage(PRThreadImpl.java:508)
    at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.getTopPage(PropertyReferenceImpl.java:2192)
    at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.getTopPage(PropertyReferenceImpl.java:2136)
    at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.resolveEmbeddedPages(PropertyReferenceImpl.java:1817)
    at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.doGet(PropertyReferenceImpl.java:1392)
    at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.doGet(PropertyReferenceImpl.java:1372)
    at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.getIfPresent(PropertyReferenceImpl.java:1683)
    at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.getIfPresent(PropertyReferenceImpl.java:1670)
    at com.pega.pegarules.data.internal.clipboard.ClipboardPageImpl.getIfPresent(ClipboardPageImpl.java:1203)
    at com.pega.pegarules.data.internal.clipboard.ClipboardPageImpl.getIfPresent(ClipboardPageImpl.java:1146)
    at com.pega.pegarules.data.internal.clipboard.ReferencePropertyLinkImpl.getSource(ReferencePropertyLinkImpl.java:386)
    at com.pega.pegarules.data.internal.clipboard.ReferencePropertyLinkImpl.getSource(ReferencePropertyLinkImpl.java:318)
    at com.pega.pegarules.data.internal.clipboard.ClipboardPropertyImpl.getReferenceString(ClipboardPropertyImpl.java:5352)
    at com.pega.pegarules.data.internal.clipboard.ClipboardPropertyImpl.getReferenceString(ClipboardPropertyImpl.java:5342)
    at com.pega.pegarules.data.internal.clipboard.WorkbenchXMLStream.writeXMLBeginProperty(WorkbenchXMLStream.java:463)
    at com.pega.pegarules.data.internal.clipboard.XMLStream.writeXMLProperty(XMLStream.java:929)
    at com.pega.pegarules.data.internal.clipboard.XMLStream.writeXMLPage(XMLStream.java:753)
    at com.pega.pegarules.data.internal.clipboard.XMLStream.writeXMLProperty(XMLStream.java:937)
    at com.pega.pegarules.data.internal.clipboard.XMLStream.writeXMLProperty(XMLStream.java:956)
    at com.pega.pegarules.data.internal.clipboard.XMLStream.writeXMLPage(XMLStream.java:753)
    at com.pega.pegarules.data.internal.clipboard.XMLStream.clipboardToXML(XMLStream.java:499)
    at com.pega.pegarules.data.internal.clipboard.WorkbenchXMLStream.<init>(WorkbenchXMLStream.java:216)
    at com.pega.pegarules.data.internal.clipboard.ClipboardPageBase.getXML(ClipboardPageBase.java:2148)
    at com.pega.pegarules.data.internal.clipboard.ClipboardPageImpl.getXML(ClipboardPageImpl.java:481)
    at com.pega.pegarules.data.internal.clipboard.ClipboardPageBase.getXML(ClipboardPageBase.java:2133)
    at com.pega.pegarules.data.internal.clipboard.ClipboardPageImpl.getXML(ClipboardPageImpl.java:481)
    at com.pega.pegarules.monitor.internal.tracer.events.TraceEventBaseImpl.getPageXML(TraceEventBaseImpl.java:1054)
    at com.pega.pegarules.monitor.internal.tracer.events.TraceEventBaseImpl.setPrimaryPage(TraceEventBaseImpl.java:997)
    at com.pega.pegarules.monitor.internal.tracer.events.TraceEventBaseImpl.setPrimaryPageData(TraceEventBaseImpl.java:822)
    at com.pega.pegarules.monitor.internal.tracer.TraceEvent.<init>(TraceEvent.java:287)
    at com.pega.pegarules.monitor.internal.tracer.TracerSessionImpl.logTraceEvent(TracerSessionImpl.java:571)
 


Steps to Reproduce



1. Have two developers log in
2. Start Tracer and connect to the same session
3. Start tracing


Root Cause



The root cause of this issue is operator error. The developers involved had tracer options enabled which were set at a level such that each developer's tracer utility was tracing the opposite developer's tracer utility, creating an infinite loop. This infinite loop crashed the server.  
 

Resolution



Do not set your tracer to trace another user's tracer session. You should generally trace only what you need rather than tracing everything - such as limiting the tracer to specific rulesets.

Published January 31, 2016 - Updated October 8, 2020

Was this useful?

0% found this useful

Have a question? Get answers now.

Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.

Did you find this content helpful?

Want to help us improve this content?

We'd prefer it if you saw us at our best.

Pega Community has detected you are using a browser which may prevent you from experiencing the site as intended. To improve your experience, please update your browser.

Close Deprecation Notice
Contact us