Archived: LabWindows™/CVI™ 2013 SP1 Bug Fixes

NI does not actively maintain this document.

This content provides support for older products and technology, so you may notice outdated links or obsolete information about operating systems or other relevant products.


The following items are changes from LabWindows/CVI 2013 to LabWindows/CVI 2013 SP1. If you have a Bug ID, you can search this list to validate that the issue has been fixed.

Note: LabWindows/CVI 2013 SP1 integrates all of the fixes from the LabWindows/CVI 2013 f1 patch. For a list of fixes included in the patch, see the patch details.

Bug Fixes

IDLegacy IDFixed IssueIssue Details
When a build distribution finishes, LabWindows/CVI continues to use 100% of the CPU.If you build any distribution and then leave open the dialog box that shows the build was completed, cvi.exe will use 100% of the processor on which it is running.
Duplicating a control in a mouse-up callback may cause an assert and possible crash.For example, an assert or crash may occur if a control is duplicated in an EVENT_LEFT_CLICK_UP event.
If a variable is declared at the beginning of a switch statement body, LabWindows/CVI displays a -wunreachable-code compilation warning.This warning displays when compiling in both debug and release configurations.
Using a reduction clause may cause incorrect results to be returned.After the parallel region has completed, the process of updating the original variable using the private copies sometimes results in a race condition. The race condition can cause the original variable to contain incorrect results. For more information on the reduction clause, refer to the Reduction Clause help topic.
A small resource leak occurs upon direct or indirect disposal of a control, which, initially made movable, is made un-movable at run-time.If you set the control attribute MOVECTRL_ATTR_ENABLED to 0 at run-time for a control that was initially movable and then dispose of the control, a small resource leak occurs.
The project icon shows modified state (*) when no changes have been made to the Target Settings dialog box.LabWindows/CVI does not prompt to save or discard project changes when the project is in this state.
The LabWindows/CVI compiler does not generate prototype definitions for macro expanded functions.If you define a function that is actually a result of a macro expansion and select the function in NI TestStand, the function prototype information is not automatically filled in.
Running a real-time (RT) program that uses DEFAULT_THREAD_POOL_HANDLE crashes the RT target on reboot.Note: The documentation states: (RT) Do not use the default thread pool in RT applications.
No run-time error is produced while debugging when uninitialized structures or structure array elements are accessed.Compiler warnings are shown, but the debugger does not produce a NON-FATAL RUN-TIME ERROR stating that the local was referenced before being initialized at run-time.
Writing a string to file from the Array Display window is very slow. 
Switching projects while the Interactive Execution window is active sometimes causes LabWindows/CVI to crash.For this crash to occur, you must have manually loaded an instrument which was not automatically loaded by the active project.
Function pointer variables are incorrectly listed for non-void pointer- or array-type controls in the Select Variable dialog. 
Resizing a tree control that originally had the last item partially visible can sometimes cause a crash. 
The LabWindows/CVI compiler runs out of memory if void main() returns a value. 
Using #pragma GCC visibility push(hidden) causes LabWindows/CVI to crash during compilation.The GCC visibility hidden pragma is not supported on Windows.
Some feature checking macros with missing arguments cause the LabWindows/CVI compiler to hang.The following are examples of macros that can cause this hang:

