AWS Thinkbox Discussion Forums

no execute function for undefined

hello

we are about to upgrade from DL7 to DL10 now. I wrote a custom submitter that worked fine with DL7 but every task throws an error on the farm now with DL10 saying “no execute function for undefined”… so i think something was not defined/declared correctly… the funny thing is, that if I open the default Deadline Submitter before and Submit a job from there it works also with my custom submitter afterwards. If I open the default Max2DL submitter after those two successful submissions however, this native one crashes then with a super long error message.

>> MAXScript MacroScript Error Exception: -- Unknown property: "InitializeSubmitInfo" in #Struct:SMTDFunctions( getSettingsListAsTree:<fn>; Public, CollectSlaves:<fn>; Public, CollectSlavesInfo:<fn>; Public, ....

listing all the functions.

So if everything works after a native submission, some default submisson code has changed and this tutorial here is not valid anymore, right?
deadline.thinkboxsoftware.com/c … ubmission/

I guess I am just lagging a declaration in my code. but as the native submitter code is crazy long I wanted to ask here for help first. I hope someone can help.

The function SMTDFunctions.InitializeSubmitInfo() is new in Deadline 10. If you loaded your older SubmitMaxToDeadline_Functions.ms file from DL7 as part of your custom submitter, and then tried to launch a DL10 submission without re-loading the SubmitMaxToDeadline_Functions.ms file, then the SMTD UI and/or submission code of Deadline 10 will fail with that error.

Normally, the SMTD UI is opened using a launcher script that we install in the Deadline menu (or you could put on a toolbar by dragging from the “Deadline” category.) This launcher script copied over and re-runs all scripts for the current version of Deadline, so in theory if you opened SMTD as you are supposed to, the error should never occur.

The tutorial you mentioned does NOT enforce the Version via the Environment variable, as it was written to cover ALL versions of Deadline since 5 or 6 or so. You are right that it might need updating to allow the peaceful co-existence of two or more Deadline versions. You still need to make sure the current version is specified in the DEADLINE_PATH environment variable for this to work.

The tutorial says

global SMTDSettings
global SMTDFunctions

local theResultFile = getDir #temp + "\\_result.txt"
local theCommandLine = ("deadlinecommand.exe -getrepositoryroot > \""+theResultFile +"\"")
hiddenDosCommand theCommandLine startpath:"c:\\"
local theFileHandle = openFile theResultFile
local theNetworkRoot= readLine theFileHandle
close theFileHandle

As you can see, we call deadlinecommand.exe without specifying an explicit path to the Bin folder of Deadline. Thus, the ORDER in which the Deadline paths are listed in the PATH environment variable will affect WHICH ONE is run, and I bet that it ends up running Deadline 7’s deadlinecommand.exe (assuming both 7 and 10 are installed in the machine). If only one version of Deadline were installed, that code would still work as before and run the only deadlinecommand.exe available.

I will look into fixing the tutorial to check the DEADLINE_PATH env. variable when loading the functions script file.

Thanks a lot Bobo.

There was an error loading the SubmitMaxToDeadline_Functions.ms file in my code because of the update just as you said. now my submitter and the native one can be opend parallel without causing errors. However an even more important problem is still there (that I hoped is just the same after all, but it’s not). If I submit a job with our custom DL submitter, every task still throws this “no execute function for undefined” error. the same scene renders fine when submitted with the native DL submitter. I checked every possible custom startup script (where I could have manually loaded the wrong DL startup functions) but I could not find one and this would not even make sense, as they would be executed even with the normal DL submition. So something is still off. did something else change during the versions?

Can you please email me ( bobo AT amazon DOT com) the full slave log of one of these failing jobs?
The message is a standard MAXScript function error where execute() is being called on a variable supposed to contain a string in order to convert it to a MAXScript value, and the variable turns out to contain ‘undefined’. I want to see if it is possible to determine in what part of the log the problem occurs, as it could be during the running of customize.ms itself, in a custom script, or even in the 3dsmax.py plugin (which does some MAXScript tricks here and there).

So seeing the actual log (not just the error log, but the whole log from start to crash) would be very helpful. Thanks!

Between Deadline 7 and 10? TONS of things changed :slight_smile:

