hid4java icon indicating copy to clipboard operation
hid4java copied to clipboard

On Ubuntu 24.04.2 LTS examples run under Maven do not terminate cleanly

Open tim-littlefair opened this issue 9 months ago • 1 comments

Describe the problem

In the hid4java wiki, there are recommendations to run the test/example programs using Maven commands of the form:

mvn clean test exec:java -Dexec.classpathScope="test" -Dexec.mainClass="org.hid4java.examples.UsbHidEnumerationExample"

I am running on an Intel machine with Ubuntu 24.04.2 LTS installed, when run any of the examples I find that the shutdown is delayed, and only completes after warnings and exceptions are logged (see log messages below).

You may find that this issue has arisen before, so here is a checklist of useful links to provide assistance and potentially avoid duplicate issues:

Please provide a clear and concise description of what the problem is below:

Platform

Knowing the platform greatly narrows down the potential causes of the problem.

  • Platform: linux-x86-64
  • OS version Ubuntu 22.04.2 LTS
  • hid4java versions: 0.8.0, develop
  • mvn --version output: Apache Maven 3.8.7 Maven home: /usr/share/maven Java version: 17.0.14, vendor: Ubuntu, runtime: /usr/lib/jvm/java-17-openjdk-amd64 Default locale: en_AU, platform encoding: UTF-8 OS name: "linux", version: "6.8.0-53-lowlatency", arch: "amd64", family: "unix"

To Reproduce

Steps to reproduce the behavior:

sudo mvn clean test exec:java -Dexec.classpathScope="test" -Dexec.mainClass="org.hid4java.examples.UsbHidEnumerationExample"

NB sudo is required on my environment because I am choosing not to put udev rules in place before the application I am working on has reached the stage of needing an installer.

Expected behavior

On completion of the enumerated device report, the following two lines should appear, 30 seconds apart.

Waiting 30s to demonstrate attach/detach handling. Watch for slow response after write if configured.
Triggering shutdown...

The program should exit immediately after the second line appears.

Actual behaviour The following two lines appear:

Waiting 30s to demonstrate attach/detach handling. Watch for slow response after write if configured.
Triggering shutdown...

but the program does not exit for some time (probably 15 seconds, haven't measured it). Before the program does exit it prints the following lines:

[WARNING] thread Thread[hid4java event worker,5,org.hid4java.examples.UsbHidEnumerationExample] was interrupted but is still alive after waiting at least 15000msecs
[WARNING] thread Thread[hid4java event worker,5,org.hid4java.examples.UsbHidEnumerationExample] will linger despite being asked to die via interruption
[WARNING] thread Thread[hid4java event worker,5,org.hid4java.examples.UsbHidEnumerationExample] will linger despite being asked to die via interruption
[WARNING] thread Thread[hid4java event worker,5,org.hid4java.examples.UsbHidEnumerationExample] will linger despite being asked to die via interruption
[WARNING] NOTE: 3 thread(s) did not finish despite being asked to via interruption. This is not a problem with exec:java, it is a problem with the running code. Although not serious, it should be remedied.
[WARNING] Couldn't destroy threadgroup org.codehaus.mojo.exec.ExecJavaMojo$IsolatedThreadGroup[name=org.hid4java.examples.UsbHidEnumerationExample,maxpri=10]
java.lang.IllegalThreadStateException
    at java.lang.ThreadGroup.destroy (ThreadGroup.java:803)
    at org.codehaus.mojo.exec.ExecJavaMojo.execute (ExecJavaMojo.java:330)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:298)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:569)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)

Additional information

I believe that this behaviour may be the result of a problem with Maven, described in this StackOverflow response: https://stackoverflow.com/a/77783869

I have a local copy of a linux-specific shell script to invoke the tests without using mvn as a wrapper. With this script the problem does not occur. I am happy to do a pull request with this tomorrow if it would be welcome.

tim-littlefair avatar Feb 17 '25 12:02 tim-littlefair

Hi Tim

