You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Guillaume Nodet (Jira)" <ji...@apache.org> on 2022/10/20 08:11:01 UTC

[jira] [Updated] (MNG-7111) Deadlock when reading pom

     [ https://issues.apache.org/jira/browse/MNG-7111?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Guillaume Nodet updated MNG-7111:
---------------------------------
    Fix Version/s: 4.0.0-alpha-2

> Deadlock when reading pom
> -------------------------
>
>                 Key: MNG-7111
>                 URL: https://issues.apache.org/jira/browse/MNG-7111
>             Project: Maven
>          Issue Type: Task
>            Reporter: Guillaume Nodet
>            Assignee: Robert Scholte
>            Priority: Major
>             Fix For: 4.0.0-alpha-1, 4.0.0-alpha-2, 4.0.0
>
>
> 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.20.10#820010)