The following build error results:
2, 5 error: builtin feature check macro requires a parenthesized identifier.
If a function call is written in a source file before any other statement, LabWindows/CVI displays a ran out of memory when generating browse information message. 
Calling SetActiveConfiguration crashes LabWindows/CVI if no valid configuration exists.If you want to set a custom configuration, you must specify a buildOption greater than 3. However, if you try to set an invalid active configuration for a project that has no custom configurations or simply to a non-existent configuration, LabWindows/CVI will crash.
Enabling Options»Build Options»Detect uninitialized local variables at run time causes the debugger to return incorrect run-time errors when indexing arrays in a for loop. 
Interactive Execution window code does not rebuild in subsequent execution attempts after a linker error occurs. 
Creating a release build using Clang as an external compiler results in build failure.The build fails with the following output:
Build Status (Test402701.prj - Release)
Test402701.c - 1 warning
1, 1 The system cannot find the path specified.
Build failed
The DeleteDir function writes to a string literal past the end of the string.For example, the following code snippet will cause a non-fatal run-time error due to string corruption:
char* p ="temp1";
DeleteDir ("temp1");
printf("P= %s\n", p);
The __FILE__ macro expands to full pathname by default instead of only the file name. 
The ScanFile function ignores the %s[in] format specifier. 
The BuildIntWinProgram function always returns an error. 
The LabWindows/CVI compiler crashes on an apparently invalid linkage for a global variable.The following syntax for the global variable produces the crash:
extern DLLEXPORT int foo;.
The Variables and Call Stack window incorrectly shows pointer information for pointers passed through (void **) parameters. 
The Variables and Call Stack window cannot display 64-bit integers in binary format. 
The _OPENMP macro is incorrectly documented as defined only when the Enable OpenMP support option is enabled.The _OPENMP predefined macro is always defined regardless of whether the Enable OpenMP support option is checked.
If a function pointer is defined in the source, the LabWindows/CVI debugger crashes when Options»Interpret As is selected from the Variables and Call Stack window context menu. 
Compiler warnings occur when building a project with precompiled headers and Microsoft Visual Studio 9 as an external compiler.The following compiler warnings display:
', object file assumed
' ignored
cl : Command line warning D9021 : no action performed
Generating a type library with a function panel that uses undefined struct data types results in an unexplained error. 
A header file is required for type library function panels in order for build to succeed. 
Installing LabWindows/CVI 2013 causes a noticeable slow down in TestStand debugging features for LabWindows/CVI.Installing LabWindows/CVI 2013 causes all LabWindows/CVI development environments to slow down when called by TestStand for debugging. The DLL used by TestStand to access LabWindows/CVI debugging features is shared by all the versions of LabWindows/CVI on a computer system.
Double precision is limited to five decimal places in the Variables and Call Stack window. 
The DDC_Get[File/ChannelGroup/Channel]StringPropertyLength functions incorrectly return the number of characters instead of size in bytes.This is a problem only when called on a string property whose value contains multibyte characters on a system with a corresponding multibyte code page selected.
Pointer handling creates a non-fatal run-time error out of bounds when compiling for debug64.Decrementing a pointer can cause this error in 64-bit applications.
The LabWindows/CVI compiler crashes when using variable length arrays (VLAs) as OpenMP data-sharing variables. 
It is impossible to set multiple cells in a table control to unsigned char in the User Interface Editor. 
LabWindows/CVI throws errors regarding file version macros when using precompiled headers and auto-increment file version for release configurations. 
The LabWindows/CVI compiler crashes when a build step includes multiple %s statements. 
LoadExternalModule and LoadExternalModuleEx cannot link libraries with global pointer variables. 
An Assert! error occurs when using the CVI GUI Localization Utility. 
The TestStand debugger continues instead of breaking on the next step when stepping out of a LabWindows/CVI code module.This problem occurs when debugging a LabWindows/CVI code module, called from TestStand, if LabWindows/CVI 2013 is installed.
UIR changes are not included in an executable build when the Embed project .UIRs option is enabled.A change, introduced in the LabWindows/CVI 2013 f1 Patch prevents incremental changes to embedded UIR files from being included in subsequent builds.
LabWindows/CVI displays a A custom control callback raised an exception message when changing the Array Display window format to ASCII.After dismissing the dialog box, the mouse pointer changes into the wait cursor, but the development environment does not hang. Stepping over in the debugger after dismissing the dialog box causes the development environment to crash.
Opening the Variables and Call Stack window in the SymmetricMultiprocessingRT example crashes the real-time target and hangs the development environment. 
It is not possible to step into a LabWindows/CVI DLL from NI TestStand when using LabWindows/CVI 2013.While debugging in TestStand, if you choose to step into a LabWindows/CVI DLL, TestStand will instead skip to the next sequence. This problem is unique to the LabWindows/CVI 2013 development environment.
The LabWindows/CVI 2013 f1 patch version of cvi_lvrt.dll cannot load on real-time targets.If you manually transfer the 2013 f1 patch version of cvi_lvrt.dll to your real-time target, it will fail to load with the following message:
Error loading 'cvi_lvrt.dll': Missing export 'GetShortPathNameA' from 'KERNEL32.DLL.

