The case of Maya and the missing ProductInformation.pit file


One of the strange thing about supporting Arnold at Autodesk is that you have to be a guru-level licensing expert on Autodesk licensing (not RLM, but Autodesk licensing).

In this case, Maya 2019 would silently fail at startup. Sometimes you’d see the splash screen, but then that would just disappear.

  • There was nothing in the Adlm.log
  • No MayaAdlm log was created
  • The MayaCLM log had only this:
    ERROR: checkoutLicense: Failed to authorize license
  • The clm log did have this:
    JsProductLicenseFact.loadSelectedProductInfoKey - Unable to get selected product key due to unknown problem.

TIP All these log files are in the Temp folder.

  • On Windows, look in %LOCALAPPDATA%\Autodesk\Logs
  • On OSX, look in $TMPDIR
  • On Linux, look in /var/tmp

Process Monitor confirmed that the ProductInformation.pit file was missing:

ProductInformation.pit is an all-important file used by the licensing infrastructure. Every Autodesk product must be registered in that pit file.

If ProductInformation.pit is missing, or corrupted, then everything stops working.

Tracking down the “error initialzing CLM (9)”


It’s not rocket science, but here’s a little application of the scientific method to technical support.

Observation

The Autodesk licensing system loads AdlmIntRes.xml

I used dtruss on macOS and Process Monitor on Windows to see what files are accessed by the licensing system. (On Linux, I would use strace)

On Windows, the file %LOCALAPPDATA%\Autodesk\Logs\AdlmIntRes.xml is loaded.

procmon_adlmintres

On macOS: $TMPVAR/AdlmIntRes.xml:

56944/0x16208b8:  stat64("/var/folders/vb/1d7zhsx97q7_ddz43nccbyj00000gn/T//AdlmIntRes.xml\0", 0x7FFF55D22F00, 0x0) = 0 0
56944/0x16208b8:  stat64("/var/folders/vb/1d7zhsx97q7_ddz43nccbyj00000gn/T//AdlmIntRes.xml\0", 0x7FFF55D22F30, 0x0) = 0 0
56944/0x16208b8:  open_nocancel("/var/folders/vb/1d7zhsx97q7_ddz43nccbyj00000gn/T//AdlmIntRes.xml\0", 0x0, 0x1B6) = 37 0

On Linux: /var/tmp/AdlmIntRes.xml

Hypothesis

Autodesk licensing will fail if there’s a problem with AdlmIntRes.xml

Testing

  • Delete AdlmIntRes.xml
    No problem. The file is recreated
  • Delete the contents of AdlmIntRes.xml and save the file.
    License authorization fails with the error [clm] error initialzing CLM (9)

[clm] product key not found (44)


The Problem

To use Autodesk licenses for Arnold when you batch render with Maya, Arnold must be registered in the Product Information file (aka the PIT file).

Normally the MtoA installer does this for you. But if you’re running Maya and MtoA from a network install, then Arnold won’t be registered in the PIT file, and you’ll see this in the Arnold log:

00:00:00 381MB WARNING | rendering with watermarks because of failed authorization:
00:00:00 381MB | [rlm] error initializing license system:
00:00:00 381MB | [rlm] * Can't read license data (-102)
00:00:00 381MB | [clm] product key not found (44)

and you’d see something like this in the Adlm.log:

337296 2017/11/03 12:29:54 Reason=Fatal error
337296 2017/11/03 12:29:54 ComputerName=WORKSTATION
337296 2017/11/03 12:29:54 OS=6.1.7601.Service Pack 1
337296 2017/11/03 12:29:54 File=AdlmIntLicense.cpp,Line=594
337296 2017/11/03 12:29:54 VendorID=6 [ADLMPIT]
337296 2017/11/03 12:29:54 VendorError=12 [The root information in Product Information Table XML file is missing]
337296 2017/11/03 12:29:54 Reason=Fatal error
337296 2017/11/03 12:29:54 ComputerName=WORKSTATION
337296 2017/11/03 12:29:54 OS=6.1.7601.Service Pack 1
337296 2017/11/03 12:29:54 File=AdlmIntLicense.cpp,Line=595
337296 2017/11/03 12:29:54 AdlmIntError=25 [The product key was not found]

Solution

MtoA includes pit/pitreg for registering Arnold in the PIT file, so you just need to run pitreg on the local machine, like this:

C:\solidangle\mtoadeploy\2017\pit\pitreg.exe
Succesfully added Arnold information to PIT file

Don’t do this:

cd C:\solidangle\mtoadeploy\2017\pit\
pitreg.exe

because you’ll get this error:

Failed to add Arnold information to PIT file (Error 26)

 

[RLM] Communications error with license server (­17)


These warnings mean that Arnold can connect to the RLM license server, but Arnold cannot connect to the solidangle ISV server:

00:00:12 14MB WARNING | [rlm] * Communications error with license server (­17)
00:00:12 14MB WARNING | [rlm] * Connection refused at server (­111)

Usually the problem is that the solidangle ISV server is not running.

You can check the status of the solidangle ISV server with RLM Web Admin. I like the get the RLM diagnostics (Diagnostics > Run Diagnostics) from RLM Web Admin and review that.

