You are on page 1of 13

Summary

This article applies to BlackBerry® wireless devices based on Java™.

Description

The following table lists errors that can occur in the Java virtual machine (JVM) on
BlackBerry devices. Contact Research In Motion® (RIM®) if you encounter any error
codes not listed in this table.

Value Error Description


The device was reset during
the JVM boot process. The
JVM found the boot in
progress flag was set on
101 Previous startup failed
startup. The screen is
intended to break continuous
reset loops so that corrective
action can be taken.
The system checked the COD
files in the device for
modification and determined
that a problem exists with
one or more COD files.

If all loads fail, a build


process error might occur (a
problem exists with signing
102 Invalid code in filesystem the COD files).

If a user action on the device


resulted in this problem, the
reset cycle is continuous
because the code in the
filesystem has been
corrupted. The only recovery
method is to wipe the device
and restore a new system.
The starting address for the
boot COD file cannot be
103 Cannot find starting address
found. This might indicate
that a boot COD file has not
been installed on the device
or that its format is invalid or
corrupt.
An uncaught Java exception
was thrown by the Java code
and diagnosed by the JVM.
Execution can continue, or
the device can be attached to
104 Uncaught: <Java-type-name>
a debugger on a desktop
computer. The Microsoft®
Windows® Event Viewer log
should contain the traceback
of the thrown exception.
The file system application
programming interface (API)
has returned an error status
105 Example, DbRecSize( %d ) -> %d for a specific operation. This
might indicate a corrupt
filesystem or an error in the
JVM.
An error was detected in the
106 Graphics system error graphics system on the
device.
A C++ class in the JVM was
coded incorrectly to inherit
from VMRamObject that has
107 operator new() called the correct override for
operator new. Extract the
current (post-reset)
BUGDISP.
A C++ class in the JVM has
was coded incorrectly to
inherit from VMRamObject
108 operator delete() called that has the correct override
for operator delete. Extract
the current (post-reset)
BUGDISP.
The value returned by
RimPriorityMessageCount is
negative. It should always be
109 PriorityMessageCount error: <priority-count> greater than, or equal to, zero.
This indicates an error in the
operating system code.
Extract the current (post-
reset) BUGDISP and
EVENTLOG.
A problem was detected in
the accumulation of JVM
down time, which represents
how long the JVM has been
Non-idle event downtime error: <down-time> idle. This usually indicates an
110
<idle-down-time> error in the device firmware
or the JVM. This could also
occur if the tick count rolls
over after 400 or more days
of device time.
An error was detected in the
font engine system on the
111 Font engine error device. Extract the current
(post-reset) BUGDISP and
EVENTLOG.
An error was detected in the
Java native code. Extract the
112 Java Native Assertion Failure
current (post-reset)
BUGDISP and EVENTLOG.
The application manager
Application manager threw an uncaught event thread threw an
200
exception uncaught exception and
cannot continue execution.
The initialization of the
crypto system failed and the
201 Crypto initialization code failed
device cannot continue
execution.
An attack has been detected
202 An attack on the key store has been detected and execution cannot
continue.
The application manager
console process (usually the
203 Console process died Ribbon) has died. This is
likely due to an uncaught
exception during execution.
An application tried to
commit a plaintext object to
the Persistent Store. This will
204 Persistent Content Exception
only happen if Content
Protection is on and a process
tries to save something in the
PersistentStore that is marked
as plaintext. Since this
exception was not handled,
the persistent store is in a bad
state. You should reset to roll
back to the last good commit
point.

Note: This is not a JVM erro;