thank you very much for your time. I just sent you a mail.

regarding the execute command: I think It is not caused by any of my scripts that is in our global startup, and it was no issue back with DL7.

It is happening in customize.ms, just like I assumed. However, I am totally surprised it is occurring, because the function where it happens has code explicitly designed to handle ‘undefined’ values, at least in the last few updates of Deadline.

  • Can you please confirm the exact version of Deadline 10 installed in your Repository that is causing this error?
  • Then, you can navigate to the Deadline 10 Repository folder, go into the Plugins folder and then 3dsMax subfolder.
  • Locate customize.ms and open for editing in the MAXScript Editor. Search for the line
fn setCurrentRendererSetting options_array  =
  • If the function looks like the one I pasted below, you can edit its code to print the name of the property and the value being processed (if it does not look like it, you are running an older build of Deadline 10):
	fn setCurrentRendererSetting options_array  = 
	(
		for p in options_array do
		(
			param = p[1]
			convertParam = p[2]
			prettyParam = p[3]
			
			local theVal = DeadlineUtil.GetJobInfoEntry ( getRendererIdString()  + "_" + param)
			DeadlineUtil.LogMessage ("  > Trying to set " + param as string + " to " + theVal as string ) --> NEW LINE
			
			if theVal != undefined do
			(
				convertedVal = theVal
				if convertParam then
				(
					convertedVal = execute convertedVal
				)
				else
				(
					if convertedVal == "undefined" do
						convertedVal = ""
				)
				
				if try(convertedVal != (getProperty renderers.current (param as name)))catch(false) do
				(
					try
					(
						setProperty renderers.current (param as name) convertedVal
						DeadlineUtil.LogMessage ("  +" + prettyParam + " set to " + theVal )
					)
					catch
					(
						DeadlineUtil.WarnMessage ("  --Failed to set " + prettyParam + " to " + theVal ) 
					)
				)
			)
		)			
	)	
  • Save the modified script and requeue the failing job.
  • Look at the log and you should be able to discover which property of Corona is causing the crash.

What we know for sure is that is it one of the Corona properties that we have flagged to convert a value to a numeric value via execute(). There are hundreds of them, and the log shows that only 5 of them are being set before the crash occurs.

Once you know the name of the property that is causing the issue, you could locate its definition inside the options_array for Corona inside the same script file, and remark that property so it won’t be handled by customize.ms. Then rinse and repeat, as there could be several that are causing the same issue…

Note that the first version of Deadline 10 to officially support Corona 1.7 was 10.0.10. If you are running an older build, you will have to update. If you are on a later build of Deadline 10, please let us know which properties were the cause.

Hello. It is getting late here in Germany.

We are running Deadline 10.0.8.3 Release (15e43b383). so I think you are very right. We need to update soon and see if the Error is still there. I tested this Deadline version only with pre 1.7 Builds of corona. I hope there is an easy way to update all the machines and the repository to the latest Version. We never did a small update so far, just this one from 7 to 10 and this required a whole new repository and all.

Anyway thanks for your fantastic help Bobo. Once We upgraded to the latest DL version I will test again and If (lets hope not) this error is still present, I will modify the script as you said to figure out what Property it is.

I am pretty sure an update to the latest build will fix this. I added that code to prevent exactly this behavior which was reported a few months ago by another customer.

To update all machines, all you need to do is reinstall the Deadline 10.0.12 (or whatever is current at the time) OVER your Deadline 10.0.8 Repository - this will take care of the scripts and plugins.
To update the Client software on render machines and Workstations, you enable the Auto Upgrade option in the Repository Settings. When the Slave starts, it will check its own version against the Repository’s, and automatically install the right package to keep in sync. (The feature is turned OFF by default!)
You can find more info here:
deadline.thinkboxsoftware.com/f … to-upgrade
docs.thinkboxsoftware.com/produ … downgrades

You are the best!

I updated our repository to 10.0.12.1. auto update turned on. DL10 clients updating nicely by themselves. with the fix in my custom DL submitter it detects DL Version and loads in the correct SMTDFunctions. now old DL7 still works untill all of our Computers are updated and DL10 also works and renders without any script errors with Corona 1.7!

Thanks for all your brilliant help!

Privacy | Site terms | Cookie preferences