01-28-2010 04:44 PM
I wanted to let everyone know that NI has released an udpated CVI 2009 Run-Time Engine. Information on what bug(s) this update fixes can be found here. If you are currently not using the CVI 2009 Run-Time Engine, you do not need to install this update.
This is an updated installation of the CVI Run-Time Engine, not a patch. If you download and install this update it will upgrade whichever version of the CVI Run-Time Engine you currently have to version 9.1.0.428 (CVI 2009 released with version 9.1.0.427). One way to find out which version of the CVI Run-Time Engine you have installed is to view the version number of c:\windows\system32\cvirte.dll. If you install version 9.1.0.428, any installer distributions that you create from any version of the CVI ADE will include version 9.1.0.428.
If you have not yet installed LabWindows/CVI 2009, it's recommended that you install this update, either before or after you install CVI 2009.
Luis
02-02-2010 08:44 AM
02-02-2010 12:26 PM
Hi Todd,
We've been able to reproduce your problem and it doesn't seem to be related to the graph plot problem in CVI 2009 that you had reported earlier, and which was fixed by this patch.
This seems to be a different issue, that's been around a while, since I've been able to reproduce it going back to CVI 7.1.
This is going to require some more in-depth investigation, so give me a couple of days to look into it. I'll post back when I have some more info.
Luis
02-02-2010 12:54 PM
02-02-2010 03:12 PM
To be clear, the original problem that you reported ("Attempt to free pointer to memory not allocated by malloc() or calloc()") might very have been the problem that this patch fixed, which was in fact new to 2009. But that problem only happens if there were actual plots in the graph.
However, after looking at the "dynamic memory is corrupt" isse some more, it turns out that it is actually expected behavior, believe it or not. This is a limitation of easytab controls, caused by how they use callback chaining in their implementation. Whenever a panel or a control has its callback chained, you cannot change the callback, or make a copy of it after the chaining takes place. This is described in the EasyTab_ConvertFromCanvas function help ("...For the same reasons, do not call DuplicatePanel or DuplicateCtrl on any of these panels or controls after the Easy Tab control has been created.").
As you probably have read elsewhere, easytab controls are quite obsolete. They were a stopgap "solution" to the problem of there not being a native tab control in the CVI user interface library. Native tab controls were finally added in CVI 8.0, and so we recommend that, if possible, users update their code to use these instead.
Luis
02-03-2010 08:50 AM
Hi LuisG
Thanks for looking into this. I had forgotten that you can't do somethings while using Easytab. I guess we'll have to find a different way of doing things. I know that Easytab is obsolete and would never use it for anything new, but we have some applications that date back quite a while that make extensive use of Easytab and converting them over looks to be a pain. Probably easier for use to avoid using the DuplicateCtrl for now.