Control: tag -1 - patch

On Fri, 11 Apr 2025 18:44:22 +1200 Vladimir Petko
<vladimir.pe...@canonical.com> wrote:
> Hi,
> 
> I believe the patch tag was inherited from #1061025 that has an
> associated MR[1]. This is not a true solution, merely a workaround to
> resolve the circular dependency causing this issue.
[...]

Right, so I'm removing the patch tag.

I tried bisecting the changes between bookworm and unstable to find the
source of the breakage:

- bookworm:                           success
- unstable snapshot 20230630T210935Z: success
- unstable snapshot 20240531T143744Z: failure (tests complete)
- unstable snapshot 20241115T204403Z: failure (tests hang)
- unstable snapshot 20240823T205308Z: failure (tests complete)
- unstable snapshot 20241008T203645Z: failure (tests complete)
- unstable snapshot 20241026T203202Z: failure (tests hang)
- unstable snapshot 20241017T204911Z: failure (tests complete)
- unstable snapshot 20241022T083247Z: failure (tests complete)
- unstable snapshot 20241024T143718Z: failure (tests hang)
...
- unstable snapshot 20241024T083042Z: failure (tests complete)

(For the purposes of this bisection I treated test failures without a
hang as "good" because that's not the issue reported, though they may in
fact be related.)

So then I compared the build dependency versions in the last good and
first bad snapshots, and tried upgrading the Java packages one by one. 
The result was that libsurefire-java (= 2.22.3-3) made the difference:

surefire (2.22.3-3) unstable; urgency=medium
 
  * Team upload.
  * No longer build maven-surefire-report-plugin
  * Removed the unused dependency on velocity
  * Standards-Version updated to 4.7.0
 
 -- Emmanuel Bourg <ebo...@apache.org>  Thu, 24 Oct 2024 14:27:13 +0200

Now, the test failures have tracebacks like:

java.lang.IllegalStateException: Recursive update
        at 
java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1763)
        at 
org.apache.commons.logging.impl.Slf4jLogFactory.getInstance(Slf4jLogFactory.java:286)
        at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:999)
        at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:77)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
        at 
org.apache.commons.logging.impl.Slf4jLogFactory.lambda$getInstance$0(Slf4jLogFactory.java:287)
        at 
java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708)
        at 
org.apache.commons.logging.impl.Slf4jLogFactory.getInstance(Slf4jLogFactory.java:286)
        at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:999)
        at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:77)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
        at org.slf4j.InvocationTest.testNull(InvocationTest.java:89)
        at 
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:61)
        at 
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at 
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
        at 
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at 
org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
        at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
        at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
        at 
org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
        at 
org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
        at 
org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
        at 
org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)

So I don't know that this is really a regression in surefire, or whether
the plugin that was removed just happened to interact with the bug and
changed it from a deadlock into an exception.

Ben.

-- 
Ben Hutchings
When in doubt, use brute force. - Ken Thompson

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to