ops4j / org.ops4j.pax.exam2

Pax Exam is a testing framework for OSGi
https://ops4j1.jira.com/wiki/spaces/PAXEXAM4/
Apache License 2.0
84 stars 100 forks source link

Sporadic JVM crashes when extracting Karaf archives #1084

Closed oliverlietz closed 11 months ago

oliverlietz commented 11 months ago

According to custom logging, the crashes happen when ArchiveExtractor writes file entries to disk. It happens with different Karaf 4 versions in tar.gz and zip format on local device (Mac OS, Java 8) and on CI.

Error:  Failed to execute goal org.apache.maven.plugins:maven-failsafe-plugin:3.1.2:verify (default) on project pax-exam-container-karaf: 
Error:  
Error:  Please refer to /home/runner/work/org.ops4j.pax.exam2/org.ops4j.pax.exam2/containers/pax-exam-container-karaf/target/failsafe-reports for the individual test results.
Error:  Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
Error:  The forked VM terminated without properly saying goodbye. VM crash or System.exit called?
Error:  Command was /bin/sh -c cd '/home/runner/work/org.ops4j.pax.exam2/org.ops4j.pax.exam2/containers/pax-exam-container-karaf' && '/usr/lib/jvm/temurin-8-jdk-amd64/jre/bin/java' '-jar' '/home/runner/work/org.ops4j.pax.exam2/org.ops4j.pax.exam2/containers/pax-exam-container-karaf/target/surefire/surefirebooter-20230813201846728_3.jar' '/home/runner/work/org.ops4j.pax.exam2/org.ops4j.pax.exam2/containers/pax-exam-container-karaf/target/surefire' '2023-08-13T20-17-36_132-jvmRun1' 'surefire-20230813201846728_1tmp' 'surefire_0-20230813201846728_2tmp'
Error:  Error occurred in starting fork, check output in log
Error:  Process Exit Code: 255
Error:  Crashed tests:
[ERROR] Error occurred in starting fork, check output in log
[ERROR] Process Exit Code: 255
[ERROR] Crashed tests:
[ERROR] org.ops4j.pax.exam.karaf.container.Karaf4TestContainerIT
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:643)
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:285)
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:250)
[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1203)
[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:1055)
[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:871)
[ERROR]     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:126)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:328)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:316)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:174)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.access$000(MojoExecutor.java:75)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:162)
[ERROR]     at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute(DefaultMojosExecutionStrategy.java:39)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:159)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:105)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:73)
[ERROR]     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:53)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:118)
[ERROR]     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:261)
[ERROR]     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:173)
[ERROR]     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:101)
[ERROR]     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:906)
[ERROR]     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:283)
[ERROR]     at org.apache.maven.cli.MavenCli.main(MavenCli.java:206)
[ERROR]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR]     at java.lang.reflect.Method.invoke(Method.java:498)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:283)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:226)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:407)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:348)
oliverlietz commented 11 months ago

Different issue breaking build:

Exception in thread "JMX Connector Thread [service:jmx:rmi://127.0.0.1:44444/jndi/rmi://127.0.0.1:1099/karaf-root]" java.lang.RuntimeException: 
Port already in use: 44444; 
You may have started two containers.  If you need to start a second container or the default ports are already in use update the config file etc/org.apache.karaf.management.cfg and change the Registry Port and Server Port to unused ports
    at org.apache.karaf.management.ConnectorServerFactory.lambda$init$0(ConnectorServerFactory.java:325)
    at java.lang.Thread.run(Thread.java:750)
Exception in thread "JMX Connector Thread [service:jmx:rmi://127.0.0.1:44444/jndi/rmi://127.0.0.1:1099/karaf-root]" java.lang.RuntimeException: 
Port already in use: 44444; 
You may have started two containers.  If you need to start a second container or the default ports are already in use update the config file etc/org.apache.karaf.management.cfg and change the Registry Port and Server Port to unused ports
    at org.apache.karaf.management.ConnectorServerFactory.lambda$init$0(ConnectorServerFactory.java:325)
    at java.lang.Thread.run(Thread.java:750)
10:12:20.817 [main] WARN  o.o.pax.exam.spi.DefaultExamSystem - Option org.ops4j.pax.exam.karaf.options.libraries.OverrideJUnitBundlesOption has not been recognized.
10:12:20.817 [main] WARN  o.o.pax.exam.spi.DefaultExamSystem - Option org.ops4j.pax.exam.karaf.options.KarafDistributionConfigurationOption has not been recognized.
10:12:20.817 [main] WARN  o.o.pax.exam.spi.DefaultExamSystem - Option org.ops4j.pax.exam.options.FrameworkStartLevelOption has not been recognized.
10:12:20.833 [main] WARN  o.o.pax.exam.spi.DefaultExamSystem - Option org.ops4j.pax.exam.karaf.options.libraries.OverrideJUnitBundlesOption has not been recognized.
10:12:20.833 [main] WARN  o.o.pax.exam.spi.DefaultExamSystem - Option org.ops4j.pax.exam.karaf.options.KarafDistributionConfigurationOption has not been recognized.
10:12:20.833 [main] WARN  o.o.pax.exam.spi.DefaultExamSystem - Option org.ops4j.pax.exam.options.FrameworkStartLevelOption has not been recognized.
10:12:21.130 [main] INFO  o.o.p.e.spi.reactors.ReactorManager - suite finished
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 117.0 s -- in org.ops4j.pax.exam.karaf.container.ValidateOverridingJUnitBundlesIT
Error:  Surefire is going to kill self fork JVM. The exit has elapsed 30 seconds after System.exit(0).
[INFO] 
[INFO] Results:
[INFO] 
Error:  Errors: 
Error:    Karaf3TestContainerIT.checkKarafSystemService � NotBound 8a71afe1-b45d-45ba-b9ec-40b4a2693cf8
[INFO] 
Error:  Tests run: 7, Failures: 0, Errors: 1, Skipped:

Setting Registry Port and Server Port is what we do in Apache Sling Karaf.