[
https://issues.apache.org/jira/browse/MPMD-408?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17893421#comment-17893421
]
AB-xdev commented on MPMD-408:
------------------------------
I was able to reproduce the problem with different maven parallelization/thread
configurations (-T8, -T1, ...) on the same machine but not on others.
The amount of spawned PMD threads does NOT depend on the selected maven
parallelization and is ALWAYS the same amount as CPU threads
({{Runtime.getRuntime().availableProcessors()}}).
It's likely some unfortunate CPU situation that only occurs on certain machines
with certain code.
I inspected another Threaddump [^Threaddump2.txt] further and as far as i can
tell the problem is a legitimate PMD problem.
It looks like multiple threads are started for analysis, which process
different classes/pieces of code and walk through related code.
While they are being processed the threads (sometimes) lock each other,
resulting in a deadlock:
Example from the Threaddump:
{noformat}
Thread #1: Class A (locked) -> ... -> Class C (waits for lock from Thread #16)
Thread #16: Class C (locked) -> Class A (waits for lock from Thread #1)
→ Deadlock
{noformat}
(for more details see the deadlock section at the end of the attached Thread
dump)
> Deadlock with pmd 7.7.0 when executing parallel builds
> ------------------------------------------------------
>
> Key: MPMD-408
> URL: https://issues.apache.org/jira/browse/MPMD-408
> Project: Maven PMD Plugin
> Issue Type: Bug
> Components: PMD
> Affects Versions: 3.25.0
> Environment: Java 21
> Maven 3.9
> Windows
> private Multi Maven Project with around 15 modules and 30k LoC
> Reporter: AB-xdev
> Priority: Critical
> Fix For: waiting-for-feedback
>
> Attachments: MvnPMDDeadlock.avif, Threaddump.txt, Threaddump2.txt,
> screenshot-1.png
>
>
> We are executing the following on a multi-Maven project:
> {{mvn -B test pmd:check -P pmd -DskipTests -T2C}}
> Which causes a deadlock (most of the time):
> [^MvnPMDDeadlock.avif]
> Here's the Threaddump:
> [^Threaddump.txt]
--
This message was sent by Atlassian Jira
(v8.20.10#820010)