09-26-2018 03:31 PM
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.
Solved! Go to Solution.
09-26-2018 07:23 PM
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.
09-26-2018 09:15 PM
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
09-27-2018 04:52 AM
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?
09-27-2018 06:37 AM
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.
09-27-2018 06:53 AM - edited 09-27-2018 07:00 AM
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.
09-28-2018 03:27 AM
@wiebe: This worked immediately. Too bad the ou button functionality is not described here: https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000P9QYSA0
09-28-2018 03:31 AM
@PeterFoerster: I added the objHighlight invoke node into the insane object finder vi, but upon execution I was not brought to the offending object.
09-28-2018 04:37 AM - edited 09-28-2018 04:39 AM
@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?).