07-24-2019 12:53 PM
Hello all,
I ran Debug -> Analyze Sequence to check the sequence. This sequence is supposed to support both 32 bit and 64 bit TestStand versions that we have. See Code.png for the code in question. I'll quote it here:
If Engine.Is64Bit
<do something for 64 bit TS using a 64 bit DLL>
Else
<do something else for 32 bit TS using a 32 bit DLL>
End
(NOTE: each dll is explicitly named as such -- e.g. Foo-x64.dll, Foo-x86.dll so there's no confusion)
And yet, the Sequence Analyzer says this:
Message : Module for Step 'Foo(X64)' not Loadable. Could not load DLL or external library '<snip snip>'.
The DLL is a 64-bit DLL and thus cannot be loaded by 32-bit TestStand.
File : Foo.seq
Location : Seq["ErrorLogger"].Main["Foo(X64)"].TS.SData
Rule : Code modules must be able to load
Description : TestStand must be able to load all code modules without error. TestStand reports errors at run time when it
cannot load a code module. Correct this problem by editing the step in the sequence editor.
Is this a bug by the Sequence Analyzer or do I need to do something else to remove that error?
Also, when I run this completely in 32-Bit TestStand 2017, I get this error:
Message : Module for Step 'Foo(X64)' not Loadable. Could not load DLL or external library '<snip snip>'.
The DLL is a 64-bit DLL and thus cannot be loaded by 32-bit TestStand.
File : Foo.seq
Location : Seq["ErrorLogger"].Main["Foo(X64)"].TS.SData
Rule : Code modules must be able to load
Description : TestStand must be able to load all code modules without error. TestStand reports errors at run time when it
cannot load a code module. Correct this problem by editing the step in the sequence editor.
Why is 2017 32-Bit TS not heeding Engine.Is64Bit and try to load the 64 bit DLL version?
(when I run this in 64 bit TS 2017, I get a different error not related to this particular code so I'm ignoring 64 bit for this post).
Thanks
Solved! Go to Solution.
07-24-2019 02:05 PM
Each step has a load option associated with it. If you look at the Run Options in the step Properties you will see the Load Option:. By default it is Preload when execution begins. You may want to change that to Load Dynamically.
Regardless of your conditional logic the engine will look at all of your sequences and if that option is set to Preload when execution begins it will load that step's module. In your case both dlls are getting loaded.
Hope this helps,
07-24-2019 02:28 PM
Good tip, but that didn't work. I still got the same unable to load. I'm using a custom environment and that environment's sequence file is clean (from sequence analyzer). I suspect I'm missing something on my end.
07-24-2019 02:29 PM
Is there a way to force TestStand to log verbosely to a file, for example? I'm curious exactly what module it cannot load.
07-31-2019 06:45 PM
Solution: it was indeed the custom environment that was the culprit; the custom environment included several custom results processing options. Some of these custom result processing options were selected when they should not have been selected (at least for this project). If I needed these particular options, I needed to also configure them. This is why hitting F5 failed. These result processing options were not fully configured, and as a result, passed blank values which caused TestStand to fail with an unloaded module error.