Elliotte reported bugs
メンテナーはふだん 5 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 20/100
- issue の種類
- バグ
- 明瞭さ
- 説明が足りない
- 活発さ
- 静か
- 技術スタック
- java
- 領域
- build-system, tooling
調査の方向性
まず17件の報告を個別のissueに分け、次にExecutorRequest.java、MavenToolProvider.java、ForkedMavenExecutor.javaなどの名前が挙がっているファイルと、参照されている行範囲、および関連するテストを調査します。変更を提案する前に、各報告を既存のテストとプロジェクトの動作に照らして検証します。完了とは、独立して再現できた1件のバグに対して、対象を絞った修正と回帰テストがあることを意味します。
索引モデルが issue の本文から書いたものです。
説明
Affected version
1.0.0
These were all pulled out by throwing the code at an LLM. This issue lists multiple independent bugs. If anyone wants to work on any of these, note it here and open a new issue just for that bug. Be careful that some of these are likely false reports, though closing those is also useful work.
Bug description
Bug Report: maven-executor
HIGH SEVERITY
-
toBuilder().argument(String) throws UnsupportedOperationException
ExecutorRequest.java:150-165, 249-255
toBuilder() passes arguments() (an unmodifiable list from Impl)
into the Builder constructor,
which stores the reference directly. When argument(String) is
called, it invokes
this.arguments.add(...) on the unmodifiable list, crashing at runtime. -
MAVEN_ARGS leaks to child process in ForkedMavenExecutor
ForkedMavenExecutor.java:109, 143, 149-153
Line 109 reads System.getenv("MAVEN_ARGS") from the parent process.
Line 143 does
env.remove("MAVEN_ARGS"), but env is a local HashMap containing
only request-specified
variables, not the parent process environment. Line 152 calls
pb.environment().putAll(env)
but MAVEN_ARGS from the parent is never removed from the inherited
environment, so the
child process also inherits it. -
extractMTPSingleArgument throws StringIndexOutOfBoundsException
MavenToolProvider.java (java9):146
When an argument like -MEX-mavenHome is passed without = and a value,
argument.substring(key.length() + 1) throws StringIndexOutOfBoundsException. -
Null values from extractMTPMapArgument produce string "null" in output
MavenToolProvider.java (java9):165-169 ->
ForkedMavenExecutor.java:127 -> DockerExeExecutor.java:91
When -MEX-env=MY_VAR is passed without a =value, the map stores
null. This propagates to
"MY_VAR=null" in DockerExeExecutor and "-Dkey=null" in ForkedMavenExecutor. -
ToolboxExecutorTool.doExecute() uses request.stdOut() (an
OutputStream reference) instead
of result.stdOutString() in error messages
ToolboxExecutorTool.java:144-146
The error message prints request.stdOut().orElse(null) which
returns the OutputStream object
(e.g., java.io.ByteArrayOutputStream@123456), not the captured
output. The actual stdout/stderr
content is in result.stdOutString()/result.stdErrString() but is never read.
MEDIUM SEVERITY
-
stdIn InputStream is never closed (resource leak)
ProcessBuilderExecutorSupport.java:149-158
In the stdinPump thread, the stdIn InputStream is read from but
never closed. The
try-with-resources only closes in (the process's OutputStream). The
Javadoc says
"The stream is closed once tool execution is finished" but this
does not happen. -
fs4WithDollar test uses MAVEN3_HOME instead of MAVEN4_HOME (copy-paste error)
MavenExecutorTestSupport.java:329
The @Disabled test fs4WithDollar (intended for Maven 4) references
Environment.MAVEN3_HOME
at line 329. -
System.setProperties(null) creates thread-safety window
EmbeddedMavenExecutor.java:383
prepareProperties() calls System.setProperties(null) followed by
properties.putAll(System.getProperties()). Between these two calls,
any concurrent thread
accessing System.getProperties() may get null or empty properties. -
ExecutorHelperImpl.close() does not catch RuntimeException from
executor close()
ExecutorHelperImpl.java:88-109
Only ExecutorException is caught when closing executors. If an
executor's close() throws
a RuntimeException (e.g., NullPointerException), it propagates
immediately and prevents
subsequent executors from being closed. -
UncheckedIOException not wrapped as ExecutorException in
TestContainersExecutor
TestContainersExecutor.java:161-166
detectUid() wraps IOException in UncheckedIOException (a
RuntimeException). The execute()
method's catch blocks only catch IOException. The
UncheckedIOException propagates uncaught. -
NPE if resource files are missing in TestProjects.createSimpleProject
TestProjects.java:37, 40
TestProjects.class.getResourceAsStream(...) can return null, and
Files.copy(InputStream, Path)
will throw NullPointerException instead of a clear "resource not
found" message.
LOW SEVERITY
-
extractMTPSingleArgument removes ALL matching arguments, not just the first
MavenToolProvider.java (java9):145
allArguments.removeIf(s -> s.equals(argument)) removes every
occurrence, silently
discarding duplicates. -
Builder.stdOut()/stdErr() don't clear the other stream
ExecutorRequest.java:324-334
Setting stdOut(...) sets grabOutputAsString = false but does not
clear this.stdErr,
and vice versa. -
Temp directory deletion may fail in ForkedMavenExecutor.mavenVersion()
ForkedMavenExecutor.java:74, 93
Files.createTempDirectory(...) is deleted in finally via
Files.deleteIfExists(cwd), but
if the Maven process creates files inside this directory, the
delete fails with
DirectoryNotEmptyException. -
nullInputStream.read(byte[], int, int) violates InputStream contract
IOTools.java:83-89
The read(byte[], int, int) contract requires throwing
IndexOutOfBoundsException if off is
negative, len is negative, or off + len > b.length. No bounds
validation is performed. -
Deprecated ToolboxExecutorTool(Executor) hardcodes 0.15.8 vs current 0.15.14
ToolboxExecutorTool.java:53-56
The deprecated constructor uses an old cemented version while the
POM defines
version.toolbox as 0.15.14. -
@DisabledOnOs comment vs annotation mismatch in Docker provider tests
TestContainersExecutorTest.java:38, DockerExeExecutorTest.java:38
Comment says "not supported on Windows" but annotation also
disables on OS.MAC.
- 主要言語
- Java
- スター
- 5
- フォーク
- 4
- 平均マージ
- 3日 2時間
- マージ済み PR(30日)
- 4
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/maven-executor のほかの issue
-
enhancement
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
apache/maven-executor#20 ·
メンテナーはふだん 5 日以内に返信
-
enhancement
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
apache/maven-executor#19 · コメント 1 件 ·
メンテナーはふだん 5 日以内に返信
-
documentation
難易度 3/5 1〜2日 初心者へのやさしさ 64/100
apache/maven-executor#18 ·
メンテナーはふだん 5 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 30/100
apache/maven-executor#1 · コメント 1 件 ·
メンテナーはふだん 5 日以内に返信
apache/maven-executor の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
openhab/openhab-addons#21921 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
jellyfin/jellyfin-androidtv#5885 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
objectionary/eo-graphs#85 ·
-
XtYaml throws a bare ClassCastException when sheets or asserts is a scalar or holds a non-stringオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
objectionary/xax#246 ·
メンテナーはふだん 1 日以内に返信