Thanks for getting in touch. I’m AFK for this for a few days, but if you’d like to set up the pull request I’m happy to look at it.

On Mon, 17 Feb 2025 at 13:36, Tim Littlefair @.***> wrote:

Describe the problem

In the hid4java wiki, there are recommendations to run the test/example programs using Maven commands of the form:

mvn clean test exec:java -Dexec.classpathScope="test" -Dexec.mainClass="org.hid4java.examples.UsbHidEnumerationExample"

I am running on an Intel machine with Ubuntu 24.04.1 LTS installed, when run any of the examples I find that the shutdown is delayed, and only completes after warnings and exceptions are logged (see log messages below).

You may find that this issue has arisen before, so here is a checklist of useful links to provide assistance and potentially avoid duplicate issues:

Please provide a clear and concise description of what the problem is below:

Platform

Knowing the platform greatly narrows down the potential causes of the problem.

  • Platform: linux-x86-64
  • OS version Ubuntu 22.04.1
  • hid4java versions: 0.8.0, develop

To Reproduce

Steps to reproduce the behavior:

sudo mvn clean test exec:java -Dexec.classpathScope="test" -Dexec.mainClass="org.hid4java.examples.UsbHidEnumerationExample" NB sudo is required on my environment because I am choosing not to put udev rules in place before the application I am working on has reached the stage of needing an installer.

Expected behavior

On completion of the enumerated device report, the following two lines should appear, 30 seconds apart.

Waiting 30s to demonstrate attach/detach handling. Watch for slow response after write if configured. Triggering shutdown...

The program should exit immediately after the second line appears.

Actual behaviour The following two lines appear:

Waiting 30s to demonstrate attach/detach handling. Watch for slow response after write if configured. Triggering shutdown...