In rare cases, the problem is something else, such as:

  • Some sort of network connection problem. For example, I recently had a case where we would get these warnings when we used the IP address of the license server in solidangle_LICENSE. But as soon as we switched to using the hostname, everything worked.
  • Another RLM instance is running and listening to port 5053, and that instance doesn’t have a solidangle ISV running. I heard about this second-hand, from a customer; I didn’t see it with my own eyes and I don’t know how it’s possible. You can have multiple RLM instances running, but each instance has to have a different port otherwise you get ” “Port 5053 in use, waiting…” messages and the second RLM won’t start.

[RLM] Reserving licenses


Reserving licenses is an RLM feature and is documented in the RLM User Guide (see “The ISV Options File” section).

You use the RESERVE keyword in the ISV options file (solidangle.opt) to reserve licenses for specific users, machine names, or IP addresses.

For example, this reserves 2 licenses for machines with the specified IP addresses:

INTERNET_GROUP renderfarm 192.168.221.1 192.168.223.1 
RESERVE 2 arnold group renderfarm 

This reserves five licenses for named users:

GROUP myusergroup steve stephen steven stevie stevo
RESERVE 5 arnold group myusergroup 

You can edit the ISV options in the RLM Web Admin page. You need to restart the ISV server after you change the options. Here’s a short video walkthrough (no audio).

[RLM] No ISV servers to start redux


The technical reason for a “No ISV servers to start” message is that that RLM could not read the ISV line from the license file.

So, for example, if you somehow save the license file as a binary file that looks like this:

books8mk

then you’ll get No ISV servers to start, because obviously there’s no ISV line in that file.

Note: You’ll also see The hostname in the license file(s) may be incorrect, but that warning can always be safely ignored.

05/14 09:17 (rlm) 
05/14 09:17 (rlm) WARNING: No license file for this host (StephenBlair-PC)
05/14 09:17 (rlm)          The hostname in the license file(s)
05/14 09:17 (rlm)          may be incorrect
05/14 09:17 (rlm) 
05/14 09:17 (rlm) License files:
05/14 09:17 (rlm)     arnold_eval_90b11c647d93_20150514.lic
05/14 09:17 (rlm) 
05/14 09:17 (rlm) RLM License Server Version 11.2BL2

	Copyright (C) 2006-2014, Reprise Software, Inc. All rights reserved.

05/14 09:17 (rlm) License server started on StephenBlair-PC
05/14 09:17 (rlm) Server architecture: x64_w2
05/14 09:17 (rlm) License files:
05/14 09:17 (rlm)     arnold_eval_coffee0000_20150514.lic
05/14 09:17 (rlm) 
05/14 09:17 (rlm) Web server starting on port 5054
05/14 09:17 (rlm) Using TCP/IP port 5053
05/14 09:17 (rlm) ... adding UDP/IP port 5053
05/14 09:17 (rlm) (No ISV servers to start)

[RLM] No ISV servers to start


In RLM, an ISV server is a license server for a specific product. For Arnold, the ISV server is solidangle.

isv_servers

So if you see No ISV servers to start in your log:

05/07 15:52 (rlm) RLM License Server Version 11.2BL2

        Copyright (C) 2006-2014, Reprise Software, Inc. All rights reserved.

05/07 15:52 (rlm) License server started on StephenBlair-PC
05/07 15:52 (rlm) Server architecture: x64_w2
05/07 15:52 (rlm) License files:
05/07 15:52 (rlm)     arnold_eval_90b11c647d93_20150428.lic
05/07 15:52 (rlm)
05/07 15:52 (rlm) Web server starting on port 5054
05/07 15:52 (rlm) Using TCP/IP port 5053
05/07 15:52 (rlm) ... adding UDP/IP port 5053
05/07 15:52 (rlm) (No ISV servers to start)

That means there won’t be a solidangle ISV server running, and there won’t be any Arnold licenses available:
no_isv_servers_running

Here’s a couple of licenses that result in No ISV servers to start.

  • This license is missing a line break. The ISV line has to be on a separate line; otherwise RLM won’t recognize the ISV statement and won’t find the ISV server name.
    HOST localhost 0000coffee 5053 ISV solidangle port=66666
    LICENSE solidangle arnold 20161030 28-apr-2015 1 share=h
      min_timeout=120 start=28-apr-2015 issuer=Stephen customer=00340
      issued=28-apr-2015 _ck=fed6ff299c sig="60P0453GDCA9UJKPGJSGAGJK8YWFY
      7M2K3CE5F822H1BS2TYR29EKEUCWGY70B9P1FWCTHJCSV"
    
  • This license is a node-locked license, so there is no ISV line, and you don’t need a license server to use the license.
    LICENSE solidangle arnold 20150430 30-apr-2015 uncounted
      hostid=90b11c647d93 start=03-mar-2015 issuer=Stephen customer=00340
      issued=3-mar-2015 replace _ck=f9d7d6ce9c sig="60PG4512N1FRJ14HSNHACV
      7X25R5KR42PNBWUKR22M09CHC72GE07WRSGKJQJKF54C30FPFKSCG0"
    

    How do I know it is a node-locked license? First, there’s no HOST or ISV lines, and second, it’s uncounted. Only node-locked licenses have the uncounted keyword.