Guillaume Nodet created MNG-7111:
------------------------------------

             Summary: Deadlock when reading pom
                 Key: MNG-7111
                 URL: https://issues.apache.org/jira/browse/MNG-7111
             Project: Maven
          Issue Type: Task
            Reporter: Guillaume Nodet


I'm running into the following deadlock while building Apache Camel with the 
current master:
{code}
"TransformThread-16@4333" daemon prio=5 tid=0x20 nid=NA waiting
  java.lang.Thread.State: WAITING
         blocks TransformThread-17@4342
          at java.lang.Object.wait(Object.java:-1)
          at java.io.PipedInputStream.read(PipedInputStream.java:326)
          at java.io.PipedInputStream.read(PipedInputStream.java:377)
          at java.io.FilterInputStream.read(FilterInputStream.java:133)
          at java.io.BufferedInputStream.fill(BufferedInputStream.java:252)
          at java.io.BufferedInputStream.read(BufferedInputStream.java:271)
          - locked <0x1163> (a java.io.BufferedInputStream)
          at 
org.codehaus.plexus.util.xml.XmlReader.getBOMEncoding(XmlReader.java:620)
          at 
org.codehaus.plexus.util.xml.XmlReader.doRawStream(XmlReader.java:440)
          at org.codehaus.plexus.util.xml.XmlReader.<init>(XmlReader.java:178)
          at org.codehaus.plexus.util.xml.XmlReader.<init>(XmlReader.java:145)
          at 
org.codehaus.plexus.util.xml.XmlStreamReader.<init>(XmlStreamReader.java:84)
          at 
org.codehaus.plexus.util.ReaderFactory.newXmlReader(ReaderFactory.java:109)
          at 
org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:116)
          at 
org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:90)
          at 
org.apache.maven.model.building.DefaultModelProcessor.read(DefaultModelProcessor.java:97)
          at 
org.apache.maven.model.building.DefaultModelBuilder.readRawModel(DefaultModelBuilder.java:736)
          at 
org.apache.maven.model.building.DefaultModelBuilder.access$200(DefaultModelBuilder.java:99)
          at 
org.apache.maven.model.building.DefaultModelBuilder$DefaultTransformerContextBuilder$1.findRawModel(DefaultModelBuilder.java:1588)
          at 
org.apache.maven.model.building.DefaultModelBuilder$DefaultTransformerContextBuilder$1.lambda$getRawModel$1(DefaultModelBuilder.java:1570)
          at 
org.apache.maven.model.building.DefaultModelBuilder$DefaultTransformerContextBuilder$1$$Lambda$129.1344264523.apply(Unknown
 Source:-1)
          at 
java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
          - locked <0x115e> (a 
java.util.concurrent.ConcurrentHashMap$ReservationNode)
          at 
org.apache.maven.model.building.DefaultModelBuilder$DefaultTransformerContextBuilder$1.getRawModel(DefaultModelBuilder.java:1569)
          at 
org.apache.maven.model.building.DefaultBuildPomXMLFilterFactory.lambda$getDependencyKeyToVersionMapper$3(DefaultBuildPomXMLFilterFactory.java:67)
          at 
org.apache.maven.model.building.DefaultBuildPomXMLFilterFactory$$Lambda$87.1867108691.apply(Unknown
 Source:-1)
          at 
org.apache.maven.xml.sax.filter.ReactorDependencyXMLFilter.getVersion(ReactorDependencyXMLFilter.java:156)
          at 
org.apache.maven.xml.sax.filter.ReactorDependencyXMLFilter.endElement(ReactorDependencyXMLFilter.java:112)
          at 
org.xml.sax.helpers.XMLFilterImpl.endElement(XMLFilterImpl.java:570)
          at 
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:610)
          at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1718)
          at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2883)
          at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
          at 
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
          at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534)
          at 
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888)
          at 
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
          at 
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
          at 
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216)
          at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:357)
          at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:357)
          at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:357)
          at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:357)
          at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:687)
          at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:774)
          at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:370)
          at 
org.apache.maven.model.building.AbstractModelSourceTransformer.lambda$transform$1(AbstractModelSourceTransformer.java:157)
          at 
org.apache.maven.model.building.AbstractModelSourceTransformer$$Lambda$94.1778994610.run(Unknown
 Source:-1)
          at java.lang.Thread.run(Thread.java:834)

"TransformThread-17@4342" daemon prio=5 tid=0x21 nid=NA waiting for monitor 
entry
  java.lang.Thread.State: BLOCKED
         waiting for TransformThread-16@4333 to release lock on <0x115e> (a 
java.util.concurrent.ConcurrentHashMap$ReservationNode)
          at 
java.util.concurrent.ConcurrentHashMap.transfer(ConcurrentHashMap.java:2477)
          at 
java.util.concurrent.ConcurrentHashMap.addCount(ConcurrentHashMap.java:2348)
          at 
java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1773)
          at 
org.apache.maven.model.building.DefaultModelBuilder$DefaultTransformerContextBuilder$1.getRawModel(DefaultModelBuilder.java:1569)
          at 
org.apache.maven.model.building.DefaultBuildPomXMLFilterFactory.lambda$getDependencyKeyToVersionMapper$3(DefaultBuildPomXMLFilterFactory.java:67)
          at 
org.apache.maven.model.building.DefaultBuildPomXMLFilterFactory$$Lambda$87.1867108691.apply(Unknown
 Source:-1)
          at 
org.apache.maven.xml.sax.filter.ReactorDependencyXMLFilter.getVersion(ReactorDependencyXMLFilter.java:156)
          at 
org.apache.maven.xml.sax.filter.ReactorDependencyXMLFilter.endElement(ReactorDependencyXMLFilter.java:112)
          at 
org.xml.sax.helpers.XMLFilterImpl.endElement(XMLFilterImpl.java:570)
          at 
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:610)
          at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1718)
          at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2883)
          at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
          at 
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
          at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534)
          at 
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888)
          at 
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
          at 
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
          at 
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216)
          at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:357)
          at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:357)
          at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:357)
          at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:357)
          at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:687)
          at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:774)
          at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:370)
          at 
org.apache.maven.model.building.AbstractModelSourceTransformer.lambda$transform$1(AbstractModelSourceTransformer.java:157)
          at 
org.apache.maven.model.building.AbstractModelSourceTransformer$$Lambda$94.1778994610.run(Unknown
 Source:-1)
          at java.lang.Thread.run(Thread.java:834)
{code}

The problem is that there's a misuse of {{computeIfAbsent}}.  The javadoc 
indicates that the mapping function should not attempt to modify the map, which 
is exactly what we're doing in this case.




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to