NI TestStand

cancel
Showing results for 
Search instead for 
Did you mean: 

TestStand 2017 Bitness Issue - both Sequence Analyzer and Execute time

Solved!
Go to solution

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

0 Kudos
Message 1 of 5
(2,923 Views)

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,

jigg
CTA, CLA
testeract.com
~Will work for kudos and/or BBQ~
0 Kudos
Message 2 of 5
(2,906 Views)

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. 

0 Kudos
Message 3 of 5
(2,898 Views)

Is there a way to force TestStand to log verbosely to a file, for example?  I'm curious exactly what module it cannot load. 

0 Kudos
Message 4 of 5
(2,897 Views)
Solution
Accepted by topic author ChevyVolt1

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. 

0 Kudos
Message 5 of 5
(2,840 Views)