the JVM is simply diagnosing
the problem. The eventlog
contains information about
the erroneous Java code.
This is an error return used
internally in the VM. It
501 VM_THREAD_SWITCHED: Internal Error
should never be reported as a
device error.
The last Java process has
502 VM_PROCESS_DEATH: All processes exited terminated. There is nothing
left to execute.
This is an error return used
internally in the VM. It
503 VM_THREAD_DEATH: Internal Error
should never be reported as a
device error.
This is an error return used
internally in the VM. It
504 VM_THREAD_SWITCH: Internal Error
should never be reported as a
device error.
An error has occurred in the
505 VM_BAD_CODE: Bad Byte Code
JIT compiler.
An uncaught Java exception
was thrown in the initial VM
Java thread, thus ending the
506 Uncaught Exception only live thread in the
system. The eventlog
contains the traceback for the
exception.
A dependency on a COD file
507 Unsatisfied Link could not be satisfied because
the COD file is missing.
A problem has been detected
508 Invalid object with a debugger command to
the VM.
The maximum iteration count
for the PPO phase of a GC
must be the maximum
number of file handles in the
system. This error indicates
that the iteration count
VM_PPO_INFINITE_LOOP: infinite loop in exceeds the maximum.
509
PPO phase of GC Hence, a flaw exists in the
PPO loop or a corrupted file
system. The extra hex integer
in the error string is the flash
id of the current record where
the infinite loop was
detected.
All threads are waiting on
objects, resulting in deadlock.
510 Deadlock The system cannot recover
from this state because no
thread can release a lock.
A problem has occurred
while debugging that may be
caused by a VM problem or
511 Debug connection died
an incorrect debugging
command being sent to the
VM.
An idle garbage collection
has been interrupted by a user
512 GC Aborted event (for instance, a key was
pressed or the trackwheel was
used).
An opcode requires that a
513 <clinit> needs running class <clinit> execute before
it can continue execution.
A new instance of a class has
been allocated and it must be
514 <init> needs running initialized by the default
constructor before it can be
used.
The reachable objects form a
group that cannot be
represented properly by the
515 Object group too big
JVM because either there are
too many objects or the total
size of the objects is too
large.
When committing a
persistent object, the JVM
found that the persistent store
id counter reached its limit.
The object was not
516 Persistent ids exhausted
committed and a critical error
was reported. This error
should not occur unless a
device is heavily used for
years.
An inconsistency was
517 Filesystem corrupt detected in the JVM
persistent object store.
A garbage collection marking
phase was terminated via a
longjmp. This indicates that
the marking phase was
interrupted when it should
have completed without
518 Unexpected longjmp interruption. This error
should not occur because
these actions are executed
when the device is not idle,
and GCs can only be
interrupted when the device
is idle.
The JVM host is missing or
519 Internal Error
has been disabled.
This is an internal state that
520 Internal Return indicates a Java method
return needs to be executed.
An Object.wait() was
executed by a thread that
521 Dangerous Wait
holds a lock on another
object.
A thread acquired two locks
on objects in an order that
doesn't match the order in
which a lock on the two types
522 Interlaced synchronization
were previously acquired.
This indicates a future
potential deadlock situation
and is reported. The check is
only available in the
simulator under the control of
the JvmDebugLocks
application switch.
A critical Java process has
terminated, and the device
523 System process died
cannot continue to operate in
a normal manner.
An object has been marked as
recovered by the Low
524 LMM error Memory Manager, but it was
not freed during a garbage
collection.
An auto-commit operation
during a garbage collection
detected a non-persistent
525 Bad persistent object object reachable from the
persistent store root. The type
of the object was output into
the eventlog.
The class definition for
526 java.lang.Object not found java.lang.Object cannot be
found.
The class definition for
527 java.lang.String not found java.lang.String cannot be
found.
All data will be lost when
execution continues. The
error message screen contains
a number representing an
internal reason for the
corruption. This error is not
diagnosed if a COD file was
removed because the JVM
Corrupt filesystem. Unrecoverable. All data will must delete objects that were
528
be lost defined in the removed COD
file. Thus, this error is not
expected in normal device
operation. Refer to the
following reason codes:

1. Root array reference


is not a valid array
reference
2. Root array type is not
Object[]
3. Root array size < 1
(i.e., Object[0])
4. Contents of root[0] is
not a valid ref
5. Type of root[0] is not
a LongIntHashtable
6. Persistent segmented
array header contains
an invalid reference
7. An entry in a
persistent Object[]
contains an invalid
reference
8. An Object's type
refers to an unknown
codfile
9. An Object's type
description in the
codfile doesn't match
the size in the store
10. A reference type field
in an Object has an
invalid reference in it
11. A reference type field
in an object points to
an object of the wrong
type
12. A persistent Object[]
is missing its
descriptor
13. Object in persistent
store is not marked as
persistable
14. Root array is
segmented and one of
the segments is
invalid

Some data will be lost when


execution continues. The
Corrupt filesystem. About to attempt recovery. error message screen contains
529
Some data may be lost a number representing an
internal reason for the
corruption. This error is not
diagnosed if a COD file
WAS removed because the
VM must delete objects that
were defined in the removed
COD file. Thus, this error is
not expected in normal
device operation. Refer to the
following reason codes:

1. Root array reference


