LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

finding insane objects

Solved!
Go to solution

I am working on a large VI (1.3 MB) with a large number of SubVIs and external C dlls (LabVIEW 2018 64 bit). Whenever I close it, I get a notification about internal warnings.

Depending on circumstances beyond my understanding I get a subset of a number of warnings:

 

1)

Insane object at BDHP+7C8E7098, UID 28839, in "NetworksModule.vi": {graphics } (0x80): Loop Tunnel (DCO )
Insane object at BDHP+7BE08EB0, UID 10578, in "NetworksModule.vi": {graphics } (0x80): Sequence Tunnel (DCO )

 

2)

DWarnInternal 0xB3AFF8FD: No bmHan allocated in IntensityPlot Render
e:\builds\penguin\labview\branches\2018patch\dev\source\panel\gtoanalog.cpp(1726) : DWarnInternal 0xB3AFF8FD: No bmHan allocated in IntensityPlot Render

 

3)

Possible path leak, unable to purge elements of base #0

 

Most of the program continues running unimpaired, but it also happens to crash sometimes. I suspect some of these nonfatal insanities become fatal then.

I know about the heap peek window and can get it running - but once the labview session is closed, the object addresses change. For example in 1), after I close labview and i get the warning and the lvlog file, if I restart the vi and look into the heap brower, I can not find an object with ID "7C8E7098" on the block diagram. No numbers are similar to it.

Is there a way to create the lvlog file before I shut down labview? I read that saving will trigger the inspection for insane objects, but it doesn't create the log file. With the file I hope I could identify the offending objects.

 

Also is there anything I can do about "No bmHan allocated in IntensityPlot Render" ? I didn't find anything on this using google.

0 Kudos
Message 1 of 9
(4,312 Views)

You should be able to find the objects using the "UID" with VI scripting.  If you turn it on (in the Tools->options menu under "VI server") and then load your VI by reference, you can use the "Traverse for GObjects" VI from the scripting palette to search for literally everything on your block diagram by putting in "GObject" as the class type string and "BD" for the target.  Just iterate through the object array to find a match.  Then you'll have a reference to it and can get its coordinates, parent object, etc.

 

Find UID.png

Message 2 of 9
(4,276 Views)

Darren posted a nugget a while ago which linked to a few good references on how to find and correct insane objects.

 

https://forums.ni.com/t5/LabVIEW/Darren-s-Weekly-Nugget-03-08-2010/td-p/1086373

Matt J | National Instruments | CLA
0 Kudos
Message 3 of 9
(4,269 Views)

I got your suggestion to work. For future reference, this link proved useful to get VI scripting to work:

http://zone.ni.com/reference/en-XX/help/371361P-01/lvhowto/enabling_vi_scripting/

 

The problem that remains is that even though I have the position, say (-5180,-3221), of the offending object, I don't know where this position is on my block diagram. Is there a way to display the current coordinates of my cursor or move block diagram to that position or highlight/select the insane object programmatically?

0 Kudos
Message 4 of 9
(4,241 Views)

Once you have the reference to your object, you can use an invoke node and call the "objHighlight" function, then LabVIEW should take you straight to it.



Remember Cunningham's Law
0 Kudos
Message 5 of 9
(4,235 Views)
Solution
Accepted by topic author labjan

When selecting a BDHP in the heap peak, press the UO button in the vertical middle on the right. IIRC, That will switch between those long numbers and the UID's. Those long numbers are probably memory addresses (or pointers to (or pointers to)) memory addresses. So those will change. The UIDs won't.

 

EDIT: After clicking the UO button, the first number is the decimal UID. Select it, then press the F button to highlight it.

Message 6 of 9
(4,233 Views)

@wiebe: This worked immediately. Too bad the ou button functionality is not described here: https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000P9QYSA0

 

0 Kudos
Message 7 of 9
(4,196 Views)

@PeterFoerster: I added the objHighlight invoke node into the insane object finder vi, but upon execution I was not brought to the offending object.

0 Kudos
Message 8 of 9
(4,193 Views)

@labjan wrote:

@wiebe: This worked immediately. Too bad the ou button functionality is not described here: https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000P9QYSA0

 


Good point, will let NI know (EDIT: unless they're still reading this?).

0 Kudos
Message 9 of 9
(4,185 Views)