QNX Technical Articles
QNX® Software Development Platform 6.5.0 SP1 ARMv7 Kernel & Libc Patch (Patch ID 650SP1-50): Release Notes
Date of this edition: July 08, 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).
![]() |
We recommend that you install the
ARMv7 Kernel & Libc Patch (Patch ID 650SP1-51) instead of this patch.
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/armle-v7/lib/libc.so
- target/qnx6/armle-v7/lib/libcS.a
- target/qnx6/armle-v7/lib/libc.a
- target/qnx6/armle-v7/lib/libc.so.3
- target/qnx6/armle-v7/usr/sbin/tracelogger
- target/qnx6/armle-v7/boot/sys/procnto-instr
- target/qnx6/armle-v7/boot/sys/libmod_aps.a
- target/qnx6/armle-v7/boot/sys/procnto-smp-instr
- target/qnx6/armle-v7/boot/sys/procnto
- target/qnx6/armle-v7/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 |
| VFP support is now provided on the Qualcomm Scorpion. | J169891 |
| Fixed an issue with available virtual address range on ARM. | J170095 |
| Avoided a kernel crash from multiple core dump requests at the same time if the newly created thread dies right away. | J170591 |
| 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 case with sigsetjmp() on armle where a failure occurred with either illegal instruction or else segmentation violation. | J172901 |
| 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 |
| Prevented an SMP kernel crash on single-core systems. | J186673 |
| Updated SSP cookie generation and code layout support. | J188478 |
| Fixed a race condition between proc_pathmgr_read() and updates to the mount directory. | J193115 |
| Added a data barrier instruction before clearing the in-kernel bits so that the CPU entering the kernel sees all the data stores from the CPU leaving the kernel. | J196083 |
| Fixed a floating-point comparison issue by adding a memory barrier prior to clearing thp->fpudata bits. | J196578 |
| Fixed a crash/hang caused by the interrupt nesting count being set incorrectly in some cases. | J198008 |
| 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 a preemption scenario that caused a SIGSEGV when you used procnto's -ae option. | J198589 |
| 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 |
| Provided devb-sdmmc support on TI OMAP5. | J351757 |
| Added workarounds for various errata affecting TI OMAP5 boards. | J351974 |
| 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 |
| Fixed DebugKDBreak for the ARMv7 kernel so that the debugger is invoked instead of SIGTRAP. | J383685 |
| 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 |
| Added a data barrier instruction before clearing the in-kernel bits so that the CPU entering the kernel sees all the data stores from the CPU leaving the kernel. | J489772 |
| Added a data barrier instruction before clearing the in-kernel bits so that the CPU entering the kernel sees all the data stores from the CPU leaving the kernel. | J492213 |
| 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 |
| Added a data barrier instruction before clearing the in-kernel bits so that the CPU entering the kernel sees all the data stores from the CPU leaving the kernel. | J501311 |
| Removed the restriction on cascade interrupt level value (ARM). | J503394 |
| Prevented times() from crashing if sysconf() returns -1. It may do so if it gets interrupted by a signal. | J520572 |
| Fixed memory leaks detected by librcheck on processes. | J532166 |
| Optimized the performance of mmap() with MAP_NOINIT. | J545809 |
| Fixed a crash/hang caused by the interrupt nesting count being set incorrectly in some cases. | J545814 |
| 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 |
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.
