The final section in the error log is the system information. The output is operating-system-specific but in general includes the operating system version, CPU information, and summary information about the memory configuration.
Example A-21 shows output on a Oracle Solaris 9 operating system.
Example A-21 System Information in the Error Log
--------------- S Y S T E M --------------- OS: Oracle Solaris 9 12/05 s9s_u5wos_08b SPARC Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms. Assembled 21 November 2005 uname:SunOS 5.9 Generic_112233-10 sun4u (T2 libthread) rlimit: STACK 8192k, CORE infinity, NOFILE 65536, AS infinity load average:0.41 0.14 0.09 CPU:total 2 has_v8, has_v9, has_vis1, has_vis2, is_ultra3 Memory: 8k page, physical 2097152k(1394472k free) vm_info: Java HotSpot(TM) Client VM (1.5-internal) for Oracle Solaris-sparc, built on Aug 12 2005 10:22:32 by unknown with unknown Workshop:0x550
On Oracle Solaris and Linux, the operating system information is contained in the file /etc/*release. This file describes the kind of system the application is running on, and in some cases the information string might include the patch level. Some system upgrades are not reflected in the /etc/*release file. This is especially true on the Linux system, where the user can rebuild any part of the system.
On Oracle Solaris operating system the uname
system call is used to get the name for the kernel. The thread library (T1 or T2) is also printed.
On the Linux system the uname
system call is also used to get the kernel name. The libc
version and the thread library type are also printed, as shown in Example A-22.
Example A-22 Thread Library Type in the Error Log
uname:Linux 2.4.18-3smp #1 SMP Thu Apr 18 07:27:31 EDT 2002 i686 libc:glibc 2.2.5 stable linuxthreads (floating stack) |<- glibc version ->|<-- pthread type -->|
On Linux there are three possible thread types, namely linuxthreads (fixed stack)
, linuxthreads (floating stack)
, and NPTL
. They are normally installed in /lib, /lib/i686, and /lib/tls.
It is useful to know the thread type. For example, if the crash appears to be related to pthread
, then you might be able to work around the issue by selecting a different pthread
library. A different pthread
library (and libc
) can be selected by setting LD_LIBRARY_PATH
or LD_ASSUME_KERNEL
.
The glibc
version usually does not include the patch level. The command rpm -q glibc
might provide more detailed version information.
On Oracle Solaris and Linux operating systems, the next information is the rlimit
information. Note: The default stack size of the VM is usually smaller than the system limit, as shown in Example A-23.
Example A-23 rlimit Information in the Error Log
rlimit: STACK 8192k, CORE 0k, NPROC 4092, NOFILE 1024, AS infinity | | | | virtual memory (-v) | | | +--- max open files (ulimit -n) | | +----------- max user processes (ulimit -u) | +------------------------- core dump size (ulimit -c) +---------------------------------------- stack size (ulimit -s) load average:0.04 0.05 0.02
The next information specifies the CPU architecture and capabilities identified by the VM at start-up, as shown in the Example A-24 .
Example A-24 CPU Architecture and Capabilities in the Error Log
CPU:total 2 family 6, cmov, cx8, fxsr, mmx, sse | | |<----- CPU features ---->| | | | +--- processor family (IA32 only): | 3 - i386 | 4 - i486 | 5 - Pentium | 6 - PentiumPro, PII, PIII | 15 - Pentium 4 +------------ Total number of CPUs
Table A-4 shows the possible CPU features on a SPARC system.
Table A-4 SPARC Features
SPARC Feature | Description |
---|---|
|
Supports v8 instructions. |
|
Supports v9 instructions. |
|
Supports visualization instructions. |
|
Supports visualization instructions. |
|
UltraSparc III. |
|
No hardware integer multiply and divide. |
|
No multiply-add and multiply-subtract instructions. |
Table A-5 shows the possible CPU features on an Intel/IA32 system.
Table A-5 Intel/IA32 Features
Intel/IA32 Feature | Description |
---|---|
|
Supports cmov instruction. |
|
Supports cmpxchg8b instruction. |
|
Supports fxsave and fxrstor. |
|
Supports MMX. |
|
Supports SSE extensions. |
|
Supports SSE2 extensions. |
|
Supports Hyper-Threading Technology. |
Table A-6 shows the possible CPU features on an AMD64/EM64T system.
Table A-6 AMD64/EM64T Features
AMD64/EM64T Feature | Description |
---|---|
|
AMD Opteron, Athlon64, and so forth. |
|
Intel EM64T processor. |
|
Supports 3DNow extension. |
|
Supports Hyper-Threading Technology. |
The next information in the error log is memory information, as shown in Example A-25.
Example A-25 Memory information in the Error Log
unused swap space total amount of swap space | unused physical memory | | total amount of physical memory | | | page size | | | | v v v v v Memory: 4k page, physical 513604k(11228k free), swap 530104k(497504k free)
Some systems require swap space to be at lease twice the size of real physical memory, whereas other systems do not have any such requirements. As a general rule, if both physical memory and swap space are almost full, there is good reason to suspect that the crash was due to insufficient memory.
On Linux systems the kernel may convert most of unused physical memory to file cache. When there is a need for more memory, the Linux kernel will give the cache memory back to the application. This is handled transparently by the kernel, but it does mean the amount of unused physical memory reported by fatal error handler could be close to zero when there is still sufficient physical memory available.
The final information in the SYSTEM section of the error log is vm_info
, which is a version string embedded in libjvm.so/jvm.dll. Every Java VM has its own unique vm_info
string. If you are in doubt about whether the fatal error log was generated by a particular Java VM, check the version string.