Elliotte reported bugs
维护者通常 5 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 20/100
- Issue 类型
- 缺陷
- 描述清晰度
- 需要澄清
- 活跃度
- 冷清
- 技术栈
- java
- 领域
- build-system, tooling
调研方向
首先将17份报告拆分为单独的 issue,然后检查列出的文件和引用的行范围,例如 ExecutorRequest.java、MavenToolProvider.java、ForkedMavenExecutor.java,以及相关测试。在提出有针对性的更改之前,根据现有测试和项目行为验证每份报告;完成的标准是,一个可独立复现的 bug 有针对性的修复和回归测试。
由索引模型根据 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 小时
- 30 天内合并 PR
- 4
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 没有贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
apache/maven-executor 的其他 Issue
-
enhancement
难度 5/5 一周以上 新手友好度 35/100
apache/maven-executor#20 ·
维护者通常 5 天内回复
-
enhancement
难度 5/5 一周以上 新手友好度 35/100
apache/maven-executor#19 · 1 条评论 ·
维护者通常 5 天内回复
-
documentation
难度 3/5 1-2 天 新手友好度 64/100
apache/maven-executor#18 ·
维护者通常 5 天内回复
-
难度 5/5 一周以上 新手友好度 30/100
apache/maven-executor#1 · 1 条评论 ·
维护者通常 5 天内回复
查看 apache/maven-executor 的全部 Issue
相似的 Issue
-
False Negative: InnerTypeLastCheck does not report members declared after inner enums or annotations未关闭
难度 2/5 1-3 小时 新手友好度 78/100
checkstyle/checkstyle#22027 ·
维护者通常 1 天内回复
-
bug follow-up lane:auto
难度 2/5 1-3 小时 新手友好度 85/100
Sanne/incus-spawn#1497 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 85/100
维护者通常 1 天内回复
-
[BUG][RUST] chrono date-time path/query/header params are not serialized as RFC 3339可能已有人在做 @teovillanueva 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 82/100
OpenAPITools/openapi-generator#25297 ·
维护者通常 1 天内回复
-
[CI] NettyClientTest.testServerDisconnection may fail with DisconnectException可能已有人在做 @yangshangqing95 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 86/100
维护者通常 1 天内回复