ARM Technical Support Knowledge Articles

How can I prevent occasional build failures caused by license management errors when using floating licenses?

Applies to: DS-5, RealView Development Suite (RVDS), Tool Licensing (License Management)

Answer

A typical build process, for example, an overnight build, may contain many thousands of ARM compilation tool invocations. Each of the tool invocations will involve network communication between the client (build) machine and the license server.

If a short term "network glitch" occurs at the critical moment in the handshaking between the client machine and the license server, then the ARM tool will fail to obtain a license. This can lead to build failures as below: 

  • Many tool invocations will correctly generate a corresponding object file
  • A single tool invocation that fails with one of the errors below, and hence generates no object file
  • The remaining tools invocations correctly generate corresponding object files
  • A final link step that fails due to the single missing object file

In order to prevent such short term "network glitches" breaking the build process, the ARM compilation tools provide a license retry mechanism.  This mechanism causes the ARM tool to repeatedly attempt to check out a license if it receives one of the following FLEXnet error codes back from the license server:

  1. -15 "Cannot connect to server"
  2. -20 "Application server busy"
  3. -33 "Bad encryption handshake with server"
  4. -96 "License server machine is down or not responding"
  5. -97 "The desired vendor daemon is down"

Up to 10 attempts will be made to reobtain a license. Each attempt will be recorded in the license server debug log as below:

  Retrying - GMT : Tuesday Sep 25 14:51:46 2007
  Failed to checkout: feature compiler, version 2.2, result: -15

This license retry mechanism is implemented in RVDS 2.2 Service Pack 1 (SP1) and later:
armcc and armlink - added in RVCT 2.2 build 576
armasm and fromelf - added in RVCT 2.2 build 593

The command line option to enable the license retry mechanism is --licretry. The following environment variables allow command line options to the tools to be added to all invocations of the tool, without the need to change build infrastructures.

RVCT 2.2 (release version is 349)
RVCT22_CCOPT (all release builds)
RVCT22_ASMOPT (build 593 onwards)
RVCT22_LINKOPT (build 593 onwards)

RVCT 3.0 (release version is 441)
RVCT30_CCOPT (all release builds)
RVCT30_ASMOPT (all release builds)
RVCT30_LINKOPT (all release builds)

RVCT 3.1 (release version is 569)
RVCT31_CCOPT (all release builds)
RVCT31_ASMOPT (all release builds)
RVCT31_LINKOPT (all release builds)

RVCT 4.0 (release version is 400)
RVCT40_CCOPT (all release builds)
RVCT40_ASMOPT (all release builds)
RVCT40_LINKOPT (all release builds)

ARM Compiler toolchain 4.1 (release version is 462)
ARMCC41_CCOPT (all release builds)
ARMCC41_ASMOPT (all release builds)
ARMCC41_LINKOPT (all release builds)

ARM Compiler toolchain 5.0 (release version is 90)
ARMCC50_CCOPT (all release builds)
ARMCC50_ASMOPT (all release builds)
ARMCC50_LINKOPT (all release builds)

Example usage:

set ARMCC50_CCOPT=--licretry

Note that this option is not the default, as the most common reason for seeing the one of the above errors is that there is actually a "real" problem with the network or the license server setup. Therefore, we highly recommend reading the Trouble shooting floating licensing issues article before using the license retry mechanism.

Article last edited on: 2011-09-12 14:23:03

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