error: (44) Product key not found


If you get this error, it means that Arnold is not registered in the Autodesk product information file.

With Arnold 5.3 and later, you use the AdskLicensingInstHelper tool (all Autodesk software now uses AdskLicensingInstHelper). The pitreg utility was removed in Arnold 5.3

Note AdskLicensingInstHelper requires that the Autodesk Licensing Service is installed and running on the machine.

For example:

sudo /opt/Autodesk/AdskLicensing/Current/helper/AdskLicensingInstHelper register --pk C0PL1 --pv 2020.0.0.F --lm NETWORK -cf /opt/Autodesk/arnold/maya2019-4.2.0/license/ArnoldConfig.pit

or

"C:\Program Files (x86)\Common Files\Autodesk Shared\AdskLicensing\Current\helper\AdskLicensingInstHelper.exe" register --pk C0PN1 --pv 2022.0.0.F --lm NETWORK --cf "C:\Program Files\Autodesk\Arnold\maya2022-5.0.0.2\license\ArnoldConfig.pit"

In addition to registering Arnold in the global ProductInformation.pit file used by all Autodesk products, AdskLicensingInstHelper also registers Arnold with the Autodesk licensing service (that’s for single-user licensing).

The ProductInformation.pit file is located here:

  • /var/opt/Autodesk/Adlm/.config/ProductInformation.pit
  • C:\ProgramData\Autodesk\Adlm\ProductInformation.pit
  • /Library/Application Support/Autodesk/Adlm/.config/ProductInformation.pit

Here’s the help for the register command:

C:\Users\blairs>"C:\Program Files (x86)\Common Files\Autodesk Shared\AdskLicensing\Current\helper\AdskLicensingInstHelper.exe" -help register
NAME:
   AdskLicensingInstHelper - Manage products registration with Autodesk Licensing

USAGE:
   AdskLicensingInstHelper.exe [global options] command [command options] [arguments...]

VERSION:
   2.11.0.666

COMMANDS:
     register    Register product with the licensing components. Requires admin rights
     deregister  Deregister product from the licensing components. Requires admin rights
     list        List all products registered with licensing components
     change      Change registered product
     help, h     Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --verbose, -d  [O] Output verbose log
   --help, -h     show help
   --version, -v  print the version

signal caught: error C0000005 — access violation


People often ask me why they get this error…

Unfortunately, there’s no one answer. This is a totally generic error message, and it could be anything. Typically, it’s a bug somewhere. But where?

You could try to manually isolate it…is it shaders? textures? displacement? some object in the scene?

Ideally, you’ll be able to submit a Crash Error Report (CER). That would let us see where the crash actually happened.

Crash Error Report

The backtrace in an Arnold log won’t tell you, because we hide all the symbols in the shipping Arnold. So every backtrace comes out with things like Ordinal0 or AiLightsPrepare or AiADPDialogStrings, because those just happens to be the nearest unhidden symbols.

If you had a linux backtrace, we could symbolicate that on our end to see where the crash is happening. But on Window, it’s not so easy.

****
* Arnold 7.0.0.1 [5e3b4fd3] windows clang-10.0.1 oiio-2.3.2 osl-1.12.0 vdb-7.1.1 clm-2.0.0.235 rlm-14.1.3 optix-6.6.0 2021/11/18 13:08:38
* CRASHED in Ordinal0 at 00:00:00, pixel (946, 377)
* signal caught: error C0000005 -- access violation
*
* backtrace:
>> 0 0x00007ffb083cc387 [ai      ] Ordinal0
*  1 0x00007ffb08a24b56 [ai      ]
*  2 0x00007ffb0891cd0c [ai      ]
*  3 0x00007ffb087eaa92 [ai      ] AiLightsPrepare
*  4 0x00007ffb088ce771 [ai      ]
*  5 0x00007ffb088d4ef6 [ai      ]
*  6 0x00007ffb0870b67a [ai      ] Ordinal0
*  7 0x00007ffb09244186 [ai      ] AiADPSendPayload
*  8 0x00007ffb09243da3 [ai      ] AiADPSendPayload
*  9 0x00007ffb08db0a54 [ai      ] AiADPSendPayload
* 10 0x00007ffb09245414 [ai      ] AiADPSendPayload
* 11 0x00007ffb0989a74c [ai      ] AiADPSendPayload
* 12 0x00007ffb0989a8ed [ai      ] AiADPSendPayload
* 13 0x00007ffbd77c1bb2 [ucrtbase] configthreadlocale
* 14 0x00007ffbd8807034 [KERNEL32] BaseThreadInitThunk
* 15 0x00007ffbd9d22651 [ntdll   ] RtlUserThreadStart

Failed to register Arnold product


When you click Register in the Arnold License Manager, it runs the Autodesk tool AdskLicensingInstHelper. All Autodesk products use this tool to register themselves with Autodesk licensing.

Check the License Manager log

If you get Failed to register Arnold product, check the Arnold License Manager log.

On macOS:

  1. Open the Arnold License Manager.
  2. In the menu bar, click Arnold License Manager > About Arnold License Manager.
  3. In the About dialog box, click Show Log.
  4. Click Copy to copy the log, and send it to Autodesk licensing support.

On Windows:

  1. In the Arnold License Manager, click Help > About.
  2. Click Copy to copy the log.

If you want to try and troubleshoot the problem yourself, find the line that runs the AdskLicensingInstHelper register command. It will look something like this:

