Release Notes for RTX64 3.0
Key Features
General
- Added support for Windows 10 Anniversary Update Version 1607.
- Added support for Windows 10 Version 1511 (Feb 2016). (4598)
- Added user notification pop-ups when a IntervalZero-dongle is plugged in and is available for use (4599)
RT-TCP/IP Stack and Drivers
- Added support for the RTX64 RtI10GB driver, which was developed for the Intel x540 10Gb/s network adapter (0x1528) but includes untested support for several other Intel network adapters in the same family. See the RTX64 Supported NICs document, available at https://www.intervalzero.com/technical-support/guides-and-minitutorials/, for a list of supported devices. (4567)
- Incorporated the RtBCM driver, which had previously been released as a standalone. See the RTX64 Supported NICs document, available at https://www.intervalzero.com/technical-support/guides-and-minitutorials/, for a list of supported devices. (4566)
- Added support for the Intel® I210 Flash-less Copper-only Ethernet Controller (device ID 0x157B) to the RtIGB driver. (4531)
- Added support for the Intel® PRO/1000 PF Dual Port Server Adapter (device ID 0x105F) to the RtE1000 driver. (4880)
Tools and Utilities
- Added Tracealyzer for RTX64, a diagnostics tool from Percepio for viewing monitoring session data. (4692)
- New Monitoring features:
- Improved monitor event MonitorEventSemaphoreRelease to include the handle of the semaphore. (4314)
- Improved monitor events MonitorEventWFSOReturned and MonitorEventWFMOReturned to return a pointer to the objects they acted upon. (4315)
- Expanded monitor events to include handles for Release events. (4312)
- Improved Critical Section monitor events to include the mutex handle of the critical section object. (4701)
- Added these new monitor events: (4904, 4432)
- File Object Create – Generated when a file has been opened by the subsystem.
- File Object Destroy – Generated when a file has been destroyed by the subsystem.
- SRI to Windows Event – Generated when an SRI over to Windows has been initiated.
- SRI to Windows Return Event – Generated when an SRI over to Windows has returned.
- Thread Terminate – Generated when a thread terminates.
- Improved the Latency View tool to allow each graph view to be scaled independently and to log the duration of the test run. (4414, 1668, 3548)
- Added the following information to RTX64 Analyzer output:
- System boot configurations. (4798)
NOTE: In order to display boot configuration data when running RTX64 Analyzer from the Start Menu shortcut, you must right-click and choose Run as administrator.
- Monitor configuration information (4792)
- VSIX Extensions installed on the machine (4784)
- On Windows 8.1 systems: whether the supported Windows 8.1 version (Windows 8.1 with Update) is installed. (4793)
SDK
- Integrated standalone Visual Studio 2015 with Update 2 build and debug support, including (4844, 4530):
- Visual Studio templates for creating a RTX64 Application and RTDLL.
- Support for statically linked Debug and Release versions of the Microsoft Visual Studio C Runtime.
- Added Snippets for some key RTAPI function calls.
- Added debugging support through launch.
- Added support for Start Without Debugging within the Visual Studio debugger.
- Added support for launching a RTSS process on a remote target system for debugging.
- Added support for Intel Compiler 16.0 (4396, 4406)
- Added custom error codes that can be returned by Real-Time APIs. (4601, 4459)
- Added a new Real-Time function RtGetModuleFileNameEx, which retrieves the fully-qualified path for the file that contains the specified module. (4470)
- Added new RTK API functions that verify whether a specified RTX64 Runtime or RT-TCP/IP Stack version is installed and licensed (4660):
- RtkIsRuntimeLicensed – Verifies that a specified RTX64 Runtime is installed and has a valid license.
- RtkIsTcpStackLicensed – Verifies that a specified RTX64 RT-TCP/IP Stack component is installed and has a valid license.
- Added new API functions that return whether the provided RTSS application binary can be run, which means it has been built to run with the provided license feature and that there is a valid license for the feature on the system. (4643)
- RtIsAppRunnable
- RtkIsAppRunnable
- Added new API functions that return the version of the installed RTX64 Runtime (3151):
- RtGetRuntimeVersionEx
- RtkGetRuntimeVersionEx
- RT_VERSION_INFO
- Added support for the Windows-supported API function GetModuleHandleEx, which retrieves a module handle for the specified module in a specified process. (3176)
- Added support for these C-Runtime functions: (4541)
- _beginthread, _beginthreadex
- _endthread, _endthreadex
- Added new real-time API functions for setting and retrieving the flush TLB tick mod of a RTSS process. By default, a processor's TLB cache is flushed when the processor is idle (4690):
- RtSetFlushTLBTickMod
- RtGetFlushTLBTickMod
- Added new real-time API functions for setting and retrieving the time quantum value for a specified thread (4714):
- RtSetThreadTimeQuantumEx – Sets the time quantum, in microseconds, for the specified thread.
- RtGetThreadTimeQuantumEx – Gets the current time quantum, in microseconds, for the specified thread.
- Improved performance in the Real-Time Network Device function RtndFrameTransmit. (4688)
- Added a new Real-Time API function, RtEnumProcessEx, which retrieves the process identifier for each RTSS process object using data specified by new structure RTPROCESS_INFORMATION. (4775)
- Added the ability to configure RTX64 Server from a managed code application.
- Expanded functionality for monitoring from within a managed code application.
- Added the ability to query Runtime version information from within a managed code application.
- Added support for the IPPROTO_TCP socket option TCP_MAXRT, which controls the retransmission timeout for a TCP socket. (5058)
Samples
- Added a Start Menu entry that points directly to the location to which Samples are installed by default:
%public%\Documents\IntervalZero\RTX64 SDK\4.5\Samples
. You can also access RTX64 program samples directly from the RTX64 SDK Welcome Screen. (3579, 4564) - Updated the RTKIPC sample, which now requires Visual Studio 2015 and WDK 10 to build. The resulting binary will run on all Windows versions supported by RTX64 (7, 8, 8.1, and 10). As part of this update, Visual Studio 2012 and Visual Studio 2013 versions of the sample are no longer provided. (4877, 4885)
- Added an Advanced Installer sample showing how to use the RTX64 Runtime merge modules. (4966, 4705)
Issues Resolved
Installation
- Resolved an issue where a Blue Screen occurred during installation of RTX64 when a standard dongle was connected to the machine. (4595)
- Resolved an issue where WIX installations of RTX64 failed when built using the RTX64 merge modules. (4436)
- Added logic to the RTX64 installer to detect whether the supported version of Windows 8.1 with Update is installed on the system, and to display the appropriate error when the supported version is not installed. (4485)
- Ensured that the following user settings are preserved during an upgrade:
- Search Path settings (3908)
- Enabled/disabled state of the Virtual Network (4330)
Activation and Configuration
- Resolved an issue where the RTX64 licensing system would not start on RAID systems, which prohibited the Subsystem from starting. (4629)
- Resolved an issue that occurred when a dongle was not plugged in at system start. (4642)
- Resolved a timeout issue that caused the RTX64 Activation and Configuration utility to report the error message Read error from network. (4838)
- Resolved an issue where RTX dongle licenses were written to the RTX64 license file instead of the RTX license file. (4507)
- Resolved an issue where the confirmation message of a successful activation would not display long enough to be read. (4707)
- Resolved an issue that caused the RTX64 Activation and Configuration utility not to run unless Visual Studio was installed. (4492)
- Resolved an issue where a license was erroneously reported as expired when its corresponding dongle was disconnected from the machine. (4625)
- Improved the error message that appears when the -dongle switch is specified before License Key in
RTX64ActivationUtil.exe
(4624)
Subsystem
- Resolved an issue where RTX64 would not start on machines with hardware that have over 64 MSIX message entries. (4731, 4593)
- Resolved stability issues within Driver Verifier (3347, 3563, 4875)
- Resolved an issue where RtMapMemory could not map to the upper memory area in an executable (.EXE) file. (4562)
- Resolved an issue where a crash would occur when RtOpenSharedMemory was called. (4578)
- Resolved an issue where the Subsystem would not start on Intel 6th generation Skylake systems. (4589)
- Resolved a significant time difference between GetSystemTimeAsFileTime and RtGetRtssTimeAsFileTime. (4710)
- Resolved an issue where multiple LoadLibrary calls from a RTSS application to multiple RTDLLs with identical names but different paths would always load the first RTDLL. (4249)
- Resolved an issue where RemoveDirectory returned an incorrect value when the directory was empty. (4218)
- Resolved an issue were a program's main function parameters argc and argv were off by 8 bytes when the project was built without Microsoft C Runtime support. (3589)
RT-TCP/IP Stack and Drivers
- Resolved performance issues with the Real-Time Network Driver function RtndRequest. (4377)
- Resolved an issue where RTX64 accepted Requested IRQ interrupt values that contained non-numeric characters. (4383)
- Resolved an issue where memory was not aligned in the RtRtl8168 driver. (4415)
- Resolved an issue where the file RTX64 INF file referenced an incorrect controller number for the Broadcom driver. (4372)
- Resolved an issue where the RtIGB driver used different character sets depending on the build configuration (RTSSDebug or RTSSRelease). (4460)
- Resolved an issue where the RTX64 Virtual Network would fail to retrieve the receive buffer. (4594)
- Resolved an issue where the RTX64 Virtual Network interface would lose packets in some scenarios. (4585)
- Resolved performance issues that occurred when socket applications were run on gigabit connections and on two different cores. (4663)
- Added logic to prevent the RT-TCP/IP Stack from auto-starting when a valid Stack license could not be detected. (4308)
- Resolved an issue where the RtI10GB driver did not correctly handle jumbo packets. (4925)
- Resolved an issue where link status was not working with the Intel CT card (82574) in the RtE1000 driver in MSI-X mode. (4684)
- Resolved an issue where there were misaligned receive and transmit buffers in the RtI89168 driver. (4682)
- Resolved a logic error in the function RtEnumPciCards which caused the RT-TCP/IP Stack to not recognize some installed Network Interface Cards (NICs). This issue appeared when NICs were installed in PCI locations that had a non-sequential PCI function number. (4355)
Tools and Utilities
- Resolved these issues with RtssRun:
- Resolved an issue where Windows would intermittently fail to unload RtssRun during high load scenarios, causing the system to hang. (4592)
- Resolved an issue where RtssRun would intermittently cause a Blue Screen with a Security Check Failure. (4590)
- Resolved an issue where RtssRun did not accept arguments that contained spaces. (4276)
- Improved the error text displayed by RtssRun when a RTSS process fails to load. (4411)
- Resolved these issues with the Control Panel:
- Resolved an issue where attempts to delete an interface via the Control Panel failed with an error message that the RT-TCP/IP Stack was not licensed. (4762)
- Resolved an issue where the Control Panel did not always display the correct start/stop status of the RT-TCP/IP Stack. (4506)
- Ensured that the Control Panel accurately limits the Local memory pool size value to 4GB. (4491)
- Resolved an issue where the Add Interface dialog in the Manage Interfaces and Filters page in the RTX64 Control Panel allowed interface names that contained spaces and special characters. (3126)
- Resolved these issues with RTX64 Analyzer:
- Resolved an issue where RTX64 Analyzer output was not displayed correctly in Notepad. (4804)
- Resolved several issues with how RTX64 Analyzer displayed licensing information. (4664)
- Resolved an issue where a comma was appended to the end of search path entries in RTX64 Analyzer output. (4333)
- Resolved an issue where some error dialogs appeared behind the main visible window. (4586)
- Resolved an issue where search path folder names could expand beyond the RTX64_MAX_PATH character limit when the folder name was entered via copy/paste instead of being typed. (4311)
- Resolved these issues with monitoring:
- Resolved an issue where the Monitor utility did not display the state of a conversion in progress when you navigated away from, and then back to, the Manage session logs during a conversion. (4354)
- Resolved an issue where monitor event WFMOEX_RETURN was not generated when RtWaitForMultipleObjects returned without blocking. (4901)
- Resolved an issue where monitor events that resulted from calls to SetThreadAffinityMask or RtSetProcessAffinityMask were not parsed correctly. (4890)
- Resolved an issue where the reference count of a Subsystem event object in monitor event HANDLE_CLOSE was incorrect. (4896)
- Resolved an issue where monitoring erroneously generated PROCESS_CREATE events on the Windows core. (4893)
- Resolved an issue where some proxy Thread Create events showed the spawned Thread ID (TID) as 0 (zero). (4138)
- Resolved an issue where some Thread Create events had a Handle field value of 0 (zero). (4694)
Application Development
- Resolved an issue where C Runtime error R6016 appeared when ntop calls were executed in a CreateThread routine. (4439)
- Resolved an issue where the Visual Studio 2015 Debugging Modules window did not display implicit DLLs linked to explicitly-loaded DLLs. (4699)
- Resolved an issue where the RtCreateTimer Visual Studio snippet did not build in a C++ project. (4456)
- Resolved an issue where the RtCreateProcess Visual Studio snippet did not build in a C project. (4454)
- Resolved an issue where C++ RTDLL projects built with the RTX64 RTDLL template in Visual Studio 2015 would not build successfully if the Microsoft C Runtime support option was not selected. (4387)
- Ensured that the SDK Version drop-down menu in the RTX64 RTSS and RTDLL Visual Studio templates display only the RTX64 SDK versions supported by that version of Visual Studio. (4385)
SDK
- Resolved an issue with RtSetThreadPriority which prevented the thread priority of a given thread from being decreased for as long as it owned a mutex. (4418)
- Resolved a race condition with the Managed Code function RTTimerCallback where the timer would be canceled and then set in quick succession, which caused the timer thread to run once and never continue. (4364)
- Resolved an issue where the Real-time function RtSetClockTime always returned FALSE, even when the function succeeded. (4479)
- Resolved an issue where an access violation occurred when Real-time function RtAllocateContiguousMemory failed. (4508)
- Resolved an issue where the exit status of a process created by RTProcess.Start() was always zero, even when the application was explicitly set to exit with a non-zero value. (4349)
- Resolved an issue where ReadFile would sometimes return an incorrect number of bytes transferred. (4964)
- Resolved an issue where some Managed Code classes assumed pointers to be 32 bits, which caused exceptions in user applications. (4720, 4403)
Samples
- Resolved an issue where the RtkRtssApp component of the RTKIPCSample could not be debugged. (4390)
- Resolved an issue where the RtRtl8168 driver source sample did not compile in Visual Studio 2015. (4386)
Notes
General
- English editions of Windows 10 enforce a maximum path length of 248 characters, whereas non-English editions do not. As a result, you may encounter different behaviors when configuring long search paths, depending on the Windows 10 edition running on the machine. (4950)
- In order for the subsystem to use Automatic Start you must disable Windows Fast Start. (4746)
Activation and Configuration
- A dongle is required when licensing RTX64 on a Virtual Machine. (4674)
- Due to changes in the IntervalZero licensing logic and how we lock to a system, systems that were previously able to be licensed may now require a dongle. (4518)
- You will now need an IntervalZero-provided dongle to use RTX64 on virtual machine. (4518)
RT-TCP/IP Stack and Drivers
- Using printf in a Network Interface Card driver causes an exception when called by a RTSS process out of Stack context. To avoid this, use RtPrintf instead of printf in NIC drivers. (4683)
Tools and Utilities
- Forcing the Subsystem to stop while the IntervalZero real-time debugger is attached causes the Subsystem to enter an unrecoverable state. Avoid forcing the Subsystem to stop while the debugger is attached. (4975)
- If there are running RTSS processes or running Windows processes linked to RTX64 when you attempt to stop the Subsystem via the RTX64 Control Panel, a dialog appears with a list of the running processes. Click Yes to terminate the running processes, or click No to allow the processes to run to completion. (1259)
NOTE: Internal objects may not be cleaned up correctly when running processes are terminated, which may result in an unstable Subsystem state.
- The unique Friendly Name of the interface is now required when you add a new network interface via the Control Panel. (4808)
- The command line tool RTX64Config has been deprecated and will be removed in a future release. A version of the source is provided in the Samples section.
- Context Switch monitor events are enabled by default. (4924)
-
For customers upgrading from RTX64 2014 to RTX64 3.0: To get optimal results from the monitoring functionality and the new Tracealyzer tool we recommend that you modify your monitoring settings to include Context Switch events, which were turned off by default in previous versions.
Application Development
- The default value for the Whole Program Optimization compiler setting for the RTSSRelease build configuration was changed to No. (4678)
- The default value for the Generate Debug Info linker option was changed to Yes (/DEBUG) for all build configurations. (5110)
NOTE: (Visual Studio 2013 and 2012 only) If you choose to set this to No, we recommend that you also clear selection of the Warn if no symbols on launch flag under Tools > Options > Debugging.
SDK
- A RTSS application built using a particular version of the RTX64 Managed Framework DLL must have that very same version of the RTX64 Managed Code Framework installed in the Global Assembly Cache (GAC) in order to run. This rule also applies when deploying managed code applications that were built with the RTX64 2014 SDK on an RTX64 3.0 Runtime. To assist customers with meeting this requirement, redistributable copies of the RTX64 Managed Code Framework are available from the Redistributable & Symbol Downloads area on the IntervalZero Support website.
NOTE: If you remove a given version of the RTX64 Managed Code Framework from the Global Assembly Cache (GAC), applications that require that version of the framework will no longer work.
NOTE: Applications built using the RTX64 3.0.0 Managed Code Framework cannot be deployed on an RTX64 2014 or 2013 Runtime.
(5235)
- The License Failure Error Codes previously returned by RtCreateProcess and LoadLibrary have been marked as deprecated, and will be removed in a future release. New error codes have been added. For a complete list, see RTX64 Error Codes. (4641)
- RTX64 requires some services to be running in order to operate successfully. For RTX64 3.0, the specific services are RTX64LVS and RTX64DRS. If these services are set to Manual start instead of Auto start, RTX64 will fail. (4429)
- The Real-Time function RtGetModuleFileName has been marked as deprecated and will be removed in a future release. Use RtGetModuleFileNameEx to retrieve the fully-qualified path for the file that contains the specified module. (4470)
Breaking API changes between RTX64 2014 with Service Pack 2 Update 2 and RTX64 3.0
- Method Control.Subsystem.Stop(bool) was removed.
- Property Config.Subsystem.DefaultTimeQuantum changed type from uint to ulong.
- Property Monitor.Subsystem.LogSizeMax changed type from uint to ulong.
- Property Monitor.Subsystem.MTBSize changed type from uint to ulong.
- Property Montior.MonitorEventThreadQuantumSet.NewTimeQuantum changed type from uint to ulong.
- Property Montior.MonitorEventThreadQuantumSet.PreviousTimeQuantum changed type from uint to ulong.
- Method RTAPI.RtssEnvironment.GetProcessorClockTime was removed.
- These methods changed their return types from uint to ulong:
- RTAPI.Runtime.InteropServices.RTMarshal.PhysicalAddressFromVirtualAddress(IntPtr virtualAddress)
- RTAPI.Runtime.InteropServices.RTMarshal.PhysicalAddressFromVirtualAddress(uint virtualAddress)
- In abstract class IntervalZero.RTX64.RTAPI.IO.RTPort these APIs changed:
- Method GetPortNumber now returns ulong instead of object.
- Method GetPortType was removed.
- In class IntervalZero.RTX64.RTAPI.IO.RTPort8 these APIs changed:
- The constructor signature changed from RTPort8(byte, int) to RTPort8(ulong, int).
- Property PortNumber now has type ulong instead of byte.
- Method GetPortType was removed.
- Method GetPortNumber now returns ulong instead of object.
Known Issues
General
- There is a known issue that prevents RTX64 from supporting more than 31 cores on machines where hyper-threading is enabled. (5105)
Installation
- Attempts to upgrade from RTX64 2014 to RTX64 3.0 fail on systems running non-English operating systems. Follow the steps below to work around this issue:
- Manually uninstall RTX 2014.
- Reboot the machine.
- Install RTX64 3.0.
See the RTX64 Install Guide for detailed instructions.
- When the RTX64 2014 Runtime with Service Pack 2 is installed on a machine on which the RTX64 3.0 SDK is already installed, an error occurs: rtx64activationgui.exe is not marked for installation. When this error appears, click OK and continue with the installation. Use the RTX64 3.0 Activation and Configuration Utility to activate the RTX64 2014 Runtime and/or RTX64 2014 SDK. (5085)
Subsystem
- Expanding local memory to the point of memory exhaustion causes the system to hang. (4581)
RT-TCP/IP Stack and Drivers
- When sendto or send is called on a UDP socket with data length larger than 65527 bytes (the maximum allowed data payload over UDP), the RT-TCP/IP Stack sends out a fragmented IP packet with the wrong length in the UDP header. The limitation of 65527 bytes does not apply to socket options SO_SNDBUF and SO_RECVBUF, because socket buffers can hold more than one datagram. (3686)
- The RTX64 Subsystem must be stopped before you make changes to any property of the Windows Virtual RTX64 Network. (3824)
- On machines running Windows 10 with more than one interface, the name of a device converted to RTX64 control does not update to reflect RTX64 ownership in the Windows Device Manager. This issue is under investigation with Microsoft (REG:116052414205454). (4917)
- If you delete the RTX64 Virtual NIC via the RTX64 Control Panel in RTX64 2014 with Service Pack 2, and then upgrade to RTX64 3.0, the Virtual NIC reappears and replaces the first physical NIC in the list of configured devices in the Control Panel following the upgrade. (5232)
Tools and Utilities
- Forcing the Subsystem to stop while Task Manager is open and a RTSS application is running may cause Task Manager to not display the correct number of running applications the next time it is opened. (4995)
- The Monitor utility does not enable the Start a monitoring session button when the Subsystem is started. To work around this issue, navigate away from the Start a session page in the Monitor utility, and then navigate back to the Start a session page. (4969)
- When you open a monitor session folder from the desktop in Tracealyzer, and then attempt to open another session, you cannot navigate to the same monitor session folder. To work around this issue, enable the Show hidden files, folders, and drivers setting in the Windows Folder Options dialog (Control Panel > Folder Options > View > Hidden files and folders). (5028)
- Data in the RTX64 Server log file is overwritten when RTX64 Server is restarted. (5027)
- On machines with 4 GB of RAM or less, opening large monitoring sessions (greater than 4GB) may cause the machine to slow or become unresponsive. To work around this issue, disable Raw Monitoring Events in Tracealyzer. See Raw Monitoring Framework Events for instructions. (5063)
-
The Shutdown Handler Call monitoring event may not be generated depending on timing in the shutdown handler. You may be able to work around this issue by adding a delay at the end of the shutdown handler routine. (5111)
Application Development
- A memory leak occurs when C Runtime functions are used within threads that are created and destroyed using CreateThread and ExitThread. This is an issue with the Microsoft C Runtime library’s thread management. See the TechNote Memory Leak Occurs with the Microsoft C Runtime when CreateThread and ExitThread are Used for more information. (4440)
- For systems running French versions of supported Windows operating systems, StampTool fails to stamp the resulting binary when a RTX64 project is built in a folder or with a filename that includes Unicode characters having code points above 255 (e.g., Hebrew characters). (3976)
- Compiler warning set to level 4 generates C4564 when using C++ managed code. (4813)
SDK
- fread skips a character when used with Visual Studio 2015. For more information on this issue, see the Microsoft article at https://connect.microsoft.com/VisualStudio/feedback/details/1902345/regression-fread-on-a-pipe-drops-some-newlines (4536)