but the program does not exit for some time (probably 15 seconds, haven't measured it). Before the program does exit it prints the following lines:

[WARNING] thread Thread[hid4java event worker,5,org.hid4java.examples.UsbHidEnumerationExample] was interrupted but is still alive after waiting at least 15000msecs [WARNING] thread Thread[hid4java event worker,5,org.hid4java.examples.UsbHidEnumerationExample] will linger despite being asked to die via interruption [WARNING] thread Thread[hid4java event worker,5,org.hid4java.examples.UsbHidEnumerationExample] will linger despite being asked to die via interruption [WARNING] thread Thread[hid4java event worker,5,org.hid4java.examples.UsbHidEnumerationExample] will linger despite being asked to die via interruption [WARNING] NOTE: 3 thread(s) did not finish despite being asked to via interruption. This is not a problem with exec:java, it is a problem with the running code. Although not serious, it should be remedied. [WARNING] Couldn't destroy threadgroup org.codehaus.mojo.exec.ExecJavaMojo$IsolatedThreadGroup[name=org.hid4java.examples.UsbHidEnumerationExample,maxpri=10] java.lang.IllegalThreadStateException at java.lang.ThreadGroup.destroy (ThreadGroup.java:803) at org.codehaus.mojo.exec.ExecJavaMojo.execute (ExecJavaMojo.java:330) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137) at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370) at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:298) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960) at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293) at org.apache.maven.cli.MavenCli.main (MavenCli.java:196) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77) at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke (Method.java:569) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283) at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)

Additional information

I believe that this behaviour may be the result of a problem with Maven, described in this StackOverflow response: https://stackoverflow.com/a/77783869

I have a local copy of a linux-specific shell script to invoke the tests without using mvn as a wrapper. With this script the problem does not occur. I am happy to do a pull request with this tomorrow if it would be welcome.

— Reply to this email directly, view it on GitHub https://github.com/gary-rowe/hid4java/issues/161, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACTQ5KIGJZJOSHKJCEMRXT2QHJWLAVCNFSM6AAAAABXJHYMZOVHI2DSMVQWIX3LMV43ASLTON2WKOZSHA2TONZTGM4TSNA . You are receiving this because you are subscribed to this thread.Message ID: @.***> [image: tim-littlefair]tim-littlefair created an issue (gary-rowe/hid4java#161) https://github.com/gary-rowe/hid4java/issues/161

Describe the problem

In the hid4java wiki, there are recommendations to run the test/example programs using Maven commands of the form:

mvn clean test exec:java -Dexec.classpathScope="test" -Dexec.mainClass="org.hid4java.examples.UsbHidEnumerationExample"

I am running on an Intel machine with Ubuntu 24.04.1 LTS installed, when run any of the examples I find that the shutdown is delayed, and only completes after warnings and exceptions are logged (see log messages below).

You may find that this issue has arisen before, so here is a checklist of useful links to provide assistance and potentially avoid duplicate issues:

Please provide a clear and concise description of what the problem is below:

Platform

Knowing the platform greatly narrows down the potential causes of the problem.

  • Platform: linux-x86-64
  • OS version Ubuntu 22.04.1
  • hid4java versions: 0.8.0, develop

To Reproduce

Steps to reproduce the behavior:

sudo mvn clean test exec:java -Dexec.classpathScope="test" -Dexec.mainClass="org.hid4java.examples.UsbHidEnumerationExample" NB sudo is required on my environment because I am choosing not to put udev rules in place before the application I am working on has reached the stage of needing an installer.

Expected behavior

On completion of the enumerated device report, the following two lines should appear, 30 seconds apart.

Waiting 30s to demonstrate attach/detach handling. Watch for slow response after write if configured. Triggering shutdown...

The program should exit immediately after the second line appears.

Actual behaviour The following two lines appear:

Waiting 30s to demonstrate attach/detach handling. Watch for slow response after write if configured. Triggering shutdown...

but the program does not exit for some time (probably 15 seconds, haven't measured it). Before the program does exit it prints the following lines:

[WARNING] thread Thread[hid4java event worker,5,org.hid4java.examples.UsbHidEnumerationExample] was interrupted but is still alive after waiting at least 15000msecs [WARNING] thread Thread[hid4java event worker,5,org.hid4java.examples.UsbHidEnumerationExample] will linger despite being asked to die via interruption [WARNING] thread Thread[hid4java event worker,5,org.hid4java.examples.UsbHidEnumerationExample] will linger despite being asked to die via interruption [WARNING] thread Thread[hid4java event worker,5,org.hid4java.examples.UsbHidEnumerationExample] will linger despite being asked to die via interruption [WARNING] NOTE: 3 thread(s) did not finish despite being asked to via interruption. This is not a problem with exec:java, it is a problem with the running code. Although not serious, it should be remedied. [WARNING] Couldn't destroy threadgroup org.codehaus.mojo.exec.ExecJavaMojo$IsolatedThreadGroup[name=org.hid4java.examples.UsbHidEnumerationExample,maxpri=10] java.lang.IllegalThreadStateException at java.lang.ThreadGroup.destroy (ThreadGroup.java:803) at org.codehaus.mojo.exec.ExecJavaMojo.execute (ExecJavaMojo.java:330) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137) at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370) at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:298) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960) at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293) at org.apache.maven.cli.MavenCli.main (MavenCli.java:196) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77) at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke (Method.java:569) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283) at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)

Additional information

I believe that this behaviour may be the result of a problem with Maven, described in this StackOverflow response: https://stackoverflow.com/a/77783869

I have a local copy of a linux-specific shell script to invoke the tests without using mvn as a wrapper. With this script the problem does not occur. I am happy to do a pull request with this tomorrow if it would be welcome.

— Reply to this email directly, view it on GitHub https://github.com/gary-rowe/hid4java/issues/161, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACTQ5KIGJZJOSHKJCEMRXT2QHJWLAVCNFSM6AAAAABXJHYMZOVHI2DSMVQWIX3LMV43ASLTON2WKOZSHA2TONZTGM4TSNA . You are receiving this because you are subscribed to this thread.Message ID: @.***>

gary-rowe avatar Feb 18 '25 08:02 gary-rowe