With a little help from Process Monitor, I figure out Composite licensing…
Tag Archives: Composite
The case of the fatal missing registry key
Otherwise known as the case where composite.exe cannot determine a product license to use:
The last time I saw this error, it turned out to be a problem with the ProductInformation.pit file. However, this time it turned out to literally what the error message says: Composite couldn’t figure out what license to use. The tricky part was figuring out why.
First we tried a couple of configuration “tricks”, but those didn’t help in this case.
- Set the ADSK_COMPOSITE_LICENSE environment variable to SOFTIMAGE (or MAYA if you have Maya, or 3DSMAX if you have Max).
- Add these lines to toxik.ini (which doesn’t exist by default, so you may have to create the file
%USERPROFILE%\Documents\toxik\2013\toxik.ini with your favorite text editor).toxik::deployment::licenseType Standalone toxik::deployment::softimagelocation C:\Program Files\Autodesk\Softimage 2013
Note that alternatively, instead of setting toxik::deployment::softimagelocation in the INI file, you could set the environment variable SI_HOME.
And unfortunately, Composite wasn’t logging any license-related information or errors.
Fortunately I’m the curious type, so I’d been using Process Monitor to see what composite.exe was doing at startup, and I had a pretty good hunch what was wrong. And when I got a Process Monitor log from the customer, it only took a minute to spot the problem: a missing registry key.
When ADSK_COMPOSITE_LICENSE is set to SOFTIMAGE, composite.exe uses the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\Softimage\InstallPaths\2013 to find Softimage. The customer’s machine was missing that registry key, so composite.exe couldn’t find Softimage and therefore couldn’t figure out what license to use.
Why was the registry key missing? I don’t know.
The case of the missing entry point
In this case, a Softimage user running Composite 2013 was getting the following error when he started Composite:
--------------------------- composite.exe - Entry Point Not Found --------------------------- The procedure entry point ?Initialize@CMLFacade@@SAXPEAVCMLWaypoint@@PEB_W11HI_J2_N1@Z could not be located in the dynamic link library MC3.dll. --------------------------- OK ---------------------------
The short story is that 3ds Max 2010 was causing this problem with Composite 2013. Here’s the long story…
A “procedure entry point” is basically a function (or method) defined in the DLL. In this case, Composite is trying to call a certain Initialize function in MC3.dll, but that Initialize function isn’t there.
More specifically, Composite is trying to call the Initialize member function of a CMLFacade object. All the other stuff (@@SAXPEAVCMLWaypoint@@PEB_W11HI_J2_N1@Z) that you see in the error message is part of the decorated name generated by the C++ compiler. Different versions of a DLL will have different decorated names for entry points, so it’s reasonable to assume that this error probably means that Composite is loading the wrong version of MC3.dll.
Using Dependency Walker, I verified that the MC3.DLL that ships with Composite 2013 does not include the entry point specified in the error message. You can see that the 2013 version of MC3.dll has a different entry point name for Initialize:
However, I got a Process Monitor log from the customer, and it showed that Composite 2013 was loading right version of MC3.dll.
So, right DLL but wrong entry point. Using Dependency Walker again on older versions of MC3.dll, I found that the Composite was looking for an entry point that was in an older version of MC3.dll. But why???
I spent an hour or two looking over the Process Monitor logs, but everything looked normal…except for one thing: Composite 2013 was loading lots of 3ds Max 2010 files. So I renamed the 3ds Max install folder (so Composite wouldn’t find it) and the entry point error went away. My guess is that one of those older Max DLLs was bringing in a reference to the old MC3 entry point, and that was what was causing the problem in Composite.
Renaming the 3ds Max 2010 install folder just to run Composite is pretty hacky, so I tried to find another way. The best I came up with was this:
- In the registry editor, find the key HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\UPI
- Under that key, there is a value for 3ds Max 2010. This value holds the install path for 3ds Max 2010. Edit the value and change it, for example, like this:
Value Name: C:\Program Files\Autodesk\3ds Max 2010\UPI\upiconfig.xml Value Data: C:\Program Files\Autodesk\3ds Max 2010xxx\UPI\UPI.dll
After I did that, I didn’t get the entry point error in Composite, and 3ds Max 2010 still ran ok (well, it started ok, I didn’t really exercise Max after that).
Adventures with Composite 2013
My version of Composite 2013 never did start. It always gave me a Runtime Error at startup:
So I removed it and installed Composite 2013 SP1. That version silently failed: in fact, I wasn’t sure it was even running until I used Process Monitor to watch composite.exe. Process Monitor showed me that Composite was writing log files in %LOCALAPPDATA%\Temp\toxik\logs, and I found this in the stdout.log:
Exception encountered: Cannot determine a product license to use.
This suggested to me that I needed to set the environment variable ADSK_COMPOSITE_LICENSE to Softimage, and that did the trick (when I checked, that environment variable was set to 3DSMAXDESIGN, and that’s why Composite was silently failing).
As a bonus, I also found the Composite Licensing log file %LOCALAPPDATA%\Temp\toxik\adlm.Composite.2013.log. The log entries make me think that my Runtime Error was caused by a Product Information (PIT) file problem. That’s why installing Composite 2013 SP1 fixed the problem.
584 2012/07/06 11:19:44 Reason=Fatal error 584 2012/07/06 11:19:44 ComputerName=MTL2UA0150CWY 584 2012/07/06 11:19:44 OS=6.1.7600. 584 2012/07/06 11:19:44 File=AdlmIntLicense.cpp,Line=584 584 2012/07/06 11:19:44 VendorID=6 [ADLMPIT] 584 2012/07/06 11:19:44 VendorError=12 [The root information in Product Information Table XML file is missing] 584 2012/07/06 11:19:44 Reason=Fatal error 584 2012/07/06 11:19:44 ComputerName=MTL2UA0150CWY 584 2012/07/06 11:19:44 OS=6.1.7600. 584 2012/07/06 11:19:44 File=AdlmIntLicense.cpp,Line=585 584 2012/07/06 11:19:44 AdlmIntError=25 [The product key was not found] 9448 2012/07/06 11:23:17 Reason=Fatal error 9448 2012/07/06 11:23:17 ComputerName=MTL2UA0150CWY 9448 2012/07/06 11:23:17 OS=6.1.7600. 9448 2012/07/06 11:23:17 File=AdlmIntLicense.cpp,Line=584 9448 2012/07/06 11:23:17 VendorID=6 [ADLMPIT] 9448 2012/07/06 11:23:17 VendorError=12 [The root information in Product Information Table XML file is missing] 9448 2012/07/06 11:23:18 Reason=Fatal error 9448 2012/07/06 11:23:18 ComputerName=MTL2UA0150CWY 9448 2012/07/06 11:23:18 OS=6.1.7600. 9448 2012/07/06 11:23:18 File=AdlmIntLicense.cpp,Line=585 9448 2012/07/06 11:23:18 AdlmIntError=25 [The product key was not found] 13860 2012/07/10 16:03:29 Reason=Fatal error 13860 2012/07/10 16:03:29 ComputerName=MTL2UA0150CWY 13860 2012/07/10 16:03:29 OS=6.1.7600. 13860 2012/07/10 16:03:29 File=AdlmIntLicense.cpp,Line=584 13860 2012/07/10 16:03:29 VendorID=6 [ADLMPIT] 13860 2012/07/10 16:03:29 VendorError=12 [The root information in Product Information Table XML file is missing] 13860 2012/07/10 16:03:29 Reason=Fatal error 13860 2012/07/10 16:03:29 ComputerName=MTL2UA0150CWY 13860 2012/07/10 16:03:29 OS=6.1.7600. 13860 2012/07/10 16:03:29 File=AdlmIntLicense.cpp,Line=585 13860 2012/07/10 16:03:29 AdlmIntError=25 [The product key was not found] 8368 2012/07/17 09:50:58 Reason=Fatal error 8368 2012/07/17 09:50:58 ComputerName=MTL2UA0150CWY 8368 2012/07/17 09:50:58 OS=6.1.7600. 8368 2012/07/17 09:50:58 File=AdlmIntLicense.cpp,Line=584 8368 2012/07/17 09:50:58 VendorID=6 [ADLMPIT] 8368 2012/07/17 09:50:58 VendorError=12 [The root information in Product Information Table XML file is missing] 8368 2012/07/17 09:50:58 Reason=Fatal error 8368 2012/07/17 09:50:58 ComputerName=MTL2UA0150CWY 8368 2012/07/17 09:50:58 OS=6.1.7600. 8368 2012/07/17 09:50:58 File=AdlmIntLicense.cpp,Line=585 8368 2012/07/17 09:50:58 AdlmIntError=25 [The product key was not found]