Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 264263
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T22:40:15+00:00 2026-05-11T22:40:15+00:00

I am investigating a Java issue (using IBM JVM 1.4.2 64-bit) on Red Hat

  • 0

I am investigating a Java issue (using IBM JVM 1.4.2 64-bit) on Red Hat Linux.
I am wondering if anyone has seen this error message before and knows if there is a workaround to this problem?

Source:

import sun.misc.Signal;
import sun.misc.SignalHandler;

public class SignalTest extends Thread
{
    private static Signal signal = new Signal("INT");

    private static ShutdownHandler handler = new ShutdownHandler();

    private static class ShutdownHandler implements SignalHandler
    {
        public void handle(Signal sig)
        {
        }
    }

    public static void main(String[] args)
    {
        try
        {
            Signal.handle(signal, handler);
        }
        catch(Throwable e)
        {
            e.printStackTrace();
        }

        try { Thread.sleep(5000); } catch(Exception e) { e.printStackTrace(); }

        System.exit(0);
    }
}

Output:

java.lang.IllegalArgumentException <Signal already used by VM: INT>
java.lang.IllegalArgumentException: Signal already used by VM: INT
at
com.ibm.misc.SignalDispatcher.registerSignal(SignalDispatcher.java:145)
at sun.misc.Signal.handle(Signal.java:199)
at xxx

Additional Information:

I found out something strange.
The reason why it fails is because I am running the program inside a shell script as a background process.

i.e.
sigtest.sh:

#!/bin/bash
java -cp . SignalTest >> sigtest.log 2>&1 &

If I run the program from the command line, or remove the “&” (i.e. make it a foreground process inside the shell script), it doesn’t have a problem…
I don’t understand why this is the case.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-11T22:40:16+00:00Added an answer on May 11, 2026 at 10:40 pm

    This is may very well be a JVM implementation specific problem. We are using an undocumented / unsupported API (sun.misc.Signal/SignalHandler) and therefore no contract on the behavior of the API is guaranteed.

    The IBM JVM implementation could do signal-handling-related-things differently from the SUN JVM implementation and thus cause this problem. So that this specific use case works in the SUN JVM but not in the IBM JVM.

    But try out the following (I can’t try it out myself):

    Do all combinations off starting the JVM with one/two/three of those parameters and there possible value combinations.

    1. the -Xrs option specified / not specified
    2. the property ibm.signalhandling.sigint set to true / false
    3. the property ibm.signalhandling.rs set to true / false

    (The properties where found via google in several error dumps but I can’t find any specific documentation on them)

    I don’t know if the IBM JVM also supports this special flag but you could try adding this too which in SUN JVM seems to be specific for some problems with signal handlers under linux/solaris

    -XX:-AllowUserSignalHandlers
    

    Or try using a native signal handler if that is an option for you. Check out the code samples provided:

    • in the link below
    • Catching SIGINT in a Java application under UNIX
    • Check signal handling, native signal chainging
    • JDK 6 HotSpot VM – Signal Handling on Solaris OS and Linux

    Although it doesn’t relate to your specific problem, an IBM article on JVM signal handling (slightly dated but still mostly correct). With samples for native code signal handlers:

    Revelations on Java signal handling and termination


    But I guess this may all be to no avail as the IBM JVM implementation could rely on handling SIGINT itself to function correctly and thus never giving you a chance to handle SIGINT yourself.

    Btw. from the description to the -Xrs flag I understand that it actually may hinder you to do what you want. It says

    When -Xrs is used on Sun’s JVM, the
    signal masks for SIGINT, SIGTERM,
    SIGHUP, and SIGQUIT are not changed by
    the JVM, and signal handlers for these
    signals are not installed.

    Or it could mean that only the JVM default actions for the signals aren’t executed. Or it could depend on the JVM implementation what is really meant.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 231k
  • Answers 231k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer Use the following function like this: Image('/path/to/original.image', '1/1', '150*', './thumb.jpg');… May 13, 2026 at 2:13 am
  • Editorial Team
    Editorial Team added an answer Check you database schema to see if the field (referenced… May 13, 2026 at 2:13 am
  • Editorial Team
    Editorial Team added an answer I figured out the problem - there was a session… May 13, 2026 at 2:13 am

Related Questions

We have a large (>500,000 LOC) Java system that depends on 40-50 OSS packages.
I have a situation where I want a Java client to have a two-way
I am investigating the use of web frameworks with my Java web-app. My basic
I am currently investigating how to make a connection to a SQL Server database

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.