Release Notes for RTX64 2014
Key Features
Subsystem
- Added monitoring infrastructure that allows you to profile real-time application behavior. (3838, 2698, 2699, 2839)
- Added AVX 2.0 support within the RTX64 subsystem. (2013)
- Improved thread priority mapping between Windows processes and how they interact with the real-time subsystem. You now have complete control over how Windows proxy threads interact with RTSS thread and objects. (2057)
Tools and Utilities
- Improved the RTX64 Control Panel to allow for modification of Network interface friendly names. (2183)
- Improved error messages provided by tools when RTSS binaries are incorrectly stamped or the user does not have the proper permissions. (2624, 2210)
- The Control Panel now provides the ability to disable the logic used by the RTX64 subsystem to prevent windows power management of processor speeds. (2694)
- Added new tools:
- Task Manager – view active Real-time processes (.rtss) and windows processes linked to RTX64 (.exe). You can start new tasks and terminate currently running tasks. (153)
- RTX64 Monitor – start and stop monitoring sessions, and generate log files of monitoring results.
-
Analyzer now includes information about the status of Virtual Network components. (2662)
RT-TCP/IP Stack and Drivers
- Added a Virtual Network that provides a virtual point-to-point connection between Windows and RTX64. It emulates a local area network connection between Windows and the Real-time Subsystem with no additional hardware required. (2394, 2606)
Debugging
- Added the RTX64 WinDbg Extension, which extends Microsoft's 64-bit version of WinDbg and provides a way to analyze and interpret the state of RTSS applications and the RTX64 Subsystem. (2390)
SDK
- The managed code framework now provides functionality to disable the logic used by the RTX64 subsystem to prevent windows power management of processor speeds. (2694)
- The Managed Code interface now provides functionality to allow Windows applications to enumerate RTSS processes. (1581)
- Added support for multiple RTX64 SDKs on the same system through common tools and versioned build environments. (2719)
- New RTAPI calls were added to support getting and setting of priorities for Windows proxy threads. New API calls are as follows:
- RtSetProxyThreadPriority – sets the priority of a RTSS proxy thread from a Windows application.
- RtGetProxyThreadPriority – gets the priority of a RTSS proxy thread from a Windows application.
- RtkSetProxyThreadPriority – sets the priority of a RTSS proxy thread from a Windows kernel driver.
- RtkGetProxyThreadPriority – gets the priority of a RTSS proxy thread from a Windows kernel driver.
- Added an API call RtGetEnabledXStateFeature which allows developers to determine the capabilities of the system processor. (2013)
- Added new API calls to support Monitoring functionality:
- RtGenerateEvent – allows you to generate user defined events within an RTSS process.
- RtMonitorControl – allows you to control monitoring within an RTSS process programmatically.
- Added new API calls to support link status monitoring:
- RtnIsDeviceOnline – gets the online status of a network device for link status monitoring.
- RtnIsStackOnline – gets the online status of the RT-TCP/IP stack for link status monitoring.
- Added support for the Windows API call GetModuleFileName, which retrieves a handle for each module in a specified process.
- Added support for the Windows API call TryEnterCriticalSection, which attempts to enter a critical section without blocking. If the call is successful, the calling thread takes ownership of the critical section. (2319)
Issues Resolved
Installation
- Resolved an issue where the RTX64 Runtime uninstall did not remove all plug and play driver files from the Windows driver store. (2033)
- Resolved an issue where the root RTX64 SDK directory was not always removed on uninstall. (2102)
- Resolved an issue where the Windows Device Manager showed the RTX64 device properties tab after RTX64 had been uninstalled. (2244)
- Resolved a stability issue found when the Server and Control Panel where open during an uninstall of the RTX64 Runtime. (2505)
- Resolved an issue where on uninstall the user was not prompted to stop the RTX64 Subsystem if it was running. (2550)
-
Resolved an issue where during uninstall the RTX64 Subsystem was not being stopped correctly. (2519)
Activation and Configuration
- Ensured that an appropriate error message appears when RTX64 is licensed to an IntervalZero-provided dongle and that dongle is removed from the machine . (3054)
- Resolved an issue where the Dongle Activation Utility required multiple license keys to be entered as a single contiguous line. Multiple license keys can now be entered as separate lines, as well as contiguously. (1616)
Subsystem
- Added default support for the following Hanmi devices: (2751)
- Hanmi motion controller for Mechalink II (RTX64)" = RTX64Pnp_Inst,"PCI\VEN_1172&DEV_0004&SUBSYS_00001818
- Hanmi IEEE 1394 controller (RTX64)" = RTX64Pnp_Inst,"PCI\VEN_11C1&DEV_5811&SUBSYS_13941793
- Resolved an issue where information added to the Windows Event Viewer was not valid. (2373)
- Resolved an issue where the RTX64 Subsystem incorrectly called DLLmain when terminating a faulting process. (2298)
- Resolved an issue where a Blue Screen would result when a RTSS process implicitly-loaded a RTDLL which linked in the C-Runtime library when RTX64 was configured to use local memory. (2506)
- Resolved an issue where the RTX64 Subsystem was incorrect determining the number of available processors if the system was generated using a Windows Embedded image with multiple processor types. (2532)
- Ensured that all RTX64 Subsystem notification messages are logged to the Windows Event Viewer. For a complete list of exception codes and notification messages, see Exception Codes. (2235)
Tools and Utilities
- StampTool now contains a flag to allow users to query information about the stamped binary. (2186)
- The Activation and Configuration utility now distinguishes between what licensed features are installed and not installed. (1722)
- Resolved an issue where the Latency View log file did not correctly display the number of samples logged. (1667)
- Resolved an issue where Latency View did not provide a proper error message when children processes were abnormally terminated. (1673)
- Resolved an issue where RTSSrun showed an incorrect error message if user tried to launch a windows process. (2078)
- Resolved an issue where Analyzer misidentified the processor type when gathering system information. (2189)
- Resolved an issue where the Control Panel’s Add Interface dialog listed Network Interface Cards that were already associated with an enabled interface in the list of devices to choose. (2221)
- Resolved an issue where the Control Panel did not properly handle ctrl+f. (2148)
- Resolved an issue where the Control Panel did not show all licensed products or expiration dates. (2495, 2616)
- Resolved an issue where RtssRun usage dialog was displayed twice. (2515)
- Resolved an issue where the Control Panel did not provide the proper restart message when an NIC interface is removed. (2597, 2664)
-
Resolved an issue where the RTX64Config command line utility erroneously reported an RTX64-controlled device as being under Windows control. (2634)
RT-TCP/IP Stack and Drivers
- Resolved an issue where the RtssClient sample did not correct handle the UDP flag. (2144)
- Resolved stability issues found when repeatedly starting and stopping the RT-TCP/IP Stack. (2173, 2201)
- Resolved an issue where SendTo was not always returning the correct error code. (2645)
- Resolved an issue where RtssPing would hang when calling 127.0.0.1. (2370)
- Resolved an issue with how the RT-TCP/IP Stack used critical sections internally which was causing sendto to hang. ( 2552, 2561)
- Resolved an issue where multiple interfaces on the same subnet would not work correctly. (2670)
- Resolved an issue where if the RT-TCP/IP Stack was running when the system stopped it would not allow for the creation of a Windows dump file to be generated. (2589)
- Resolved an issue where RtssServer would cause a Windows STOP if the I flag is passed in as an option. (2618)
- Resolved an issue where the socket option SO_LINGER was not working correctly. (2673)
SDK
- Resolved an issue where the maximum number of RTSS processors allowed was incorrectly defined. (2530)
- Resolved an issue where the prototypes for the RtWritePortXXX API calls were incorrect. (1807)
- RTX64 loader now modifies the preferred base on loading of the image. (954)
- Resolved an issue where RTK functions could not be called from a Dispatch routine. (2642)
- RtDisableInterrupts and RtEnableInterrupts are now macros in RTAPI.h. (237)
- Resolved an issue where RTProcessStart only worked when called with a single String as a parameter. (2350, 2786)
- Resolved an issue where the Managed Code framework threw an incorrect exception when a user who was not a member of an RTX64 group tried to create an interface. (2432)
- Resolved an issue where the RtEthernetFiler sample was using the incorrect size when transmitting a frame. (2166)
- Resolved an issue where SendTo would hang when creating multiple events. (2561)
- Resolved an issue where the Select API function could not monitor more than 64 sockets per unique nfds. (789)
Samples
- Resolved an issue where some of the provided sample binaries required the Microsoft C Runtime redistributables to be installed on a system before the binaries could be run. (2549)
Notes
- The following device conversion APIs have been removed from the RTX64 Managed Code Framework:
- IntervalZero.RTX64.Config.WindowsDevice.SetOwnerToRTX64
- IntervalZero.RTX64.Config.RTX64Device. SetOwnerToWindows
- IntervalZero.RTX64.Config.RTX64Device.FilterIOPortResources
- IntervalZero.RTX64.Config.RTX64Device.SetKeepLineBasedInterrupt
- The current implementation of Task Manager requires the subsystem to be running. The subsystem cannot be stopped while Task Manager is running.
- You cannot open projects made with the RTX2013 SDK in Visual Studio when you only have the RTX 2014 SDK installed. To work around this issue, edit your .VCXPROJ file and change all occurrances of "RTX64SDK" to "RTX64SDK2". Note that you will also have to change the path name to StampTool so that it references the correct location of the binary in the RTX64 2014 SDK. (2792)
- RTX64 2014 requires a new license. Customers with RTX64 2013 will need to contact sales if they wish to upgrade to RTX64 2014.
- The functions RtSetThreadPriority and RtGetThreadPriority have been deprecated and can no longer be used by Windows processes linked to RTX64. Instead, users must use the Windows API for setting the priority of Windows threads. To get/set the priority of Windows Proxy threads that interact with the RTSS Subsystem, users must use the new Proxy APIs RtGetProxyThreadPriority and RtSetProxyThreadPriority .
- The RTX64Debuggers group has been removed in this release of RTX64. (2649)
- The following debugger related functions have been marked as deprecated, and will be removed in a future release:
- ContinueDebugEvent
- DebugActiveProcess
- DebugBreak
- GetThreadContext
- IsDebuggerPresent
- ReadProcessMemory
- SetThreadContext
- WaitForDebugEvent
- WriteProcessMemory
- RTX64 SDK-provided environment variables have been modified to be version specific as part of supporting multiple RTX64 development environments on the same system. This will cause existing projects built with RTX64 2013 not to build. Follow the upgrade procedure to modify your project to run with RTX64 2014. See Upgrading RTX64 Projects for more information. (2792)
- The ID of the first socket descriptor returned is 0, unlike the RTX product which is 1. (1657)
- Network Interface friendly names can only be 14 characters long. (2168)
- When monitoring, if you start running low on space, you might need to manually delete session folders. To delete session folders, open Windows Explorer and navigate to the folder where session logs are saved (C:\ProgramData\IntervalZero\Monitor by default), and delete as many subfolders as required to free up sufficient disk space. Subfolders use the naming convention YYYYMMDD_HHMMSS_N, where N is an integer between 1 and the total number of monitoring sessions for that second. Do not delete individual binary files within subfolders; you must delete entire subfolders.
- The RTX64 and Windows versions of the QueryPerformanceCounter function return different values since Windows does additional calculations to the retrieved value.
-
When BIOS provides the option to disable/enable x2APIC on Windows 8 systems, disable X2APIC using this bcdedit command:
bcdedit /set x2apicpolicy disable
. This must be done after you boot from the RTX64 configuration, but before you start RTX64.
Known Issues
- The monitoring infrastructure uses the RDTSC instruction to get the time a monitoring event happened on a processor. RDTSC is processor-specific, so a timestamp counter on one processor will not match exactly the timestamp counter on another processor. Because of this limitation, timestamps on a given processor are in order but across processors may be out of order.
- RtVirtualNic can cause a GSOD if the subsystem is shut down during interface initialization. (2807)
- It is not possible for real-time applications to send network traffic from a shutdown handler. (2764)
- The number of RTSS processors is displayed incorrectly in the RTX64 Control Panel when you change the number of processors until you restart the subsystem. (2659)
- If the RTX64 2013 SDK is installed after the RTX64 2014 Runtime is installed, you might see a message that you need to configure the subsystem when exiting the Activation & Configuration utility. (3021)
- RTX64 2014 Visual Studio Wizard files may get overwritten when you install a version of the RTX64 2013 SDK on a system where the RTX64 2014 SDK is already installed. To resolve this issue, run the RTX64 2014 SDK setup again and choose the Repair option. (3046)
- If .NET is uninstalled while RTX is still installed, users can get ".NET Framework Inti msg" warning messages from RTX64Welcome.exe and RTX64BootCheck.exe. (3011)
- Replacing the RtPrintf in DLL_PROCESS_DETACH with printf causes a crash. (3004)
- Terminating the RT-TCP/IP Stack using RtssKill or the Task Manager might result in a system crash. Use the Control Panel or Managed Code interface to stop the RT-TCP/IP Stack. (2209)
- Disabling the Windows Virtual RTX64 Ethernet Adapter while the subsystem is running and the virtual network is in use may cause the Windows Device Manager to hang. It is recommended that you stop the subsystem before you disable the Windows Virtual RTX64 Ethernet Adapter. (2610)
- Within DLL_PROCESS_DETACH, user code cannot call any CRT function that directly or indirectly calls malloc. For example, you could not call the CRT function printf, but would instead need to call RtPrintf. (2638)
- Using a wrong interface name when using RTX64Config while configuring an interface parameter gives an unfriendly "Object reference not set to an instance of an object" message. (1091)
- Using a secure C Runtime call may cause a Windows stop if the function fails a debug assertion due to parameter validation failure. (2284)
- The RTX64 subsystem can cause a Windows stop if memory is exhausted and it is unable to allocate enough memory to expand its internal handle table. (2372)
- RTX64 will provide an incorrect message and warn the user of “Software counterfeiting” instead of expiration of an evaluation license. (2342)
- Jumbo packets are not fully supported with all real-time network device drivers. (2669)
- You cannot stop the Subsystem when the Task Manager and Monitoring Utility are open. (2803)
- A Green Screen can occur when you allocate a local memory pool size that is over the upper limit of 3/4 of system RAM. (2674)
- RtssPing no longer works with IPv6 due to scope I.D. changes. (3086)
- Class IntervalZero.RTX64.Config.Network makes it possible to create multiple instances with the same TCP/IP stack instance ID, but with different internal representations of the state of that TCP/IP stack instance. If different class instances are used to create a network interface, then each instance can't see the other network interfaces, and no class instance can see all network interfaces. As a result, a client cannot use constructor Network(uint instance) to create an object that provides correct information about all network interfaces. (3102)
- The function RtnIsDeviceOnline does not accept NIC interface names that contain spaces or characters such as "#$&@". However, these characters can be included in NIC interface names in the Control Panel. (3114)
- Monitoring log data can become corrupted if a system experiences a Green Screen shutdown while a monitoring session is active. (2900)
- The prompt to restart the RT-TCP/IP Stack in the RTX64 Control Panel persists for more than one minute when four interfaces are configured. The RTX64Server Console reports nothing for the duration if LinkStatus is enabled. (3112)
- The RtE1000 driver does not support shared line-based interrupts. (1364)
- When you change either the Local memory pool size or Expand size Control Panel settings to a value that is outside the supported range, the setting does not revert back to its default value. Instead, the last digit of the entered value is deleted and that new value is saved. (3230)
- Abnormal termination of RTSS applications with open sockets that use the RT-TCP/IP Stack might cause a Blue Screen or Green Screen. This is particularly likely when there are active communications at the time the abnormal termination occurs. This applies to applications killed using RtssKill, or exited without using the WSACleanup function. A device interface may also become unresponsive if abnormal termination occurs while the interface is streaming data out. When this occurs, there is no way to stop the RT-TCP/IP Stack or Subsystem. You must reboot the machine. (2247)
- A Blue Screen may intermittently occur when the RTX64 Runtime is installed on Windows 8 machines. When this occurs, run the installation again. (3180)
- The RtPerfMonitor sample does not build successfully unless you change the target name from "Monitor" to "RtPerfMonitor". (3308)
- A Heap Allocate Fail event is not generated when HeapAlloc is called with a size that is greater than the maximum size of the heap. (3290)
- When you use RtsKill to terminate RtssPing. pings will continue to print indefinitely. (3258)