CDV ❯ Not synchronized access to WeakHashMap in JavaClassInfoRepository cause infinite loop
-
Bug
-
Status: Closed
-
2 Major
-
Resolution: Fixed
-
DSO:L1
-
-
teck
-
Reporter: ind
-
September 30, 2010
-
0
-
Watchers: 1
-
July 27, 2012
-
October 22, 2010
Description
Infinite loop
“http-9081-17” daemon prio=10 tid=0x0000000059468800 nid=0x11d7 runnable [0x000000004c00d000] java.lang.Thread.State: RUNNABLE at java.util.WeakHashMap.getEntry(WeakHashMap.java:383) at java.util.WeakHashMap.containsKey(WeakHashMap.java:369) at com.tc.aspectwerkz.reflect.impl.java.JavaClassInfoRepository.hasClassInfo(JavaClassInfoRepository.java:108) at com.tc.aspectwerkz.reflect.impl.java.JavaFieldInfo.getType(JavaFieldInfo.java:89) - locked <0x00002aaacb121218> (a com.tc.aspectwerkz.reflect.impl.java.JavaFieldInfo) at com.tc.aspectwerkz.expression.ExpressionVisitor.visit(ExpressionVisitor.java:488) at com.tc.aspectwerkz.expression.ast.ASTFieldPattern.jjtAccept(ASTFieldPattern.java:28) at com.tc.aspectwerkz.expression.ExpressionVisitor.visitAnnotatedNode(ExpressionVisitor.java:1016) at com.tc.aspectwerkz.expression.ExpressionVisitor.visit(ExpressionVisitor.java:171) at com.tc.aspectwerkz.expression.ast.ASTGet.jjtAccept(ASTGet.java:22) at com.tc.aspectwerkz.expression.ExpressionVisitor.visit(ExpressionVisitor.java:100) at com.tc.aspectwerkz.expression.ast.ASTExpression.jjtAccept(ASTExpression.java:22) at com.tc.aspectwerkz.expression.ExpressionVisitor.visit(ExpressionVisitor.java:88) at com.tc.aspectwerkz.expression.ExpressionVisitor.match(ExpressionVisitor.java:74) at com.tc.object.config.Root.matches(Root.java:94) at com.tc.object.config.StandardDSOClientConfigHelperImpl.findMatchingRootDefinition(StandardDSOClientConfigHelperImpl.java:1011) at com.tc.object.config.StandardDSOClientConfigHelperImpl.isRoot(StandardDSOClientConfigHelperImpl.java:999) at com.tc.object.bytecode.ManagerImpl.isRoot(ManagerImpl.java:532) at com.tc.object.bytecode.ManagerUtil.isRoot(ManagerUtil.java:475) at com.tc.util.FieldUtils.set(FieldUtils.java:159) at java.lang.reflect.Field.set(Field.java) at org.hibernate.property.DirectPropertyAccessor$DirectSetter.set(DirectPropertyAccessor.java:102) at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:352) at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:232) at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3580) at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:152) at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:877) at org.hibernate.loader.Loader.doQuery(Loader.java:752) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) at org.hibernate.loader.Loader.doList(Loader.java:2232) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129) at org.hibernate.loader.Loader.list(Loader.java:2124) at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:118) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1597) at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306) at org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:328)
Comments
Fiona OShea 2010-10-05
Tim Eck 2010-10-22
added the necessary synchronization to avoid concurrent access/mutation
Is there anything you want to do about this?