ARM Technical Support Knowledge Articles

What is the cause of internal fault 0xf42b?

Applies to: RealView Development Suite (RVDS)

Answer

This internal fault can occur when using RVCT 2.1 or 2.2.

This internal fault is caused by the limit on the compiler's debug table generation. Forward references in the debug information must currently fit into 3 bytes. If the debug information as a whole is too big, these forward references can stretch too far and this internal fault is generated.

C++ will exaggerate this problem because of long, mangled names.

Sometimes programmers would use an obfuscator to obfuscate their source code before distributing it for debug purposes. They may find that internal fault 0xf42b is only generated before obfuscating the source, but not after. This is because an obfuscator tends to shorten variable and function names considerably, which may remove the problem. Another simple workaround is to try splitting the source into separate files.

In RVCT 2.1 and 2.2, an undocumented compiler option "--debug_info=large_debug_info" was added to allow the use of 4 bytes for forward references. The disadvantage to this workaround is that the debug information will become substantially larger.

For RVCT 3.0 and later, the compiler no longer suffers from this issue, so there is no need to use the "--debug_info=large_debug_info" option with RVCT 3.0 and later.

Rate this article

[Bad]
|
|
[Good]
Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential