LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Objheap.cpp error in 6.0.2

I've spent several months writing this program. Last Friday LabVIEW crashed while I was changing a complex typedef. Now when I try to open the main vi I get this error:

Failure : "objheap.cpp", line 733
LabVIEW version 6.0.2

I can open and edit all vis and controls in the project except the main vi. Going back to an earlier version of the vi doesn't help. I'm at a loss as to how to fix this. Do I need to try to rebuild this VI? Will reinstalling LabVIEW help? Any ideas are appreciated.

Thanks,
Kelly
0 Kudos
Message 1 of 3
(3,140 Views)
Hello KBersch,

Your VI is probably suffering from the fact that LabVIEW 6.0.2 places a size constraint on the amount of information that can be used to describe the data types of a VI's inputs and outputs, a.k.a. the VI's type descriptor. A type descriptor is an unsigned 16-bit integer that says something like "data associated with me is a 32-bit unsigned integer." In addition to the unsigned 16-bit integer type descriptor of a VI, LabVIEW uses a signed 16-bit integer as a type descriptor of the connector pane, and it is this type descriptor that generally will overflow first. Type descriptors are associated with every piece of data in LabVIEW. A VI's type descriptor includes the data types and names of inputs and outputs of a VI. As the number of front panel objects grows and as data types on the front panel become more complicated, the VI's type descriptor consumes a larger percentage of the memory allocated to store this information. Thus it becomes increasingly more dangerous to add more front panel objects, making the VI's type descriptor larger and more complicated. Eventually, the type descriptor will reach an upper limit, where the amount of memory allocated to store the VI's type descriptor is insufficient for an extremely complicated VI.

The workaround is to first target the memory hogs that consume a majority of unsigned 16-bit integer that is allocated for your VI's type descriptor. To reduce memory usage, you can try making a copy of any strictly typed VIs (the VIs whose refnums appear on the front panel of your main VI). Then open these copies and DELETE the names of every control and indicator on the front panel such that each element on the front panel has a label, but the label is EMPTY. Now go back your main VI, right-click on the VI refnums, and browse to the copies that were modified. The functionality of the VI refnums will remain unchanged, but your main VI's type descriptor will be significantly reduced in size. Furthermore, the type descriptor of any VI that uses the same cluster should now be reduced because the changes made to the VI refnums within the cluster will propagate accordingly.

This issue has been resolved in LabVIEW 6.1. You may want to look into upgrading to LabVIEW 7.1, our latest version.

If none of these suggestions help, or if I�m not correctly understanding your issue, please reply with comments or answers to the discussion above and any additional information that may help, and I�ll be happy to look further into it.

Have a nice day!

Robert Mortensen
Applications Engineer
National Instruments
Robert Mortensen
Software Engineer
National Instruments
Message 2 of 3
(3,140 Views)
Actually, Robert, this was exactly the information I needed. I now understand what the problems are and can work around them. I can also add more amunition to my case for upgrading to the latest version of LabVIEW. Thanks.

Kelly
0 Kudos
Message 3 of 3
(3,140 Views)