QNX Technical Articles
QNX® Software Development Platform 6.5.0 SP1 x86 Kernel & Libc Patch (Patch ID 650SP1-51): Release Notes
Date of this edition: July 10, 2014
Target OS: This patch is compatible with targets that are running QNX® Neutrino® 6.5.0 SP1.
Host OS: In order to apply this patch, you must have installed the QNX Software Development Platform 6.5.0 with Service Pack 1:
- as a self-hosted QNX Neutrino development system
- or on one of the following development hosts:
- Microsoft Windows 7 Professional 32- and 64-bit, Vista Business 32- and 64-bit, XP Professional SP3, or 2000 SP4
- Linux Red Hat Enterprise Linux 5.4 Desktop 32- and 64-bit, Red Hat Fedora 12, Ubuntu Workstation 9.10, 11.04, and 12.04 32- and 64-bit, or openSUSE 11.2
You must also have installed the applypatch Patch (Patch ID 3792).
![]() |
If you've already installed the
x86 Kernel & Libc Patch (Patch ID 650SP1-50),
we recommend that you uninstall it and install this patch instead.
For the most up-to-date version of these notes, log in to your myQNX account, and then go to the Download area of www.qnx.com. |
Contents...
Throughout this document, you may see reference numbers associated with particular issues, changes, etc. When corresponding with our Technical Support staff about a given issue, please quote the relevant reference number. You might also find the reference numbers useful for tracking issues as they become fixed.
What's in this patch?
This patch provides fixes for a number of issues found in libc and the kernel. It updates the following files:
- target/qnx6/x86/lib/libc.so
- target/qnx6/x86/lib/libcS.a
- target/qnx6/x86/lib/libc.a
- target/qnx6/x86/lib/libc.so.3
- target/qnx6/x86/usr/sbin/tracelogger
- target/qnx6/x86/boot/sys/procnto-instr
- target/qnx6/x86/boot/sys/libmod_aps.a
- target/qnx6/x86/boot/sys/procnto-smp-instr
- target/qnx6/x86/boot/sys/procnto
- target/qnx6/x86/boot/sys/procnto-smp
List of fixes
The problems fixed in this patch include the following:
| Change | Ref # |
|---|---|
| Fixed an issue with spinlock initialization and also made a correction so that all platforms use CLOCKCYCLES_INCR_BIT. | J162702 |
| Fixed an issue with resched_ppg() on SMP APS variants so that it checks the active runmask before selecting which thread to run. | J166553 |
| Guarded against a race condition where two threads access the same executable page at almost the same time. | J169809 |
| Fixed an issue with available virtual address range on ARM. | J170095 |
| Fixed a scenario where a deadlock could occur due to a race between fclose() and cancelling a thread doing fflush() on the same file. | J171130 |
| Corrected an “out of critical budget” test for APS. | J172021 |
| Fixed a case where debugging signals could cause the debugging session to stop halting at breakpoints. | J172459 |
| Fixed a race condition between two open() requests. | J172919 |
| Added checks to ensure that the TimerTimeout() flags are maintained across multiple lock mutex attempts. | J173200 |
| Fixed an issue where killing a process group didn't necessarily kill all processes in the group. | J173537 |
| Fixed a race condition where NTO_DEBUG_GET_FPREG or NTO_DEBUG_SET_FPREG could cause a kernel crash on SMP targets. | J173646 |
| Fixed an issue where an interrupted MsgReply() could cause a following MsgRead() to not work. | J174186 |
| Added error checking and correction in the case of a memory-mapped file page initialization error. | J174239 |
| Fixed a potential race condition in iofunc_attr_unlock() that could cause multithreaded resource manager threads to stay mutex-blocked forever. | J174245 |
| Negative values in _SYS_SUB_GET and _SYS_SUB_SET messages are now properly handled. | J174343 |
| The access() function now correctly calls close() when an error occurs. | J175160 |
| Fixed an issue where cached mappings were set up for non-RAM paddrs. | J177204 |
| Prevent a crash due to vfork'd child termination during loading process. | J178320 |
| Added additional alignment checks to address a potential blocking issue in posix_memalign(). | J184371 |
| Added additional alignment checks to address a potential blocking issue in posix_memalign(). | J184784 |
| Fixed a race condition in iofunc_attr_lock() and iofunc_attr_unlock(). | J184801 |
| Guarded against a race condition where two threads access the same executable page at almost the same time. | J185572 |
| Fixes in white-space directives handling by sscanf(). | J186672 |
| Updated SSP cookie generation and code layout support. | J188478 |
| Fixed a race condition between proc_pathmgr_read() and updates to the mount directory. | J193115 |
| Fixed a race condition in iofunc_attr_lock() and iofunc_attr_unlock(). | J198167 |
| Fixes in white-space directives handling by sscanf(). | J198308 |
| Guarded against race condition where two threads access the same executable page at almost the same time. | J198523 |
| Fixed an off-by-one error on freeing threadname storage. Fixed bad thread names issues. | J201177 |
| Fixed race conditions between freeing a process and obtaining a lock on it. | J201202 |
| Fixed race conditions between freeing a process and obtaining a lock on it. | J202141 |
| Fixes to ensure that error paths in spawn/fork processing don't MsgError() a client process twice. | J202159 |
| Fixed a case where shared library load events weren't always emitted. | J203028 |
| Fixed an issue in MsgReceive() where there was a possibility of attempting a transfer from a client thread sender that already had a page fault pulse in flight. | J378367 |
| Replaced a read-write lock with a mutex in proc_wlock_adp() so that priority is inherited when a higher priority client thread blocks on the lock. | J382440 |
| A server thread no longer loses its priority boost when it unlocks a mutex that it acquired before the priority boost. | J382708 |
| Fixed an SMP race condition between a long and a short message of equal priority on the same channel that could happen if both were preempted. | J382718 |
| The pthread_mutex_timedlock() function's behavior is now compliant with POSIX. | J382795 |
| Fixed an issue in recomp() with search patterns. | J382900 |
| Fixed an issue where a .bss in a separate LOAD segment caused a crash in ldd on binary load. | J383076 |
| Fixed an issue where a client thread was unexpectedly unblocked when an unblock pulse was received. | J383419 |
| Fixed a case where posix_memalign() failed to return a properly aligned pointer. | J383579 |
| Optimized tzset() by halving the number of confstr() calls. | J383747 |
| Added protection to prevent libc timezone functions from causing heap corruption / segfault. | J384410 |
| Fixed a race condition between threads in a terminating process on an NVIDIA Tegra3. | J384803 |
| The libmod_aps module from a non-instrumented variant now works correctly with the instrumented kernel. | J423322 |
| Consolidated transitive priority inheritance. | J425798 |
| Added a write memory barrier at the end of the clock interrupt handler to prevent a kernel crash. | J426139 |
| Fixed issue with terminating a process via the IDE. | J447220 |
| Prevented the use of an already freed connection structure for rcvinfo. | J448094 |
| The ARMLE-v7 smp kernel now allows a power callout. | J468665 |
| Fixed a race condition between proc_pathmgr_read() and updates to the mount directory. | J492276 |
| Addressed the case of priority inversion with a single-threaded resource manager REPLY-blocked on another resource manager. | J492855 |
| Fixed a scenario where a double reply on the same message from different threads on different cores was causing a kernel crash. | J500861 |
| Prevented times() from crashing if sysconf() returns -1. It may do so if it gets interrupted by a signal. | J520572 |
| Fixed the return values for _smp_cmpxchg() and _smp_xchg() to be unsigned. | J523623 |
| Fixed memory leaks detected by librcheck on processes. | J532166 |
| Optimized the performance of mmap() with MAP_NOINIT. | J545809 |
| Performance improvement: write-combining for SHMEM_LAZYWRITE using PAT for x86. | J545860 |
| Login: only 8 characters of the password were being validated. We now provide more current options for password hashing. Note that changes to crypt() to support newer encryption algorithms require any utilities/services using crypt() to link against liblogin. | J545865 |
| Fixed a scenario in APS where a lower-priority thread could continue running after a higher-priority thread became ready. | J550561 |
| Add a missing unlock operation to the error return path for DCMD_PROC_MAPDEBUG. | J576235 |
| Prevented a timeout during low memory testing. | J600166 |
| Cleaned up a mutex in the failure case to prevent ENOMEM on fork() calls. | J608009 |
| Round-robin scheduling now works correctly when you start procnto with the -p option. | J692810 |
Known issues
None currently known.
Technical support
If you have any questions, comments, or problems with a QNX product, please contact Technical Support. For more information, see the How to Get Help chapter of the Welcome to the QNX Software Development Platform guide or visit our website, www.qnx.com.