is not a valid array
reference
2. Root array type is not
Object[]
3. Root array size < 1
(i.e., Object[0])
4. Contents of root[0] is
not a valid ref
5. Type of root[0] is not
a LongIntHashtable
6. Persistent segmented
array header contains
an invalid reference
7. An entry in a
persistent Object[]
contains an invalid
reference
8. An Object's type
refers to an unknown
codfile
9. An Object's type
description in the
codfile doesn't match
the size in the store
10. A reference type field
in an Object has an
invalid reference in it
11. A reference type field
in an object points to
an object of the wrong
type
12. A persistent Object[]
is missing its
descriptor
13. Object in persistent
store is not marked as
persistable
14. Root array is
segmented and one of
the segments is
invalid

A fixed number of native


objects can be protected from
garbage collection. This error
indicates that a native has
VM_PREVENT_GC_OVERFLOW: exceeded the fixed limit of
530
_preventGC overflow objects that can be protected.
If the device is reset or thread
tracebacks are logged, the
name of the actual native can
be extracted.
There are certain operations
where the JVM cannot
withstand running out of
flash space. In these
531 Flash exhausted
circumstances, this error will
be reported if the JVM
cannot allocate a required
amount of flash space.
Normally this JVM error
should not be reported since
the device is not shipped with
assertions enabled. The
simulator may report this
error in debug mode
532 VM_ASSERTION_FAILED: Assertion failed
indicating a VM assertion
was violated. Try typing
BKPT to activate the
debugger and dump the
native call stack for
forwarding to the VM team.
This is used internally for
VM_RUN_METHOD: <method> needs
533 ECMAScript to call Java
running
methods.
This is used internally to
indicate that fast reset
VM_FAST_RESET_DISABLED: Fast Reset
534 capability is not available.
Disabled
Often used in platform-
specific code.
535 VM_UNUSED_535: Unused This is an unused VM error.
This is used internally to
indicate that the VM structure
VM_FAST_RESET_BAD_INSTANCE: VM
536 passed in is at the wrong
Instance Check Failed
address or has been
corrupted.
This is used internally to
indicate that the VM heap has
VM_FAST_RESET_BAD_HEAP: Heap Check
537 been corrupted or pointers
Failed
into the heap have been
corrupted.
This is used internally to
indicate that the VM IRAM
VM_FAST_RESET_BAD_IRAM: IRAM checks have detected
538
Check Failed corruption of VM data
structures (threads and local
stacks) that reside in IRAM.
This is used internally to
indicate that the VM was not
539 VM_FAST_RESET_NOT_IDLE: Not Idle idle when the reset occurred
and, as such, cannot continue
with a fast reset.
This is used internally to
indicate that the time since
the last fast reset is less than
VM_FAST_RESET_MULTIPLE_RESETS: a minimum time. By
540
Multiple Resets disallowing multiple fast
resets in a short amount of
time, this should prevent fast
reset loops.
The VM detected a problem
in its RAM heap that
indicates its RAM was
corrupted. The problem was
detected by identifying a
VM_HEAP_COMPACT_INFINITE_LOOP: possible infinite loop during
541
infinite loop detected in heap compaction RAM heap compaction. A
bugdisp log and eventlog
should be extracted quickly
when the device is in this
condition. If possible, images
of RAM should be saved.
The JVM detected that some
542 Transient memory leak
memory was not freed,
indicating that a memory leak
has occurred. This condition
is detected as early as
possible to improve chances
of isolating the cause.
The VM detected that the
operating system binary is
different from the operating
system binary used to create
the Java file system. This
means that the Java native
methods may not be linked
properly and as such, the
integrity of the system cannot
be guaranteed. The system
can be recovered by using the
VM DLFX and DLPS
VM_FS_MISMATCH: Incompatible Java
543 commands to delete the
filesystem installed
fixups and persistent store.
This will clear all data and
fixups and let the filesystem
re-link to match the new
operating system binary.

Note: The recovery order is:

1. Delete fixups
2. Delete persistent store
3. Reset device

The VM detected that a


module is trying to reference
VM_SECTION_MAP_OVERFLOW: a module more than 255 other modules.
544
references more than 255 other modules Extract the filesystem
immediately when this error
is detected.
The VM detected an
incompatible or corrupt
VM_INCOMPATIBLE_FILESYS: an
545 filesystem. Extract the
incompatible or corrupt filesystem was found
filesystem immediately when
this error is detected.
The VM detected that the
RAM image of its filesystem
546 VM_UNUSED_546: unused
is corrupted (failed CRC
check). Better to reset than to
duplicate the corruption into
flash.
547 VM_UNUSED_547: unused This is an unused VM error.
548 VM_UNUSED_548: unused This is an unused VM error.
549 VM_UNUSED_549: unused This is an unused VM error.

You might also like