2021-11-08 11:13:10 DEBUG | [clmv2] run: "/Library/Application Support/Autodesk/AdskLicensing/Current/helper/AdskLicensingInstHelper" register --prod_key C0PL1 --prod_ver 2020.0.0.F --config_file /Applications/Autodesk/Arnold/mtoa/2022/license/pit/ArnoldConfig.pit --lic_method USER --eula_locale en_US

Under that line, there will be some log messages describing why the command failed.

Reinstall the licensing

In some cases, a complete uninstall and then re-install of “single-user licensing” can fix the problem.

In a Terminal, run these commands:

   cd ~/Autodesk/LicensingInstaller
   sudo ./uninstall.sh

sudo will ask you to type your password. Press ENTER after you finish typing.

Then start the Arnold License Manager and switch to Single-user licensing. The license manager will ask if you want to install single-user licensing.

ERROR: out-of-range shader index


If you see this error in your Arnold log, it most likely means that you have more than 256 per-face shaders. Arnold has a hard limit of 256 shaders that can be assigned to a single object.

[polymesh] /pPlane1/pPlaneShape1: out-of-range shader index (5/3)

You may also see this warning if you have a large number of objects merged into one single object (for example, an Alembic archive that consists of many objects). In some cases, an Alembic archive like that may have more than 256 shaders assigned to the sub-objects.

ERROR | [aov] more than one output statement was associated with single layer driver: defaultArnoldDriver@driver_png.RGBA


This error means that you are trying to render multiple AOVs into a single file, and the file format (PNG in this example) does not support that.

JPEG, PNG, and TIFF cannot have multiple AOVs in a single file. The AOVs have to be rendered in separate files.

If you get this error, check the Common tab. If you don’t see the <RenderPass> token, then you’re going to get the “more than one output statement was associated with single layer driver” error.

For JPEG, PNG, and TIFF, you need the <RenderPass> token:

Normally, MtoA will automatically add the <RenderPass> token for you. But sometimes Merge AOVs gets enabled for EXRs, and then the Image format is changed to another format, like PNG.

So just switch back to EXR and disable Merge AOVs. Then switch back to the other image format.

[MtoA] Error: defaultArnold Driver can’t create file


You’ll get an error like this if your project path has characters like é or ü or Ô in it.

// Error: [driver_exr] defaultArnoldDriver@driver_exr.RGBA: can't create file ".exr": OpenEXR exception: Permission denied. //

// Error: [driver_jpeg] defaultArnoldDriver@driver_jpeg.RGBA: can't create file ".jpg": Unable to open file ".jpg”

// Error: [driver_png] defaultArnoldDriver@driver_png.RGBA: can't create file ".png": Could not open file ".png"

Arnold can’t create the output file, because the special characters mess up the resolution of the output path, which ends up as an empty string.

So with no path provided, the ouput driver tries to write “.jpg” in the current working directory, which is probably something like C:\Program Files\Autodesk\Maya2018.

Use plain text characters for your project folders.

 

compiled against non-compatible Arnold


If you see something like this:

[Arnold]: MAXtoA_Shaders.dll was compiled against non-compatible Arnold 5.0.2.1

it usually means you have an older Arnold trying to load something compiled with  a newer Arnold. There’s two common reasons for this happening:

  • The system PATH includes the location of the older Arnold, so the older Arnold is loaded instead of the Arnold version included with the plugin.
  • The plugin install is messed up, and has the wrong Arnold version in it.

 

[mtoa] Register failed for arnoldAOVChildSelector


If you see this error in the script editor

# Error: Register failed for arnoldAOVChildSelector #

that means your preferred render layer setup is Legacy Render Layers (so MtoA fails to register something that’s used for the new Render Setup).

If you’re not using Render Setup, then you can safely ignore this error.

 

[MtoA] UnicodeEncodeError when rendering


UnicodeDecodeError

If you get this UnicodeEncodeError when you render

# Error: line 1: UnicodeEncodeError: file C:\Program Files\Autodesk\Maya2016\bin\python27.zip\encodings\utf_8.py line 16: ascii #

it’s probably because because the project folder has a special character in the name (for example, an accent mark like é).

If that’s not it, then we’d need more context (hint: everything else that is logged in the script history).

For a project name with a special character, you’ll see something like this in the script history:

file -f -save -options "v=0;";
// C:/maya/projects/New_Projéct/scenes/blank.mb // 
# Error: line 1: UnicodeEncodeError: file D:\Program Files\Autodesk\Maya2017\bin\python27.zip\encodings\utf_8.py line 16: ascii # 
# Error: line 1: UnicodeEncodeError: file D:\Program Files\Autodesk\Maya2017\bin\python27.zip\encodings\utf_8.py line 16: ascii #

 

 

Vertices and the maximum valence limit


The valence of a vertex is the number of edges connected to that vertex. In Arnold, the maximum valence is 255 (that’s because of the data type we use to store the valence; we minimize the memory requirements since this is stored per-vertex).

If a mesh in the scene has a vertex with more than 255 edges, you’ll get a WARNING like this:

 [polymesh] example_mesh: mesh has at least a vertex with valence higher than 255, disabling subdivision

But if the adaptive subdivision results in a vertex with too many edges, you’ll get an ERROR:

 ERROR: [arnold] [subdiv] example_mesh: edge (144578,287741) in face 263433 has a vertex that exceeded the max valence limit of 255