CDV ❯ Circular reference in logged object causes stack to overflow
-
Bug
-
Status: Resolved
-
2 Major
-
Resolution: Won't Fix
-
DSO:L1
-
-
interfaces
-
Reporter: pankin
-
March 06, 2009
-
0
-
Watchers: 2
-
February 12, 2014
-
February 12, 2014
Description
Fault found in Terracotta 2.7.3 (also 2.7.0)
File: code/base/dso-l1/src/com/tc/object/bytecode/ManagerImpl.java, Method: public boolean isDsoMonitorEntered(Object o) : The line 502: if (!dsoMonitorEntered && isManaged(o)) { could be changed to 502: if (!dsoMonitorEntered && isManaged(o) && !this.txManager.isTransactionLoggingDisabled()) {
In our case, o contained a hash table which in turn contained a SAML Assertion (see http://en.wikipedia.org/wiki/SAML) with a self-reference, thus the logging of o.toString() in : logger .info(“Object “ + o + “ is a shared object, but a shared lock… went into a recursion that never ended. We could see that this occurred when the transaction logging was disabled , so that condition could be added to the if-clause.
We have entered the above patch and it solves the problem for us. It would be great to have a correction for this problem in an official Terracotta release soon.
Comments
Fiona OShea 2009-03-06
Hung Huynh 2014-02-12
DSO is discontinued
need contributer agreement if we use his specific stuff. http://www.terracotta.org/confluence/display/devdocs/How+To+Become+A+Contributor