05-10-2015 02:17 PM
Every now and then I've ran into some serious weird behaviour where I've eventually traced it down to some inlined subVI. It has seemed as if the values used inside the inlined subVI don't match what the calling VI is feeding into its inputs. I haven't been able to consistently reproduce this issue so I apologize for the vague description, but since I felt I should finally address this and I couldn't really find anything similar by searching, I'll do my best to describe it and we'll see what turns up.
As I mentioned, the issue certainly doesn't occur consistently. I use inlined subVI here and there and most of the time there are no problems whatsoever. I ran into the issues randomly I think four times now, first three of them were on LV2013 and this last time on LV2014. In all cases I have been using AF and I think the first times were actually with an actor class. At the time I thought it might have been related to the AF, and it still might, but now the last time it wasn't the actor class itself but a data member of one. So far all of the problems have occured with class methods, and I think the "corrupt values" have been the object private data, but I can't confirm this.
This time the inlined subVI was a static dispatch method with contents shown below on the left and the calling on the right.
I'm showing the calling just to point out that when I was investigating the problem and I probed the object wires before and after the inlined subVI the values (Calibration.X Step and Calibration.Y Step) were OK, but the result of the VI (Point out) was some insane value as if the actual division inside was performed by corrupt data. I think that the output value wasn't Inf, though, so the divider might not have been a default value such as 0.
Other notes:
Yep, reading through this post I gotta say I'm not expecting much, what a mess, but it would be great to find out if anyone else has ever ran into similar problems or has a clue what's going here.
05-10-2015 03:24 PM
05-10-2015 03:28 PM
Oh it's just a customized wire appearance, by GOOP maybe, I use both GOOP and the native LVOOP tools a lot. The red thick wire is an object.
05-28-2015 05:05 AM
Hi vekkuli,
Since it's being a while you didn't get an anwser, were you able to find out any solution or can we have an update on the current state ?
In order to better understand your application and have a better view on what could cause this issue, can you please provide us a larger scope of your application ?
Your descriptions is unfortunately not enough to catch this random behaviour.
Thank you.
Lirat MULAJ
Applications Engineer
National Instruments
05-28-2015 08:02 AM
No, I didn't pursue it any further. I changed the VI execution to default as usual. I understand that this description had very little to work on. Perhaps the only hope would've been if anyone else had ever run into similar issues; we could've started looking for some common ground. But if not, I doubt it's worth investigating much more, besides I wouldn't even know where to start. It's a project of hundreds of classes and thousands of VI's, everything works just fine then suddenly I start getting funky results that I ultimately find is caused by one single inlined VI that seems to for some reason use totally different values in it than what's actually wired into it.
05-28-2015 08:07 AM
Just for the sake of your sanity, I've seen "funky" behaviour with inlined VIs also, but on Real-Time targets.
I've never been able to narrow down the exact problem but it seems to be related to changed made to inlined VIs not being reflected in the compiled code od VIs which call them.
I've reported it but without code which can actually reproduce it, it cannot be fixed.
05-28-2015 08:24 AM
Have you tried a force recompile (Ctrl+Run / Ctrl+Shift+Run) on the SubVI/calling VI? Does that fix the issue?
05-28-2015 08:30 AM
For me forcing a recompile on the VI which calls the inlined VI (or almost ANY VI above it in the hierarchy) did the trick and has become standard for me to avoid this problem.
05-28-2015 09:13 AM
I suppose a sort of VI compilation problem might explain the inconsistency of it. I can't remember for sure if I tried recompiling specifically, but I'll make sure to try next time I get it. I'll report back here then. Thank you for the input.