Note: Installing the 2013 f1 patch does not automatically cause this DLL to be installed to your real-time targets.
Compiling source code with enums in the Interactive Execution window fails with an Invalid allocation size message.The following snippet produces the error message:
enum months { Jan=1, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec };
enum months month;
printf ( "%d\n", month=Sep );
If you upgrade the version of NI-VISA or IVI Compliance Package on your system and the upgraded versions have added new functions, you will not be able to run the newly added functions in the Interactive Execution window. 
The Build Output window is cleared after calling ActiveX automation function GetCVIState. 
Instruments loaded in the Library Tree are not loaded in the Interactive Execution window.This can lead to unresolved symbol error messages when certain functions are called from the Interactive Execution window.
The Array Display window, configured to display ASCII, shows the octal code for last 9 bits for an array with more than 1 byte width. 
Data tooltips display infinite precision instead of scientific notation. 
GetCVIState and GetCVIStateEx sometimes return the wrong state between the build-time and run-time of a project.When building and running a project, there is a window of time in which the project has been built but has not yet started running. During this time, GetCVIState and GetCVIStateEx return the same state as after the project has begun running. Consequently, a program that is checking if the project has finished executing might incorrectly think that the project has finished executing, when it has not started yet.

This happens very infrequently.
LabWindows/CVI 2013 removed support for specifying a .c file as the module to load to the LoadExternalModule and LoadExternalModuleEx functions.LabWindows/CVI 2013 SP1 restores support for this feature.
Clicking the options button in the graph cursor control from the graphcursorctrl.prj shipping example causes a non-fatal run-time errorThe error message is as follows:
NON-FATAL RUN-TIME ERROR: "graphcursorctrl.c", line 58, col 5, thread id 0x00001078: Library function error (return value == -46 [0xffffffd2]). The attribute passed is not valid
LabWindows/CVI hangs on multiple occasions when stopping the Interactive Execution window in Debug64 configuration. 
The CanvasClear function does not clear all its contents if the canvas control attribute, ATTR_PEN_WIDTH, is greater than 2. 
LabWindows/CVI generates an Unrecoverable Internal Error when generating a DLL import source. 
The LabWindows/CVI graph control sometimes displays two zero-valued y-axis tick marks when using a log scale.When graph ticks have values on the order of 10-60 and smaller, their values are rounded to 0 on the tick label.
The ATTR_TOOLTIP_HIDE_DELAY attribute is not saved when saving a UIR as a TUI. 
Breakpoints in project source code are not bound when running a stand-alone Interactive Execution window program.If you set breakpoints in the source code of your project, those breakpoints will not be reached while you run your program in the stand-alone Interactive Execution window.
Debugging via LabVIEW does not fully support multiple calls into the same DLL at the same time.For example, a LabVIEW project might call two functions in a DLL from separate threads at the same time. Both LabWindows/CVI functions register the DLL with the LabWindows/CVI debugger. The first thread to exit the DLL will unregister the DLL from the LabWindows/CVI debugger while the second thread is still executing inside the DLL. This is a problem only when the second thread generates a run-time error, because the debugger thinks the location of the error is in an unknown module. The debugger cannot display proper source information for the error.
Combining several operations on a pointer after a pointer cast or referencing specific elements in a global array causes compile-time crashes.Combining several operations on a pointer after a pointer cast example:
*((unsigned short *)ptr)++ = x;

Referencing specific elements in a global array example:
temp = &GlobalPointer[0];
LoadExternalModule loads .obj files that are linked into the calling executable instead of loading only .obj files on disk.This occurs when the .obj file is specified by name instead of by its full path.
Break On Change option in the Watch window does not work for items below the fourth position in the watch list. 
The Watch window does not retain the Format setting for variables between debugging sessions. 
Running a function panel with attached source in the Interactive Execution window always uses the Debug32 object, resulting in link errors or unintended behavior.Note: This appears to work with 32-bit configurations, but the wrong compiled object is used.
The Watch window does not retain the Format setting for variables when stepping through code. 
Adding an enum variable to the Watch window crashes the debugger. 

Glossary of Terms


  • Bug ID - When an issue is reported to NI, you may be given this ID or find it on  You may also find IDs posted by NI on the discussion forums or in KnowledgeBase articles.
  • Legacy ID – An older issue ID that refers to the same issue.  You may instead find this issue ID in older known issues documents.
  • Description - A few sentences which describe the problem. The brief description given does not necessarily describe the problem in full detail.
  • Workaround - Possible ways to work around the problem.
  • Reported Version - The earliest version in which the issue was reported.
  • Resolved Version - Version in which the issue was resolved or was no longer applicable. "N/A" indicates that the issue has not been resolved.
  • Date Added - The date the issue was added to the document (not the reported date).