LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Resetting VI Message???

I have a VI that launches several other VI's (using the .vit trick). Occasionally when I stop the master VI I get a pop-up message that says something like "Resetting VI". At this point LabView hangs for a few minutes(windows won't iconify or move, can't do anything related to LabView).

If I wait long enough LabView will eventually come back, but I'd really like to know what's going on here.

Anybody know what's happening and how I can prevent it?
0 Kudos
Message 1 of 4
(3,541 Views)
Glen,

This is almost certainly the result of a hard program stop. LabVIEW is more than likely resetting processes that you instigated. I have seen this happen with VI server, serial port interfacing, and especially DAQ.

Take a look at your code. Somewhere you have a process going that needs a better way to stop. If you are launching VIs through the server, try using queues or (heaven forbid) globals to stop the loops running on your VIs.

Good luck.
0 Kudos
Message 2 of 4
(3,540 Views)
In article <5065000000080000005B2B0000-999158726000@exchange.ni.com>, Glen
Baker wrote:
> I have a VI that launches several other VI's (using the .vit trick).
> Occasionally when I stop the master VI I get a pop-up message that
> says something like "Resetting VI". At this point
> LabView hangs for a few minutes(windows won't iconify or move, can't
> do anything related to LabView).

The Reset of Death dialog appears when LabVIEW is waiting for all the subVIs
of the top level resetting VI to finish. This can take a while if, for
instance, a DLL being called by via the Call Library Function node is
blocking and not returning to the diagram that called it. If and when it
returns, LV will eventually finish resetting the VI.

> If I wa
it long enough LabView will eventually come back, but I'd
> really like to know what's going on here.

There is a "problem" in LV 5.1 and beyond that is exposed by programs that
open large numbers of references to VIs without closing them. LabVIEW will
automatically clean up these references for you when the VI goes idle (i.e.,
the top level VI stops normally or is aborted). However, this cleanup
mechanism for VI references unexpectedly became an O(n^2) algorithm in LV
5.1 because of some new code invoked during the cleanup to better manage the
usage of memory. For programs that clean up their own references by closing
them after they are no longer needed, the cleanup mechanism is never even
called. For programs that leave open only a few references, the algorithm
never really gets out of hand and the performance degradation when the
program goes idle is not noticeable. For programs that open thousands of
references without closing them, the algorithm iterates millions of times
(1000's
x 1000's) and this takes a noticeable amount of time (possibly
longer than you are willing to wait).

I suggest you look through your code for Open VI Ref calls that are not
balanced with a Close VI Ref call.

Rob Dye
Message 3 of 4
(3,541 Views)
That pretty much explains it....thanks!
0 Kudos
Message 4 of 4
(3,540 Views)