Problem determination
Problem determination helps you understand the kind of fault you have, and the appropriate course of action.
When you know what kind of problem you have, you might do one or
more of the following tasks:
- Fix the problem
- Find a good workaround
- Collect the necessary data with which to generate a bug report to IBM
First steps in problem determination
Before proceeding in problem determination, there are some initial questions to be answered.- Have you changed anything recently?
- If you have changed, added, or removed software or hardware just before the problem occurred, back out the change and see if the problem persists.
- Is the problem reproducible on the same workstation?
- Knowing that this defect occurs every time the described steps are taken is helpful because it indicates a straightforward programming error. If the problem occurs at alternate times, or occasionally, thread interaction and timing problems in general are much more likely.
- Is the problem reproducible on another workstation?
- A problem that is not evident on another workstation might help you find the cause. A difference in hardware might make the problem disappear; for example, the number of processors. Also, differences in the operating system and application software installed might make a difference to the JVM. For example, the visibility of a race condition in the JVM or a user Java™ application might be influenced by the speed at which certain operations are performed by the system.
- Can you reproduce the problem with the latest refresh?
- The problem might also have been fixed in a recent refresh. Make sure that you are using the latest refresh for your environment. Check the latest downloads that are available on the Java SDK products on z/OS page.
- Are you using a supported operating system with the latest patches installed?
- It is important to use an operating system or distribution that supports the JVM and to have the latest patches for operating system components. For example, upgrading system libraries can solve problems. Moreover, later versions of system software can provide a richer set of diagnostic information. See Setting up and checking your z/OS environment section.
- Does turning off the JIT or AOT help?
- If turning off the JIT or AOT prevents the problem, there might be a problem with the JIT or AOT. The problem can also indicate a race condition in your Java application that surfaces only in certain conditions. If the problem is intermittent, reducing the JIT compilation threshold to 0 might help reproduce the problem more consistently. (See Diagnosing a JIT or AOT problem in the J9 VM reference.)
- Have you tried reinstalling the JVM or other software and rebuilding relevant application files?
- Some problems occur from a damaged or incorrect installation of the JVM or other software. It is also possible that an application might have inconsistent versions of binary files or packages. Inconsistency is likely in a development or testing environment and could potentially be solved by getting a fresh build or installation.
- Have you installed the latest patches for other software that interacts with the JVM? For example, the IBM® WebSphere® Application Server and DB2®.
- The problem might be related to configuration of the JVM in a larger environment, and might have been solved already in a refresh. Is the problem reproducible when the latest patches have been installed?
- Have you enabled core dumps?
- Core dumps are essential to enable IBM Service to debug a problem. Core dumps are enabled by default for the Java process. See Using dump agents for details. The operating system settings might also need to be in place to enable the dump to be generated and to ensure that it is complete. Details of the required operating system settings are contained in the relevant problem determination section for the platform.
- What logging information is available?
- The JVM logs information about problems as they occur. You can enable more detailed logging, and control where the logging information goes. For more details, see OpenJ9 VM Messages.