Home
Developer Resources
Technical Articles

QNX Technical Articles

QNX® Momentics® Development Suite 6.3.0 Service Pack 3 Professional and Standard Editions Release Notes

Date of this edition: November 18, 2014


Note: Changes to these notes since October 31, 2006 are highlighted below with this icon: New!

Target OS: QNX® Neutrino® 6.3.0 SP3

Host OS: Microsoft Windows Vista, XP SP2, 2000 SP4, or NT SP6a; Sun Solaris 7, 8, 9, or 10; QNX® Neutrino® 6.3.0 or later; Linux Red Hat 8 or 9, Red Hat Enterprise WS 3 or 4, Red Hat Fedora Core 3 or 4, Debian 3.1, or SUSE 10


Note:
  • We're deprecating support for the following:
    • Linux Red Hat 8 and 9
    • Solaris 7, 8, and 9
    • Windows NT

    QNX Momentics 6.3 is the last release that you can install on these hosts.

  • QNX Neutrino 6.3 supports only the new flash filesystem (FFS3). The older flash filesystem (FFS2) has been discontinued.

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.

Some of the items in these release notes apply only to certain editions of QNX Momentics, and are marked accordingly using “PE” (Professional Edition) and “SE” (Standard Edition) abbreviations in parentheses beside the items. Items that aren't marked apply to all editions.

For the most up-to-date version of these notes, go to our website, www.qnx.com, log into your myQNX account, and then go to the Download Center.


Caution: Make sure that Plug and Play OS is disabled in the BIOS before you run QNX Neutrino self-hosted.

Main features of QNX Momentics 6.3.0 Service Pack 3

QNX Momentics 6.3.0 Service Pack 3 is a roll-up release that incorporates 6.3.0, Service Pack 1, Service Pack 2, Documentation Update 1.0.0, and the following patches:

Name ID
Network Drivers Patch 153
Debug Malloc Library Patch 155
Graphics Driver Patches 171, 268
USB Driver Patch 189
qconfig Patch 205
Photon Patch for Windows 209
Hardware Update Patch 214
zip and unzip for Windows and Solaris Hosts Patch 228
Photon Security Patch 232
Maintenance Patch for QNX Momentics 6.3.0 SP2 Network Protocol Components 234
ARMLE, ARMBE, and SHLE gcc libraries for Windows Patch 238
Photon Screensaver Patch for the QNX Neutrino Core OS 6.3.2 241
Maintenance Patch for Filesystems 245
qnx_cp for Solaris Patch 251
su and passwd Patch 270
IDE System Builder Patch 277
Device Enumeration Patch 278
cpp0 2.95.3 Patch 280
qnxactivate Patch 282
BSP Utilities Patch 283
io-graphics Patch 290
Self-hosted QNX Neutrino Installation and Booting Patch 291
startup-bios, rtc, and pci-bios Patch 311
Documentation Patch 313
pci and pci-bios Patch 326
awk for Linux and Solaris Patch 332
qaudit.sh Patch 338
io-graphics Patch 344
input-cfg Patch 346
devg-i830.so Patch 347
Device Enumerator Patch 359
Block Drivers Patch 366
RCS ID Header File Patch 373

Here are the main new features in QNX Momentics 6.3.0 SP3:


Note: For up-to-date information on what's compatible between the latest two versions, see 6.3.0 and 6.2.1 Compatibility, available on our website.

QNX Momentics Development Suite

  • GCC 3.3.5 support — enhanced C++ ABI (smaller footprints); improved code-generation/performance (especially for ARM/XScale); compatible with third-party offerings (e.g. Intel icc compiler for x86).
  • Simplified installation — we're now using InstallShield for all hosts except QNX Neutrino (which installs via tarballs and shell scripts). The QNX Software Installer is now used only for third-party software.
  • We've improved the way that you install and boot a self-hosted QNX Neutrino system. The improvements include:
    • support for USB keyboards and mice (Ref# 23671, 25445, 39555)
    • support for SATA disks (Ref# 38956)
    • the ability to update the drivers on your system (Ref# 39248)
    • the ability to install QNX Neutrino in partitions of type 77, 78, or 79 (Ref# 39387)
    • displaying drive identifiers when you're asked to choose a drive (Ref# 39187)
    • the ability to install QNX Neutrino from a second CD drive (Ref# 18982)

    For more information, see the installation note for Neutrino hosts.

  • Version coexistence — you can install 6.3.0 and still build 6.2.1 target systems. (See the section below.)
  • Enhanced IDE:
    • v2.1.2 of the Eclipse framework
    • v1.2 of the Eclipse C/C++ Development Tools (CDT) framework
    • Code Coverage plugin
    • Enhanced System Profiler plugin (new editor; event statistics views)
    • Better integrated System Builder plugin (BSP integration; Builder projects can be built outside the IDE; Builder-specific navigator; support for adding directories; independent EFS generation)
    • Numerous other enhancements (improved new-project wizard; more flexible project layouts; configurable keyboard shortcuts; improved build control; faster navigation; easier launch facility; and more).
  • BSPs (binaries/bootable images) for several platforms.

    Note: For 6.3 and beyond, BSPs are available only from our website.

  • In QNX Momentics 6.3.0, separately packaged technology development kits (TDKs) augment the base Neutrino OS with specialized, value-added technologies.

    The base QNX Momentics suite includes the operating system and services required for most embedded systems (e.g. filesystems, GUI, IP networking technologies). The value-added TDKs, which are available from the Download Center on our website, help you control costs and achieve overall lower TCO for QNX Momentics-based systems.

    The TDKs currently include:

    • Adaptive Partitioning
    • Advanced Graphics
    • Critical Process Monitoring
    • Extended Networking
    • Flash Filesystem & Embedding
    • Multimedia
    • Multicore
    • Web Browser

    For more details, please contact your QNX sales representative.


Note: With 6.3.0 SP3, some networking utilities and services have been moved from the base product to the Extended Networking TDK:

Managers

  • npm-tcpip-v6.so
  • dhcpd
  • dhcprelay
  • routed
  • route6d
  • rtadvd
  • rtsold
  • snmpd
  • snmptrapd
  • bootpd
  • mrouted
  • named
  • named-xfer

Utilities

  • ndp
  • ping6
  • traceroute6
  • racoon
  • setkey
  • snmpbulkwalk
  • snmpget
  • snmpgetnext
  • snmpnetstat
  • snmpset
  • snmpstatus
  • snmptest
  • snmptranslate
  • snmptrap
  • snmpwalk

Libraries

  • libsnmp

QNX Neutrino RTOS

  • USB 2.0 stack (with mass storage class driver)
  • Updated TCP/IP stack to NetBSD 1.6 source base
  • SCTP protocol support (in the Extended Networking TDK)
  • Asynchronous messaging (experimental implementation — may change)
  • Qnet — new lightweight architecture featuring improved throughput, better reliability, and support for multiple simultaneous interfaces over various media.
  • Global name service for Qnet
  • IPFilter — for NAT and IP filtering (firewall) support (in the Extended Networking TDK)
  • Multilink PPP
  • NTP (Network Time Protocol) client/server
  • Process resource limits
  • Performance Counter API
  • Standardized (unpublished) performance benchmarks and interpretation documents
  • Added support for PowerPC Book E Architectures (IBM440 and Freescale PowerQUICC-III)
  • Added support for physical addresses above 4 GB on PowerPC, MIPS, and x86.
  • New flash filesystem offers improved resistance to power-loss corruption (in Flash Filesystems & Embedding TDK).
  • The OS now supports 256 priority levels.
  • The io-net, io-char, and io-graphics I/O subsystems have been enhanced to support future power-management features. Applications developed with QNX Momentics 6.3.0 will continue to work. The new functionality will be made fully available in a future release of Power Management.
  • mkimage can now parse flash filesystem version 3 images. (Ref# 20386)

Note: The OS images that we ship start procnto with the -v option, so that the kernel provides you with more information when a signal terminates a process.

Photon microGUI

  • Extensible widget model (greater reuse of implementation code; widget layout managers; architectural footprint enhancements)
  • GB18030-2000 Chinese character encoding
  • 3D graphics (accelerated, OpenGL-based).
  • New multimedia playback features (player/browser plugin using new multimedia framework; new readers/playback formats (MIDI; CD audio).
  • Various other enhancements (io-graphics handles commands via config file; multi-headed displays; most Pg* functions are context-specific; added security to Photon clipboard [note that clipboard files are no longer compatible between 6.3.0 and previous releases]; clipboard changes cause a new event to be emitted; ped now supports drag and drop from the file manager; added support for the SGI image file format; and more).
  • The default permissions on /dev/photon are now 600, but you can use chmod to change the permissions if you want to let other people look at your Photon session and inject keys into your pterms.

Note: The Photon Application Builder (PhAB) is available only for Windows and QNX Neutrino hosts.

If you're using a Linux or Solaris host, but you still want to use PhAB, consider installing a QNX Neutrino host to a second partition or an x86 simulator (e.g. VMware).


A word about coexistence

The QNX Momentics 6.3.0 development suite lets you install and work with multiple versions of Neutrino (from 6.2.1 and later). Whether you're using the command line or the IDE, you can choose which version of the OS to build programs for.

When you install QNX Momentics, you get a set of configuration files that indicate where you've installed the software. The QNX_CONFIGURATION environment variable stores the location of the configuration files for the installed versions of Neutrino; on a self-hosted Neutrino machine, the default is /etc/qnx.

QWinCfg for Windows hosts

On Windows hosts, you'll find a configuration program (QWinCfg) for switching between versions of QNX Momentics.

You launch QWinCfg via the start menu (e.g. All Programs-->QNX Momentics 6.3.0-->Configuration).

For details on using QWinCfg, see its entry in the Utilities Reference.

qconfig utility for non-Windows hosts

If you're using the command-line tools, use the qconfig utility to configure your machine to use a specific version of Neutrino:

  • If you run it without any options, qconfig lists the versions that are installed on your machine.
  • If you specify the -e option, you can set up the environment for building software for a specific version of the OS. For example, if you're using the Korn shell (ksh), you can configure your machine like this:
    eval `qconfig -n "QNX 6.3.0 Install" -e`

Note: In the above command, you must use the “back tick” character (`), not the single quote character (').

When you start the IDE, it uses your current qconfig choice as the default version of the OS; if you haven't chosen a version, the IDE chooses an entry from the directory identified by QNX_CONFIGURATION. If you want to override the IDE's choice, you can choose the appropriate build target. (For more information, see the section “Version coexistence” in the Concepts chapter of the IDE User's Guide.)


Note: Coexistence of 6.3.0 and 6.2.1 is supported only on Windows and Solaris hosts.

Environment variables

Neutrino uses these environment variables to locate files on the host machine:

QNX_HOST
The location of host-specific files.
QNX_TARGET
The location of target-specific files on the host machine.
QNX_CONFIGURATION
The location of the qconfig configuration files.
MAKEFLAGS
The location of included *.mk files.

The qconfig utility sets these variables according to the version of QNX Momentics that you specified.

What's new in QNX Momentics 6.3.0 SP3?

QNX Momentics 6.3.0 SP3 includes changes in these areas:


Note: You'll find a list of fixes at the end of this document.

What's new: Board Support Packages and Driver Development Kits

  • BSPs and DDKs are now packaged separately as standalone archives. The documentation has been changed to reflect this.
  • BSPs are available only from our website. (Ref# 18522)
  • The IDE now includes a BSP Perspective. To build a BSP, select File-->Import...-->QNX Board Support Package and follow the wizard's instructions.

    Note: You can use this import facility only for 6.3 (and later) BSPs.

  • The PowerPC startup- programs now have a -E option. For details, see the note re: PPC startups under Core OS below.
  • QNX Neutrino now supports SH7770 and SH7780 CPUs from Renesas. We now provide Board Support Packages (BSPs) for the Renesas Lanbic and EDOSK 7780. There's also support for running the SH4A in 32-bit physical mode to let you use the 512 MB PCI window.

    Note: You need to relink any SH4 binaries that you linked with QNX Neutrino 6.2.1 or earlier if you want to run them on SH4A targets. For more information, see Known issues: BSPs, DDKs, and TDKs,” below.

  • We now ship these new utilities:
    • packagebsp
    • setupbsp

    These utilities support a new, simplified way of packaging and installing Board Support Packages. We plan to provide a technote that describes how to use these utilities. (Ref# 28858)


Note: For more information on BSPs and DDKs, see their installation notes and release notes.

What's new: Compiler and tools

  • We changed the configure search paths for editors to look for vi first, then vim and others.
  • Fixed the MIPS issue where linked-against static objects were compiled with older versions of the binutils.
  • Fixed a problem where the wrong installation directory showed up in pinfo files.
  • Fixed some quoting issues under Windows. Now, output the mkasmoff -f option only if it's needed.
  • The import library gets installed in a place that gets picked up during linking, even when the shared object is going to a directory meant for runtime only.
  • Changed the usemsg -o option to spawn ntomulti-objcopy because the unprefixed version (objcopy) doesn't exist on all hosts.
  • Introduced a proper Windows fix to prevent usemsg from calling ldrel.
  • Added the ability to specify a path in default files (e.g. gcc/2.95.3,gcc_ntox86)
  • Ensured that solib-absolute-prefix isn't initialized if it has already been set.
  • Due to the new location of the default C++ libraries, you must either:
    • ensure that boot images that contain C++ shared objects include the explicit “versioned” .so file (e.g. libcpp.so.4 rather than just libcpp.so)

      or:

    • specify the appropriate GCC version directory in the library search paths in your buildfiles.
bison
On self-hosted Neutrino systems, there's now a symbolic link from /usr/share/bison to /usr/qnx630/host/qnx6/x86/usr/share/bison (Ref# 18563)
ln-w
This utility now implements the functionality of symbolic links; there's a new -s option for creating them. (Ref# 21924)
gcc 2.95.3
  • The libgcc.a for gcc 2.95.3 didn't correctly initialize the Floating Point Status/Control Register (fpscr) support code on SH4 for QNX Neutrino. (Ref# 21275)
    • Workaround: Create static archives instead of shared objects or DLLs, and link statically. Or, for user-defined shared libraries built with gcc 3.3.5, declare a constructor that initializes the fpscr support code correctly. For example:
      extern unsigned __fpscr_values[];
      static void on_lib_load(void) __attribute__((constructor));
      
      static void on_lib_load(void) {
        __fpscr_values[0] = 0x00040004;
        __fpscr_values[1] = 0x000c0004;
      }
    • Solution: Apply SP3 and relink all shared objects that use the fpscr.

    You can determine which shared objects use the fpscr by running this command:

    ntosh-objdump -D lib_my_dll.so | grep fpscr_values

    Since this bug also affects SHLE system shared libraries, you should rebuild any target systems that use any of the shared libraries in SP3, to make sure that the fixed shared libraries are used in the boot image and the target file system.

    The system shared libraries under $QNX_TARGET/shle that are affected are:

    • lib/gcc/3.3.5/libcpp.so
    • lib/gcc/3.3.5/libecpp-ne.so
    • lib/gcc/3.3.5/libcpp-ne.so
    • lib/gcc/2.95.3/libcpp.so
    • lib/gcc/2.95.3/libecpp.so
    • lib/gcc/2.95.3/libcpp-ne.so
    • lib/dll/devn-dm9102.so
    • lib/dll/devn-ne2000.so
    • lib/dll/devn-speedo.so
    • lib/dll/devg-coral.so
    • lib/dll/devg-rotate270.so
    • lib/dll/devg-smi5xx.so
    • lib/dll/devg-tvia.so
    • lib/dll/deva-util-restore.so
    • lib/dll/npm-ttcpip.so
    • lib/dll/npm-tcpip-v4.so
    • lib/dll/npm-pppmgr.so
    • lib/dll/npm-qnet-l4_lite.so
    • lib/dll/npm-qnet-compat.so
    • lib/dll/npm-tcpip.so
    • lib/dll/npm-qnet.so
    • lib/dll/fs-ext2.so
    • lib/libasound.so.2
    • lib/libusbdi.so.2
    • lib/libbessel.so.1
    • lib/libc.so.2
    • lib/libm.so.2
    • lib/libsocket.so.2
    • usr/lib/malloc_g/libmalloc.so.2
    • usr/lib/librpc.so.2
    • lib/dll/mmedia/oggi_decoder.so
    • lib/dll/mmedia/midi_parser.so
    • lib/dll/mmedia/audio_writer.so
    • lib/dll/gri-photon.so
    • lib/dll/gri-gl.so
    • lib/dll/gl/gl-mesa.so
    • lib/dll/gl/gl-ph.so
    • lib/dll/pi_io_png.so
    • lib/dll/vpi.so
    • lib/dll/phfont.so
    • lib/libFF-T2K.so.2
    • lib/libFF-T2K.so
    • usr/lib/libavcodec.so.1
    • usr/lib/libavcodec.so
    • usr/lib/libvorbis.so.1
    • usr/lib/libxing_audio.so.1
    • usr/lib/libvorbis.so
    • usr/lib/libxing_audio.so
    • usr/lib/libph.so.3
    • usr/lib/libAp.so.3
    • usr/lib/libgri.so.2
    • usr/lib/libphrender.so.2
    • usr/lib/libGLU.so.4
    • usr/lib/libGL.so.3
    • usr/lib/libmedia.so.2
    • usr/lib/libjpeg.so.3
    • usr/lib/libph.so
    • usr/lib/libAp.so
    • usr/lib/libgri.so
    • usr/lib/libphrender.so
    • usr/lib/libGLU.so
    • usr/lib/libGL.so
    • usr/lib/libmedia.so
    • usr/lib/libjpeg.so
    • usr/photon/dll/shelf/pload.so
    • usr/photon/dll/shelf/volume.so
    • lib/gcc/3.3.5/libstdc++.so
    • lib/libstdc++.so.5.0.5
    • lib/libstdc++.so.5

    The system shared libraries under $QNX_HOST/usr/lib/gcc-lib/ntosh/2.95.3/ml that are affected are:

    • libgcc.a
    • fpic/libgcc.a
    • fpic/fexceptions/libgcc.a
    • fexceptions/libgcc.a

    The system shared libraries under $QNX_HOST/usr/lib/gcc-lib/sh-unknown-nto-qnx6.3.0/3.3.5 that are affected are:

    • libgcc.a
    • pic/libgcc.a
  • cpp0, the preprocessor for gcc 2.95.3, can now handle long filenames when searching the paths for include files. (Ref# 25322)
gcc
  • 6.3.0 includes both gcc 2.95.3 and 3.3.5. Note that the newer version contains some alignment changes and adjustments. For details, see the 6.3.0 and 6.2.1 Compatibility note posted on our website.
  • gcc-2.95.3 is the default compiler version. To get the default compiler, simply run:

    nto$CPU-gcc

    or:

    qcc -Vgcc_nto$CPU

    To get a specific version, run:

    nto$CPU-gcc-$version

    or:

    qcc -V$version,gcc_nto$CPU

    Examples:

    Command Compiler version
    ntoarm-gcc 2.95.3
    ntoarm-gcc-2.95.3 2.95.3
    ntoarm-gcc-3.3.5 3.3.5
    qcc -Vgcc_ntomipsle 2.95.3
    qcc -V2.95.3,gcc_ntomipsle 2.95.3
    qcc -V3.3.5,gcc_ntomipsle 3.3.5

    Note: To change the default compiler in the IDE, use the Compiler Tab in the project Properties dialog.

  • GCC 3.3.5 has deprecated the pre-processor cpp0; this functionality is now merged in the compiler cc1.
  • The binutils have lost their generic names (e.g. objcopy is now ntomulti-objcopy or ntox86-objcopy).
ld
Our linker used to behave such that any path specified with the -L option would also be added to the list of paths to be searched for shared objects.

This behavior is being deprecated; it will be removed in a future release. The correct method is to use the -rpath-link option.

ldrel
If you run ldrel on a binary that contains segment relocations, the relocations will be stripped. If you don't want them stripped, specify the -r option.
make
If you're using the QNX recursive makefile hierarchy, make needs to be able to find the makefile fragments (.mk files) with the rules for building QNX projects. These are stored in $QNX_TARGET/usr/include.

The environment variable MAKEFLAGS gives extra command-line flags to make; by setting it to -I$QNX_TARGET/usr/include, these .mk files will be found.


Note: Microsoft's nmake also uses MAKEFLAGS, so if there's a mixed environment, you can use GNUMAKEFLAGS, which is an extension to standard make and exists only in the QNX-supplied version.

mkifs
  • Now has a -n option that forces all modification times of inline files to be 0. This enables the checksum value to be repeated on subsequent builds.
  • The mkifs program attempts to shrink the size of executables and shared objects that it puts in the image filesystem by removing data that isn't absolutely needed for execution of the program. You can disable this by using the +raw attribute.

    Starting with 6.3.0, mkifs keeps the following ELF sections by default, even without the +raw attribute:

    • QNX_Phab
    • QNX_info
    • QNX_usage

    You can use the new -s command-line option to name sections that you want mkifs to keep.


    Note: If you specify -s, only the sections that you specify are kept. You need to explicitly specify the above names if you want to keep them as well.

qcc
New! We're no longer planning to deprecate the -M option. In 6.4, qcc will continue to use -M for generating a mapfile. (Ref# 26743)
qnx_cp
The -c option to qnx_cp now works correctly on Solaris hosts. (Ref# 38615)
zip and unzip
You need zip and unzip to install some of our products. SP3 installs these commands for Windows and Solaris hosts; they're already included on QNX Neutrino and Linux hosts. (Ref# 29419)

What's new: Core OS

Asynchronous messaging
Asynchronous messaging is a communication model that relies on a store-and-forward technique. Compared to regular reply-based communication in client-server systems, the messaging infrastructure ensures delivery, even if a participant is temporarily offline, busy, or unobtainable. In this technique, the sender doesn't need a response from the recipient. This provides more flexibility and scalability as the senders and receivers are decoupled and are no longer required to execute in lockstep.

Note: Asynchronous messaging is an experimental feature in 6.3.0; its implementation may change. For more information, see the Asynchronous Messaging technote in the online documentation, as well as the asyncmsg_*() entries in the Neutrino Library Reference.

C++
Some class definitions are stricter in 6.3.0. For example, the set class requires unique keys; you can no longer modify keys that you've already added to the set, because you could create duplicates. This change could cause code that compiled on 6.2.1 not to compile on 6.3.0. (Ref# 21773)
dinit
In 6.3, dinit now creates long filenames by default. You can disable support for long filenames by specifying the -N option. (Ref# 17642)

Note: This is the reverse of the behavior of 6.2.1; the -N option formerly enabled support for long filenames.

fcntl()
We fixed problems with side-channel connections and errno values reported. (Ref# 16959, 16960)

Note: The OS now prevents _NTO_SIDE_CHANNEL connections from being duplicated (via dup(), dup2(), or fcntl(F_DUPFD)). This is to maintain consistency with the concept of side-channels forming a separate file-descriptor space that isn't subject to normal process-inheritance rules.

If you are dup()ing side-channels, then they must now be attached as normal file descriptors.

Note also that the low-level ConnectAttach() doesn't allow the specification of a specific side-channel index, which is required by dup2().


FD_SETSIZE
The value of FD_SETSIZE has changed from 32 to 256. This affects the size of the fd_set objects that you pass to select().

This means that by default the highest allowable fd number for FD_SET(fd, &set) is 255.

Any use of fd_set within data structures will therefore cause a change in structure size, so you should do a global recompile.


Note: The global recompile should include all application code, as well as library code that would be referencing fd_set or structures containing fd_set. If you don't recompile, you may see random corruption and crashes.

To make the value higher, #define FD_SETSIZE before including <sys/select.h>. But make sure this is done consistently throughout your modules.

If you don't want to cause a global compile, you can #define FD_SETSIZE 32 before including <sys/select.h> (or -DFD_SETSIZE=32 on the command line) to set it back to the old size, but make sure this setting is consistently applied to all your code.

procnto*
  • A problem with instrumentation could have caused a kernel stack overflow when instrumentation was turned on in SH4 platforms. We moved the instrumentation event after the shadow mask snapshot. The event itself was modifying the SR register before we could snapshot it properly, enabling interrupts before they should have been. (Ref# 21039)
  • Single-stepping into a kernel call formerly could cause the kernel call to fail with an ENOSYS. On taking a debug exception on entering the kernel, the EAX register holding the syscall number was corrupted. When returning to the normal code path for kernel entry, the syscall number was invalid, resulting in a bad kernel call.

    This could have shown up when you used gdb to do a source-line step over a kernel call (or a library function that did a kernel call e.g. mmap()). (Ref# 19351)

  • Addressed an x86 issue where under certain conditions, loading the data segment register from a user process with another valid segment descriptor could cause the kernel to crash. The scope of the issue is extremely limited, as the segment descriptor must have already been an existing legitimate segment (i.e. code segment). Assembly language inside the application itself must also have been explicitly coded, as the compiler doesn't generate code that exposes this issue. (Ref# 18836)
  • Fixed an issue where a mmap() with a bad FD would result in a proc dump (due to an issues in the resmgr library), and also addressed the fact that EBADF wasn't being returned. (Ref# 19126)
  • Fixed an issue where, under some circumstances, we could leak physical memory when encountering a low-memory situation on x86 platforms.

    On a large mmap() request, it was possible that during the mapping of that memory, there wouldn't be enough memory to allocate further L2 page tables. On L2 allocation failures, mem_virtual (x86 only) recovers by unmapping the physical address space mapped up to that point. The issue was that we allocated X bytes of physical RAM for the anonymous mapping, but managed to map only N bytes. When we freed N bytes from the page tables, we leaked the remaining XN bytes.

    Now, we reset the page table to zero out the physical addresses, free all the physical memory, and then carry on as usual. (Ref# 11408)

  • Attempting to call msync() on an illegal or unmapped address formerly caused a thread in procnto to lock up and never return. The process's address space was also held locked during this time, which could have caused other messages (such as mmap()) to block. (Ref# 21484)
  • During the creation of a shared object, an error during the initialization (either allocation of backing store memory or reading of contents from the filesystem) used to result in a partially created object. The mmap() function returned a virtual address, but accessing that memory resulted in a SIGSEGV. (Ref# 21521)
  • Using the debug procfs interface to read memory from io-net (with Qnet loaded) on a remote node formerly could lock up, due to a resource deadlock. (Ref# 19697)
Instrumented kernel
The instrumented kernel (procnto-instr) is now the default kernel for QNX Neutrino self-hosted systems.
LD_LIBRARY_PATH
For security reasons, the path(s) specified by LD_LIBRARY_PATH for setuid/setgid binaries will no longer be searched when loading shared objects.

Instead, only the path(s) defined by the _CS_LIBPATH configuration string will be used. You can examine or modify the value of _CS_LIBPATH using the getconf and setconf utilities.


Note: In a buildfile, you can set the initial value of _CS_LIBPATH via the LD_LIBRARY_PATH= part of the procnto line. For example:
PATH=/proc/boot:/bin:/usr/bin LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll procnto

mkefs
On a Windows-hosted development machine, if a mkefs buildfile set the filter to deflate, temporary files of the form sXXX were left in C:\. One temporary file was left for each file compressed. The deflate.exe program now removes these temporary files. (Ref# 19278)
libpm and libpmm
  • The pm_power_mode_t type has changed from 8-bit to 32-bit. This means that all code that includes <sys/pm.h> must be recompiled and relinked against the latest libpm.a and libpmm.a libraries.
  • The prototype for the mode_init() policy function in libpmm changed from a void function to a return type of pm_power_mode_t. This function is now intended to return the initial power mode that the device should be set to. This will typically be PM_MODE_ACTIVE.
pidin
The pidin utility now has a format code (l) to show the last CPU a thread was run on.
poll()
The poll() function has been added. Initial support is limited to the first three event types: POLLRDNORM, POLLWRNORM, and POLLRDBAND.
POSIX Message Queues
The 6.3.0 release ships with an optional alternate implementation of POSIX message queues. This implementation uses the new asynchronous messaging facility of the kernel to buffer the messages within the kernel itself, and eliminates the (context-switching) overheads of using an external server (mqueue) in each message-queue operation, thus greatly improving the performance of POSIX message queues.

Note: In earlier versions of QNX Neutrino, mqueue managed message queues and named semaphores; now, procnto handles named semaphores. If your embedded system uses named semaphores but not message queues, you don't need to include mqueue in your OS image. (Ref# 21823)

By default, the implementation of the mq_*() routines in libc is the old style, using the mqueue server to broker each transaction. To use the new-style implementation, the application(s) must be linked against the libmq library. In a manual build, specify the -l mq option; in automatic/recursive builds, use this setting in your common.mk file:

LIBS += mq

Since both variants adhere to the POSIX 1003.1 Message Passing API, no code-level changes are required in conforming applications.

The new server /sbin/mq must also be started. Although this server is not involved in each mq_send()/mq_receive()/mq_notify() operation, the server is necessary in order to maintain the queue names and create the corresponding kernel message queues. The server also presents all created queues in the /dev/mq/ directory, allowing the use of ls and rm for administration purposes (although the queue contents can't be manipulated via shell utilities). This directory could be changed to union over the directory exported by the old mqueue server by using the mq -N/dev/mqueue option, but this isn't recommended, because it may cause some user-namespace confusion.

The two POSIX message queue implementations may coexist but are disjoint. Queues created with mq_open() from libc aren't accessible to mq_open() from libmq and vice versa. When relinking applications to use the new implementation, be sure to change all affected components. We require such explicit intervention to use the alternate implementation because of potential incompatibilities if your code isn't strictly POSIX conforming.

Message queue descriptors (mqd_t) are no longer file descriptors in the alternate implementation. The POSIX 1003.1 standard makes no claim as to the underlying type of an mqd_t, and provides a specific set of functions to manipulate a message queue and its attributes based on an abstract mqd_t type.

For example, the following code modifies the nonblocking attribute of an open message queue:

mq_getattr(mq, &attr);
attr.mq_flags |= O_NONBLOCK;
mq_setattr(mq, &attr, NULL);

And this example attempts to obtain the count of messages in a queue:

mq_getattr(mq, &attr);
nmsg = attr.mq_curmsgs;

Other examples include the historic interchangeability of mq_send() with write() and of mq_receive() with read(). There's no direct counterpart to select() when used on a mixed set of queues and file descriptors or for the transition from a full queue, although mq_notify() may be used to register an event against a message queue on transition from empty.


Note: The alternate implementation doesn't support the DCMD_MISC_MQSETCLOSEMSG QNX extension to inject a canned message when a queue descriptor is closed.

The default configuration of a message queue created by mq_open(O_CREAT) with a NULL mq_attr structure has been changed, because kernel buffers for the messages are now created up-front rather than on-demand. To create a queue with a specific configuration, simply provide a non-NULL mq_attr. To force the NULL default to match that of the old implementation, use the mq -m1024 -s4096 options (which isn't recommended, because this will consume 4 MB of system memory for each such queue!).

Since the kernel primitives supporting the asynchronous message-queue facilities are non-orthogonal with respect to native QNET networking, the alternate implementation allows for message queues to be manipulated only from the local machine. Of course, distributed access and the network-qualified naming of message queues is undefined by POSIX.

The following table summarizes the main differences between the alternate implementations:

Style Server Library Pathname mqd_t implementation Qnet
Old (6.x) mqueue libc /dev/mqueue/ int (file descriptor) Yes
New (6.3.0) mq libmq /dev/mq/ int (internal index) No
PPC startups
  • All PowerPC startup- programs now have a -E option. The procnto-600 kernel/process manager will no longer save and restore the EAR register (on chips that have it) during context switches, unless the -E switch is specified on the startup command line.
  • The startups now provide better support for chip variations. The new design:
    • minimizes the number of locations that check the PVR SPR
    • minimizes duplication of code
    • makes it easier to leave out unneeded chip-dependent code
    • makes it easier to add support for new CPUs
    • removes the notion of a PVR split into “family” and “member” fields
    • automatically does as much CPU-dependent code as possible in the library
    • handles the Book E MMU.

    With the new design, the following routines are now deprecated (and they spit out a message to that effect if you call them):

    • ppc600_init_features()
    • ppc600_init_caches()
    • ppc600_flush_caches()

    They're handled automatically by the library now.

    Instead of ppc7450_init_l2_cache(), use ppc700_init_l2_cache().

    The startup library now enables instruction and data translation very early on for PPC 600-series chips. It also enables the data cache as well. Doing this speeds up the startup, removes code from the kernel (eventually), and lets us avoid duplicating the same routine over and over again in the startup/boards tree.

    However, basically all the board startups for PPC 600 chips have to be tweaked. Since the MMU is now enabled while startup is running, you can't just in8/out8 or dereference a physical address. Instead, you must use the startup_io_map/startup_memory_map|unmap functions to gain access to the storage.

    Also, callout routines should have a patcher that uses callout_[io/memory]_map[_indirect] calls to map the given physical addresses to a virtual address that the callout code can use. The kernel no longer looks for a “kernel_device” entry in the asinfo section and provides the mapping for you.

    For more information, see the section “PPC chips support” in the Customizing Image Startup Programs chapter of Building Embedded Systems.


    Note: The MIPS startup library also uses the same style of code as with the PPC to deal with chip variations.

  • In all previous PPC implementations, an interrupt would cause the processor to begin executing at a known location in low memory. The init_intrinfo() functions would indicate this by specifying a PPC_EXC_? constant for the cpu_intr_base field in the static array fed to add_interrupt_array() function. That's what you continue to do for boards with non-book E CPUs.

    With Book E processors, interrupts (and all other exceptions as well) no longer start at fixed locations in low memory. Instead, there's a set of IVORs (Interrupt Vector Offset Register). There's a different IVOR for each exception class. Book E describes 16 of them and reserves another 48 for future expansion and implementation use.

    Accordingly, when specifying the interrupt layout to startup you don't use the PPC_EXC_? constants on a Book E CPU. Instead, you identify the particular IVOR register that the processor will use when the interrupt goes off. For example, PPCBKE_SPR_IVOR4 is used for normal external interrupts, PPCBKE_SPR_IVOR10 for decrementor interrupts. See startup/boards/440rb/init_intrinfo.c for an example of what to do on Book E CPUs.

Priority levels
The OS now supports 256 priority levels.

Note that non-root processes can use only priority levels 1 to 63. Only root processes (i.e. those whose effective uid is 0) are allowed to set priorities above 63.

You can change the allowed priority range for non-root processes with the procnto -P option:

procnto -P priority

Here's a summary of the ranges:

Priority level Owner
0 idle thread
1 through priority − 1 non-root or root
priority through 255 root
resmgr_handle_tune()
This is a new function that you can use to tune some of the parameters used internally by the resource manager layer when performing the client fd - ocb mapping. For more information, see the Neutrino Library Reference.
rtc
Neutrino now correctly reads the realtime clock on machines with the ATI IXP200 chipset. (Ref# 28363)
select()
The select() function used to make use of the functions _select_event() and _select_block(). The latter two functions weren't doc'd (other than being prototyped in /usr/include/sys/select.h.)

As of 6.3, these two functions are no longer used internally. However, they've been left in libc for the time being, but may be removed altogether in a future release. For reference, here is the old implementation of select():

/*
Copyright 2001, QNX Software Systems Ltd. All Rights Reserved
 
This source code has been published by QNX Software Systems 
Ltd. (QSSL). However, any use, reproduction, modification,
distribution or transfer of this software, or any software
which includes or is based upon any of this code, is only
permitted under the terms of the QNX Realtime Platform End
User License Agreement (see licensing.qnx.com for details)
or as otherwise expressly authorized by a written license
agreement from QSSL. For more information, please email
licensing@qnx.com.
*/
#include 
#include 
#include 
#include 
#include 
#include 
#include 
 
/*  The routine implements the Unix select call.  When 
 semantics differ the BSD
 semantics defined in APUE (pg. 396-400) are followed.
*/
 
int select(int nfds, fd_set *readfds, fd_set *writefds, 
fd_set *exceptfds, struct timeval *tvptr) 
{
     struct sigevent            event;
     struct timespec            ts;
 
     if(tvptr) 
     {
         if (tvptr->tv_sec < 0 ||   /* don't bother 
                         checking upper ends, roll over will catch really bad overflows */
             tvptr->tv_usec < 0)
             return errno= EINVAL, -1;
         
         ts.tv_sec= tvptr->tv_sec ;
         ts.tv_nsec= tvptr->tv_usec * 1000L ;
     }
 
     event.sigev_notify = SIGEV_SIGNAL_THREAD;
     event.sigev_signo = SIGSELECT;    /* This signal is     
      always SIGBLOCKed */
     /* event.sigev_value will be modified as needed by 
      select_sigevent() */
     event.sigev_code = SI_NOTIFY;
     event.sigev_priority = -1;
 
      return _select_event(nfds, readfds, writefds, exceptfds, tvptr ? &ts : 0, &event, _select_block, 0);
}
Shared memory on ARM processors
The behavior of the SHMCTL_GLOBAL and SHMCTL_PHYS flags has changed for ARM processors.

On ARM, you can use shm_ctl() to create shared memory objects that can be mapped outside the regular process address space to overcome the 32 MB address-space limitation.

In 6.2.1, these objects, when mapped, weren't protected and were potentially accessible via their global virtual addresses from any suitably privileged process. This access was restricted to processes that had performed ThreadCtl(_NTO_TCTL_IO), so in general, this was restricted to drivers or other system processes. The SHMCTL_LOWERPROT flag lowered this restriction so that any user process could potentially access these mappings without having to use ThreadCtl(_NTO_TCTL_IO) first.

In 6.3.0, these global mappings are protected, so that only the process that performed the mmap() of the shared memory object can access it. If you have any code written for 6.2.1 that relies on the implicit access allowed by these global mappings, you must modify it to use the flags to explicitly remove the per-process protection:

  • SHMCTL_PRIV disables the per-process protection and restricts access to processes that have performed a ThreadCtl(_NTO_TCTL_IO). This is equivalent to the default 6.2.1 behavior.
  • SHMCTL_LOWERPROT disables the per-process protection and allows access from any user process. This behavior is the same as the use of this flag in 6.2.1.

In addition to the per-process protection, 6.3.0 changes the alignment of the virtual addresses where these global mappings are placed:

  • In 6.2.1, mappings were aligned on a 4 KB boundary.
  • In 6.3.0, mappings are aligned on a 1 MB boundary. This alignment must be honored even if MAP_FIXED is used.

In 6.2.1, mmap() mapped separate objects like this:

  • first object at 0x80000000 - 0x80002fff
  • second object at 0x80003000 - 0x80005fff

In 6.3.0, mmap() maps these objects as:

  • first object at 0x80000000 - 0x80002fff
  • second object at 0x80100000 - 0x80102fff

If you have any code written for 6.2.1 that makes assumptions about the alignment of mappings or uses MAP_FIXED with non-1-MB alignment, you must modify it to comply with the new behavior.

64-bit “large file” libc/filesystem support
QNX Neutrino 6.3 now implements the X/Open Largefile Support extensions. For details, see the 6.3.0 and 6.2.1 Compatibility note posted on our website.
shm_ctl_special()
This function, which gives special attributes to a shared-memory object, is now documented in the Neutrino Library Reference. (Ref# 18667)
Startup library
The startup library now supports 64-bit physical addresses for the MIPS, PPC, and x86 architectures. Two versions of the libstartup.a are built:
  • libstartup.a with 32-bit paddr_t's
  • libstartup-64.a with 64-bit paddr_t's.

By default, startup programs will compile and link with the 32-bit version. If a board needs 64-bit physical addresses, add the make macro PADDR_SIZE=64 to the board's pinfo.mk file (see startup/boards/440rb/pinfo.mk for an example).

stat()
  • The stat() function has been changed so that it no longer accepts 0 (zero) for the second argument. If you use this in your code, please check to see that the second argument points to a struct stat buffer.
  • The st_size field for S_ISBLK devices was changed to mimic QNX 4 behavior (i.e. to report it as the number of 512-byte blocks and not the number of bytes or the number of raw sectors). (Ref #17294)
swapctl
Support for swapping (experimental on x86) has been removed with the 6.3.0 release. It was introduced to help compile and link large projects on memory-constrained hosts, but is no longer required using current PC configurations.
System page
  • System page no longer contains the meminfo section, nor is the SYSPAGE_ENTRY(system_private)->ramsize field filled in. This is because they're restricted to 4 GB. Code referencing those syspage items should be modified to use the asinfo section (which has been generated since Neutrino 2.0).
  • The add_mem() function has been removed from the startup library.

    Here's replacement code for SYSTEM_ENTRY(system_private)->ramsize:

    uint64_t
    get_total_mem(void) {
        char                    *str = SYSPAGE_ENTRY(strings)->data;
        struct asinfo_entry     *as = SYSPAGE_ENTRY(asinfo);
        uint64_t                total = 0;
        unsigned                num;
    
        for(num = _syspage_ptr->asinfo.entry_size / sizeof(*as); num > 0; --num) {
            if(strcmp(&str[as->name], "ram") == 0) {
                total += as->end - as->start + 1;
            }
            ++as;
        }
        return total;
    }

    For code that scans meminfo, replace the check of the type field with a strcmp() of the appropriate asinfo entry name (as above) and scan asinfo.

/etc/rc.d/rc.local
For your convenience, 6.3.0 SP3 installs an empty, executable version of /etc/rc.d/rc.local, with permissions of of 750 (read, write, execute for the user; read, execute for the group; no permissions for others). (Ref# 22665)
Fast mutex optimization (SH4 and ARM)
Renesas SH4 and ARM/XScale processors don't include atomic operations (atomic compare-swap or load-linked/store conditional), so these instructions are emulated on these platforms. As these instructions are used for mutexes, the cost of this emulation is significant. SP3 includes a new scheme that instead includes a specific code sequence that, when coupled with updates to the kernel, allows the implementation of mutexes using normal (nonemulated) assembly sequences. This provides a significant performance improvement for uncontested mutexes.
malloc() optimizations
The standard C library malloc() has been reworked to improve performance for small allocations.
Debug malloc
New features include enhanced leak detection and multi-level stack traces.

The debug malloc library in 6.3.0 SP3 for SHLE passes in a special flag when it needs to allocate memory from the kernel using mmap(). This flag tells the 6.3.0 SP3 SHLE kernel not to set the contents of allocated memory to zeros. This flag will not be recognized in the later version of the SHLE kernel, therefore, will cause compatibility problems when you apply the QNX Neutrino Core OS 6.3.2 on a 6.3.0 SP3 system. The fix is to not set this flag by default. (Ref# 27639)

esh, uesh, fesh
The embedded shells have two new builtin commands: emount and waitfor. (Ref# 22074, 23627)
su and passwd
These utilities no longer allow a buffer overrun to occur. (Ref# 29454)
RCS IDs
When you install this patch, the following files are installed under $QNX_TARGET/usr/include:
  • sys/platform.h
  • sys/target_nto.h

These header files define some macros that we use to determine the version ID of the source code used in the executables on the system. (Ref# 38433)

What's new: Device drivers

Audio device drivers (deva-*)

  • deva-ctrl-sblive.so is no longer supported.

Block-oriented drivers (devb-*)

New drivers:

  • devb-umass (USB mass storage):
    • A reduced SCSI command set model was implemented. This increases interoperability with nonstandard devices that don't function properly when encountering SCSI commands that they don't support.
    • The SCSI_INQUIRY command now requests only 36 bytes. Some devices fail when asked for the full 96 bytes. (Ref# 22105)
    • devb-umass now works correctly with devices (such as the San Disk Cruzer Mini) that return invalid data for CSW. You can now specify the csw_ignore option on the command line. (Ref# 22104)
    • devb-umass now correctly detects a Y-E Data floppy drive. (Ref# 29552)
    • If a driver attempts to attach to a device that's already controlled by another driver (i.e. usbd_attach() returns EBUSY), io-usb no longer aborts the endpoints for that device after the attach fails. This problem caused other drivers to fail when the URBs were aborted for no reason. (Ref# 29562)
    • devb-umass now handles devices that return invalid sense data (NO_MEDIA). (Ref# 29600)
  • devb-adpu320 (SCSI driver for Adaptec Ultra320 adapters).

devb-eide

The devb-eide driver in SP3 supports the following chipsets:

Manufacturer Chip Vendor Id Device Id Revision Xfer Mode
Intel 82371FB 0x8086 0x1230   BIOS
Intel 82371SB 0x8086 0x7010   MDMA 2
Intel 82371AB 0x8086 0x7111   UDMA 2
Intel 82443MX 0x8086 0x7199   UDMA 2
Intel 82801AA 0x8086 0x2411   UDMA 4
Intel 82801AB 0x8086 0x2421   UDMA 4
Intel 82801BAM 0x8086 0x244A   UDMA 5
Intel 82801BA 0x8086 0x244B   UDMA 5
Intel 82801CA 0x8086 0x248B   UDMA 5
Intel 82801CAM 0x8086 0x248A   UDMA 5
Intel 82801DB 0x8086 0x24CB   UDMA 5
Intel 82801DBM 0x8086 0x24CA   UDMA 5
Intel 82801DB 0x8086 0x24CB   UDMA 5
Intel 82801EB 0x8086 0x24DB   UDMA 5
Intel 82801ESB 0x8086 0x25A2   UDMA 5
Intel 82801FB 0x8086 0x266F   UDMA 5
Intel 82801EB 0x8086 0x24D1   SATA
Intel 82801ER 0x8086 0x24DF   SATA
Intel 82801FB 0x8086 0x2651   SATA
Intel 82801FR 0x8086 0x2652   SATA
Intel 82801FBM 0x8086 0x2653   SATA
Intel 82801ESB 0x8086 0x25a2   UDMA 5
Intel 82801ESB 0x8086 0x25a3   SATA
Intel 82801GB 0x8086 0x27df   UDMA 5
Intel 82801GB 0x8086 0x27c0   SATA
Intel 82801GB 0x8086 0x27c4   SATA
Promise PDC-20262 0x105a 0x4d38   UDMA 4
Promise PDC-20267 0x105a 0x4d30   UDMA 4
Promise PDC-20265 0x105a 0x0d30   UDMA 5
Promise PDC-20269 0x105a 0x4d69   UDMA 5
ServerWorks OSB4 0x1166 0x0211   UDMA 2
ServerWorks CSB5 0x1166 0x0212   UDMA 4 (untested)
ServerWorks CSB5 0x1166 0x0212 0x92+ UDMA 5
HighPoint Tech HPT-366 0x1103 0x0004 0x01 UDMA 4 (untested)
HighPoint Tech HPT-370 0x1103 0x0004 0x03+ UDMA 5
HighPoint Tech HPT-372 0x1103 0x0005   UDMA 6
HighPoint Tech HPT-374 0x1103 0x0008   UDMA 6
AMD PCB-756 0x1022 0x7409   UDMA 4 (untested)
AMD PCB-766 0x1022 0x7411   UDMA 5 (untested)
AMD PCB-768 0x1022 0x7441   UDMA 5
nVidia   0x01bc 0x10de   UDMA 5 (untested)
ACER Labs M5229 0x10b9 0x5229 0x19-0xc1 UDMA 2
ACER Labs M5229 0x10b9 0x5229 0xc2-0xc3 UDMA 4
ACER Labs M5229 0x10b9 0x5229 0xc4 UDMA 5
ACER Labs M5287 0x10b9 0x5287   SATA
ACER Labs M5289 0x10b9 0x5289   SATA
ATI (IXP-150/200/250) 0x1002 0x4349   UDMA 5
SiS SiS-5513 0x1039 0x5513 0xd0 UDMA 2/4
SiS SiS-5517 0x1039 0x5517   UDMA 6
SiS SiS-5518 0x1039 0x5518   UDMA 6
SiS SiS-180 0x1039 0x0180   SATA
SiS SiS-181 0x1039 0x0181   SATA
VIA Tech 82C586B 0x1106 0x0571 82686B PCI-ISA bridge 0x40+ UDMA 5
VIA Tech 82C586B 0x1106 0x0571 8231 bridge UDMA 5 (untested)
VIA Tech 82C586B 0x1106 0x0571 8233 bridge UDMA 5 (untested)
VIA Tech 82C586B 0x1106 0x0571 8233C bridge UDMA 5 (untested)
VIA Tech 82C586B 0x1106 0x0571 8233A bridge UDMA 6
VIA Tech 82C586B 0x1106 0x0571 8235A bridge UDMA 6 (untested)
VIA Tech 82C586B 0x1106 0x0571 8237 bridge UDMA 6 (untested)
VIA Tech 8237 0x1106 0x3149   SATA
VIA Tech 82C586B 0x1106 0x0571 0x6+ UDMA 2
Winbond W83C553F 0x10ad 0x0105   MDMA 2
PCMCIA Any PIO 0
PCI IDE Any   BIOS

The devb-eide driver now:

  • scans for slave devices on Intel SATA controllers (Ref# 40474)
  • supports UDMA modes on VT8251 (Ref# 41450)
  • supports UDMA modes on AMD Geode LX800 (AMD CS5536) (Ref# 41463)
  • works on the Dell Dimension 3100 (ATA mode only, not RAID) (Ref# 41505)

devb-ahci

The devb-ahci driver supports the Intel AHCI SATA controller with the following device IDs:

  • ICH-6 82801FB_SATA 0x2651
  • ICH-6 82801FBM_SATA 0x2653
  • ICH-7 82801GB_SATA 0x27c1
  • ICH-7 82801GBM_SATA 0x27c5

Note: You need to enable AHCI mode in the BIOS.

This driver now correctly detects the hard drive on the IBM ThinkPad T60. (Ref# 40126)

devb-mvSata

The devb-mvSata driver supports Vendor ID 0x11ab with the following device IDs:

Device ID Chipset
5080 88SX5080
5081 88SX5081
5040 88SX5040
5041 88SX5041

Character device drivers

If you've written a character device driver that links against the libio-char.a library, note that there has been a change in the API to accommodate power management. You need to update any driver source code originally written for 6.3.0 and earlier if you plan to compile it against the new library in 6.3.0 SP3.


Note: You don't need to regenerate any binaries. This is an issue only if you're rebuilding old source code on the new 6.3.0 SP3 system.

For more information, see the release notes for the Character DDK.

Flash drivers (devf-*)

  • On 32-bit wide Intel flash, if an attempt to access flash using a 16-bit aligned address failed, the flash driver used to crash when it reset the hardware. The reset callback now aligns the addresses properly. (Ref# 20151)

Graphics drivers (devg-*)

Driver Controller Target CPU
devg-chips.so (replaces devg-chip_hiqv.so) Chips & Technologies 65550 and greater MIPSLE, PPCBE, SHLE, x86
devg-coral.so Fujitsu Coral B & Coral P ARMLE, PPCBE, SHLE, x86
devg-i830.so Intel 82830, 82845, 82855, 82865, 82915G, 82915GM, 82945G, and 82945GM x86
devg-orchid.so Fujitsu Orchid PPCBE, SHLE, x86
devg-radeon.so ATI Radeon 9200, 9600, 9800, Mobility M9, X300, X600 PPCBE, x86 (see below)
devg-ravin.so NEC RavinE MIPSLE, PPCBE, x86
devg-sis630.so SiS 300 & 630 x86
devg-smi7xx.so Silicon Motion 712, 722 & 731 ARMLE, MIPSLE, PPCBE, SHLE, x86
devg-smi5xx.so Silicon Motion 501 ARMLE, MIPSLE, PPCBE, SHLE, x86
devg-tvia.so (replaces devg-igs5300.so) TVIA 52xx and 53xx MIPSLE, SHLE, x86

Other changes include:

devg-radeon.so
  • The x86 version of this driver initializes secondary cards for multicard displays.
  • The devg-radeon.so driver now supports the Radeon M22 (Mobility X300). (Ref# 39723)
Polygon acceleration
We added polygon acceleration support for some chipsets (e.g. Fujitsu Coral, Orchid).
$QNX_TARGET/etc/system/enum/devices/graphics
We updated the enumerator to detect the supported chipsets.

Network drivers (devn-*)

  • devn-dm9102.so — for Davicom DM9102 controller.
  • New MDI/PHY routines for Network drivers.

Many drivers now have a probe_phy option. This option lets you select whether or not the PHY is probed at regular intervals to see if the duplex setting and/or the speed on the connection has changed (e.g. the cable has been unplugged and plugged into a different hub or switch.

Here's a description of the new option:

probe_phy=1
Poll the PHY at regular intervals to see if the speed or duplex setting has changed.
probe_phy=0
Poll the PHY at regular intervals, but only during periods when no packets are received on the interface, or the link is down. This setting increases the packet-throughput performance on the link, and is the default.

6.3.0 SP3 also addresses the following issues:

devn-asix.so
This is a new driver for SMC2209 USB/Ethernet adaptors.

CPU targets provided: x86, ARMLE, MIPSLE, MIPSBE, PPCBE, SHLE

Location: $QNX_TARGET/x86/lib/dll/devn-asix.so, $QNX_TARGET/armle/lib/dll/devn-asix.so, $QNX_TARGET/mipsle/lib/dll/devn-asix.so, $QNX_TARGET/mipsbe/lib/dll/devn-asix.so, $QNX_TARGET/ppcbe/lib/dll/devn-asix.so, $QNX_TARGET/shle/lib/dll/devn-asix.so

Supported device IDs / chipsets:

  • device 0x1a00 # Dlink DUBE100
  • device 0x1720 # SMC 2209
devn-bcm43xx.so
We've updated this driver (for Broadcom BCM43xx Wireless Ethernet controllers) to add support for WPA and WPA2.

CPU targets provided: x86, PPCBE, SHLE

Location: $QNX_TARGET/x86/lib/dll/devn-bcm43xx.so, $QNX_TARGET/ppcbe/lib/dll/devn-bcm43xx.so, $QNX_TARGET/shle/lib/dll/devn-bcm43xx.so

Supported device IDs / chipsets:

  • device 4301 # BCM4301_D11B
  • device 4307 # BCM4307_D11B
  • device 4320 # BCM4306_D11G
  • device 4325 # BCM4306_D11G
  • device 4303 # BCM4303_D11B
  • device 4321 # BCM4306_D11A
  • device 4324 # BCM4306_D11 DUAL
  • device 4318 # BCM4318_D11G
  • device 4319 # BCM4318_D11 DUAL
  • device 431a # BCM4318_D11A
  • device 4311 # BCM4311_D11G
  • device 4312 # BCM4311_D11 DUAL
  • device 4313 # BCM4311_D11A
devn-hermes2.so
This is a new driver for Agere Wireless Ethernet controllers.

CPU targets provided: x86

Location: $QNX_TARGET/x86/lib/dll/devn-hermes2.so

Supported device IDs / chipsets: PCMCIA manufacturer ID 156 device 3 # PCMCIA Hermes2 - Proxim Orinoco 802.11b

devn-i82544.so
We've updated this driver (for Intel 82544 Ethernet LAN adapters) with support for new chipsets.

CPU targets provided: x86, PPCBE

Location: $QNX_TARGET/x86/lib/dll/devn-i82544.so, $QNX_TARGET/ppcbe/lib/dll/devn-i82544.so

Supported device IDs / chipsets:

  • device 1008 # Intel 82544EI Gigabit
  • device 1009 # Intel 82544EI Gigabit
  • device 100c # Intel 82544GC Gigabit
  • device 100d # Intel 82544GC Gigabit
  • device 100e # Intel 82540EM Gigabit
  • device 100f # Intel 82545EM Gigabit
  • device 1010 # Intel 82546EB Gigabit
  • device 1011 # Intel 82545EM Gigabit
  • device 1012 # Intel 82546EB Gigabit
  • device 1013 # Intel 82541EI Gigabit
  • device 1015 # Intel 82540EM Gigabit
  • device 1016 # Intel 82540EP Gigabit
  • device 1017 # Intel 82540EP Gigabit
  • device 1018 # Intel 82541EI Gigabit
  • device 1019 # Intel 82541EI Gigabit
  • device 101d # Intel 82546EB Gigabit
  • device 101e # Intel 82540EP Gigabit
  • device 1026 # Intel 82545GM Gigabit
  • device 1027 # Intel 82545GM Gigabit
  • device 1028 # Intel 82545GM Gigabit
  • device 1075 # Intel 82541GI Gigabit
  • device 1076 # Intel 82541GI Gigabit
  • device 1077 # Intel 82541GI Gigabit
  • device 1078 # Intel 82541ER Gigabit
  • device 1079 # Intel 82546GB Gigabit
  • device 107a # Intel 82546GB Gigabit
  • device 107b # Intel 82546GB Gigabit
  • device 107c # Intel 82541PI Gigabit
  • device 108a # Intel 82546EB Gigabit
  • device 108b # Intel 82573V Gigabit
  • device 108c # Intel 82573E Gigabit
  • device 109a # Intel 82573L Gigabit
devn-pcnet.so
  • Packet processing now occurs only after the driver has fully registered with io-net, in order to prevent an assertion with the debug version of io-net. (Ref# 23068)
  • This driver now includes the probe_phy option, as described above. (Ref# 28634)
  • Promiscuous and multicast support for the devn-pcnet.so driver is controlled via command-line options rather than by devctl() due to observed NIC-reset problems when the modes are switched in the hardware. The default mode is promiscuous Rx disabled and all-multicast Rx enabled. This allows TCP/IP v6 to run it's routing daemons. You can enable promiscuous mode by specifying the promiscuous command-line option to the driver. You can disable multicast mode by specifying the nomulticast command-line option to the driver. (Ref# 29378)
  • This driver now provides more information when you use nicinfo.
  • We've fixed an issue that affected duplex operations at 10 Mbit/second.
  • We've added the _NPKT_PROMISC flag to received packets.
devn-rtl.so
  • The correct duplex setting is now negotiated when the speed is 10 Mbit. (Ref# 17146)
  • This driver now works on MIPSBE targets. (Ref# 24259)
  • This driver now includes the probe_phy option, as described above. (Ref# 28637)
  • Issuing a umount /dev/io-net/en1 no longer causes io-net to crash. (Ref# 29470)
  • You can now start a second instance of io-net using the RTL driver. (Ref# 29488)
  • nicinfo now reports the correct speed and duplex setting when they're specified. (Ref# 29489)
  • The devn-rtl.so driver no longer loses packets during a receive on PPCBE targets. (Ref# 29680)
  • devn-rtl.so now scans and automatically detects Dlink DFE-528Tx Rev E1 with vendor ID 0x1186 and device ID 0x1300, with NIC labeled DL10038D. (Ref# 29729)

    Note: The Dlink DFE-538TX Rev D2 with a NIC labeled DL10038C that also has the same vendor and device IDs as the DFE-528TX card isn't apparently 100% rtl-8139-compatible and doesn't appear to work correctly.

  • We now provide an SHLE variant of this driver.
  • We've added a caching API for SH.
devn-pegasus.so
  • The devn-pegasus.so driver now works with newer 8513-based chips. (Ref# 27727)
  • This driver now includes the probe_phy option, as described above. (Ref# 28647)
  • Multicast and broadcast statistics are now correctly displayed with nicinfo. (Ref# 29130)
devn-rtl8150.so
This is a new driver for SMC2208 USB/Ethernet adaptors.

CPU targets provided: x86, ARMLE, SHLE

Location: $QNX_TARGET/x86/lib/dll/devn-rtl8150.so, $QNX_TARGET/armle/lib/dll/devn-rtl8150.so, $QNX_TARGET/shle/lib/dll/devn-rtl8150.so

devn-tigon3.so
This is a new driver for the Broadcom BCM57xx Ethernet controller.

CPU targets provided: x86

Location: $QNX_TARGET/x86/lib/dll/devn-tigon3.so

Supported device IDs / chipsets:

  • Broadcom BCM5705
  • Broadcom BCM5721
  • Broadcom BCM5751
  • Broadcom BCM5752
  • Broadcom BCM5787
libdrvr*
  • If you forced the speed on the command line, the first link's speed was negotiated properly, but subsequent renegotiations didn't honor the override speed, performing a normal auto-negotiation instead. We've now corrected this.
  • We've corrected an auto-negotiation problem with gigabit Ethernet.
  • We've added the unit option as an alias for the lan option.
  • We've corrected the display of memory addresses.
$QNX_TARGET/etc/system/enum/devices/net
We've updated the enumerator to add new Ethernet drivers.
pccard-launch
This is a new Pccard launch utility.

CPU targets provided: x86, ARMLE, MIPSLE, MIPSBE, PPCBE, SHLE

Location: $QNX_TARGET/x86/usr/sbin/pccard-launch, $QNX_TARGET/ppcbe/usr/sbin/pccard-launch, $QNX_TARGET/shle/usr/sbin/pccard-launch

pci-bios
We've updated this PCI server to add PCI-to-PCI bridge support.

CPU targets provided: x86

Location: $QNX_TARGET/x86/sbin/pci-bios

startup-bios
  • We've added support for the Supermicro Supero x6DLP-EG2 x86 SMP platform based on the Intel Sossaman.

    CPU targets provided: x86

    Location: $QNX_TARGET/x86/boot/sys/startup-bios

  • We added support for the x86 NX (no-execute) page table bit. On processors that support it (AMD64, IA-32e), mmap()'d memory no longer lets you execute instructions in that memory unless you've specified the PROT_EXEC permission flag. If not specified, a SIGSEGV occurs.

    Note: You must have installed the QNX Neutrino Core OS 6.3.2 and enable page-table extensions (with the -x startup option) in order for the NX bit to be effective.

    You can turn off support by putting -F ~0x4000 on the startup command line. (Ref# 40162)

USB device drivers (devu-)

devu-ohci.so
  • The OHCI driver now works on platforms that have PCI bus master translation. (Ref# 29556)
  • The OHCI driver no longer has an endian bug that caused io-usb to crash on big-endian platforms. (Ref# 29558)
devu-ehci.so
  • If two drivers attempt to abort an endpoint at the same time, the EHCI driver no longer loops while disabling and enabling the schedule. The client drivers no longer remain blocked forever waiting for the abort operation to complete. (Ref# 25647)
  • The default interrupt threshold is now 1. This increases the allowable interrupt frequency and improves the “out-of-box” mass storage performance. (Ref# 28952)
usb
This utility now displays the Full speed HC capability.

What's new: Device enumeration

  • We've removed a blanket condition for enumerating PCI serial devices, so that we don't start devc-ser8250 for all of them. The new enumeration is based entirely on the vendor and device IDs, so the correct driver is started for the specific card. (Ref# 38968)
  • Network drivers are no longer mounted before io-net has fully started. This was a problem mainly on multicore systems. (Ref# 38185)
  • We changed enum-pnpbios so that it works properly on systems that have a partial PNP BIOS. (Ref# 29768)
  • The network enumerator now detects Broadcom BCM57xx chipsets with device IDs 0x1653 and 0x169c. (Ref# 40752)

What's new: Filesystems

find and inode numbers on big-endian platforms
File inode numbers in the find utility weren't being correctly treated as off_t variables. When compiled as _FILE_OFFSET_BITS=64 on big-endian platforms, this resulted in their always being displayed (for example, using find -printf "%i") as 0. The find utility now correctly displays the inode field as a 64-bit value where appropriate. (Ref# 19172)
fseeko64() and ftello64()
The stdio library didn't contain 64-bit variants of the fseeko() and ftello() routines. Thus, an application program compiled as _FILE_OFFSET_BITS=64 using these routines would be passing a 64-bit offset into a function expecting only a 32-bit value. The impact was that these routines wouldn't operate correctly (they'd randomly fail or seek to the wrong location); the behavior of the standard utilities head and tail might also have been affected. (Ref# 20437)
C++ and <stdio.h> _FILE_OFFSET_BITS=64
The 64-bit function mappings in <stdio.h> for the fopen(), freopen() and tmpfile() routines generated warnings within the namespace std scope. Compiling C++ code as _FILE_OFFSET_BITS=64 would produce “already declared in this scope” warnings from <stdio.h>. The header file has been fixed. (Ref# 20624)
Resource managers and the IOFUNC_MOUNT_32BIT flag
The iofunc library didn't implement the IOFUNC_MOUNT_32BIT flag. The intent of this flag, when used by a filesystem resource manager, is to indicate that it deals only with 32-bit file sizes and offsets (most likely it's compiled with _IOFUNC_OFFSET_BITS=32, _FILE_OFFSET_BITS=32, or both).

However, a 64-bit client application (compiled with _FILE_OFFSET_BITS=64 or using O_LARGEFILE) could seek or otherwise attempt to access a file beyond the 32-bit/2 GB limit, whereas the server is manipulating only 32 bits, resulting in an inconsistent file.

The IOFUNC_MOUNT_32BIT flag in an iofunc_mount_t is now honored, and the iofunc library detects any attempt to access beyond a 32-bit offset and fails with EOVERFLOW. (Ref# 21122)

umount can SIGSEGV a devb-* driver
In rare cases, a umount of a disk filesystem formerly could cause the associated devb-* driver (actually the io-blk.so library) to crash with a SIGSEGV. This has been fixed. (Ref# 19387)
fs-cd.so
  • This module now supports ISO-9660 Interchange Level 3 (multiple file sections). (Ref# 22087)
  • Recursive searches in a CD filesystem no longer return corrupted entries. (Ref# 19014)
  • Bad directory contents no longer cause fs-cd.so to run READY. (Ref# 29577)
fs-cifs
When fs-cifs connected to a Windows server, a unique session was created. When a second fs-cifs process was started, it didn't specify an identifier different from the first instance, and thus confused the server, which thought that the original fs-cifs process had reestablished its connection. The server then terminated the first session.

This repeated: the second session was disconnected when the first fs-cifs detected that it had been disconnected and reestablished its link to the server. This continued back and forth each time file access was required from the server.

This issue has been fixed, and multiple CIFS sessions are supported, which can enhance performance. These modifications also allow a fs-cifs process to create a local mountpoint nested within the local mountpoint path of another fs-cifs process. (Ref# 15452, 21532)

fs-dos.so
  • stat() no longer fails on directory names that contain UTF-8 characters. (Ref# 22959)
  • fs-dos.so now correct handles a FAT-hosted OS/2 filesystem. (Ref# 28811)
fs-ext2.so
  • Writing to a 0-sized unlinked file no longer crashes fs-ext2.so. (Ref# 22593)
  • fs-ext2.so no longer doubly frees groups' descriptors following an EBADFSYS mount failure. (Ref# 38632)
  • fs-ext2.so now enforces the maximum length of a symbolic link to be the value specified by SYMLINK_MAX. (Ref# 38601)
  • fs-ext2.so no longer runs READY if you try to create too many files and inodes. (Ref# 22676)
fs-qnx4.so
  • If you do the following:
    1. Create a directory.
    2. Create a file.
    3. Hold that file open with O_ACCMODE.
    4. Unlink that file.
    5. Create the same filename.
    6. Close any files.

    then attempting to remove the directory no longer fails with an error of EBADFSYS. (Ref# 18786)

  • fs-qnx4.so no longer crashes when it zero-fills preallocated blocks and the write() operation to the end of file is interrupted by a signal in some cases. (Ref# 38414; Ticket ID 72461)
  • Attempting to grow a directory (or .inodes file) on a completely full fs-qnx4.so disk no longer leaves the directory marked as busy. (Ref# 15354)

What's new: Flash filesystem

A new version of the NOR flash filesystem library offers significantly improved resistance to power-loss corruption. However, this improvement isn't backwards-compatible with the older version of the library.

The older library (libfs-flash.a) has been removed from this release. All flash drivers (devf-generic, devf-ram, etc.) now link against the version 3 library, i.e. libfs-flash3.a.

If your existing code links against libfs-flash.a, you must now use the version 3 library. For more information, please refer to the documentation on the new version 3 flash filesystem as well as the migration technote.

What's new: IDE (Professional Edition only)

Eclipse 3.0
The IDE is now based on Eclipse 3.0 and includes these new features:
  • new look and feel, including new title bars and tabs, buttons for minimizing views, better drag-and-drop feedback, and detached views
  • more responsive UI, including the ability to run jobs in the background
  • support for single and multiple editor tabs, as well as editor pinning for editors that shouldn't be closed, and new menu options, keyboard shortcuts and key bindings
  • background workspace auto-refresh — changes made in the local filesystem can now be automatically refreshed in the workspace (currently disabled by default)
  • regular expressions in the text editors' Find/Replace dialog
  • new editor functions: move lines up or down, copy lines, insert a new line above or below the current line, and convert text to lowercase or uppercase
  • launch shortcuts in the context menu of all applicable views
  • the ability to invoke an Ant build from the Run context menu

The new C Development Tools include:

  • improvements to the New C++ Class wizard
  • new C/C++ wizards that make it easier to create source and header files, source folders, and C & C++ projects
  • filtering and grouping in the Outline view
  • code folding — lets you hide and display functions, methods, classes, structures, and macros
  • new preferences and code-folding in the Makefile editor
  • a Type Hierarchy view that lets you easily visualize a program's structure and class usage.

Note: If you import an old QNX C/C++ project into the SP3 version of the IDE, you should enable Clean and specify the clean target in the Make Builder tab of the project properties. The Clean entry in the Project menu uses this setting, which is enabled by default for new projects.

Debugging support and application launching in the CDT has been improved:

  • thread-specific breakpoints
  • breakpoint filtering
  • support for variables in the Environment, Argument, and Working Directory tabs
  • mixed source/assembly in the Disassembly view
  • global variables can now be added to the Variables view
  • the Debug console is now in the generic Console view
  • automatic refresh options for shared library and register information

C/C++ project configuration and building have been improved:

  • automatic project settings discovery
  • C++ Include Paths and Symbols
  • C/C++ Project Paths project properties to help you determine which files and directories you should put source, output, or library into
  • C/C++ file types — define the types of specific files, especially C++ headers without extensions
  • C/C++ working sets

It's now easier to edit and navigate through your C/C++ source files:

  • C/C++ content assist — completions for classes and structure members, local and global variables, functions, preprocessor definitions, and preprocessor commands
  • Rename refactoring
  • Open type — open up the declaration of C/C++ classes, structures, unions, type definitions, enumerations and namespaces
  • C/C++ Browsing perspective — navigate the class and structure members of a particular project
  • context-sensitive searches from the Outline view, as well as resource-selection restricted searches in the C/C++ Search Dialog
  • hyperlink navigation
  • index error markers

These exclusive QNX Momentics tools have also been updated and improved:

  • Memory Analysis
  • System Profiler
  • Code Coverage
  • System Information

For more information, see the IDE User's Guide and the IDE's Welcome page.

Debugger
The Details pane in the Variables view now has an Assign Value (Ctrl+S) action. (Ref# 16758)
Support for BSPs
The System Builder now finds the components installed in the prebuilt directory for Board Support Packages. (Ref# 39121)

What's new: Installation and licensing

  • The installation process has changed — we're no longer using the QNX Software Installer or cl-installer.
  • You can't select individual target platforms (e.g. PPC, MIPS, etc.) anymore — you get all platforms when you install 6.3.

    Note: If you're using the IDE, you might want to set your preferences for QNX projects to build only for the specific target platforms you want. See: Window-->Preferences-->QNX-->New Project-->Architecture.

  • qnxactivate now lets you add new license keys. (Ref# 30028)
  • The Manual Activation dialog for qnxactivate now has a button that you can use to save the prompt key in a file, and another to load the response key from a file. This eliminates the need to retype the keys, which can be error-prone. (Ref# 38690)
  • qnxactivate can now accept text messages from the server that explain why activation failed, provide additional information, and so on. (Ref# 40914)
  • We've included a qaudit.sh script that lists the QNX products that you've installed on your system. (Ref# 26136)

What's new: I/O devices

io-blk.so
  • fsync() no longer causes problems on read-only media. (Ref# 22013)
  • We've fixed some inconsistencies and oddities in how io-blk.so handles the blk automount= option in some unusual cases. (Ref# 29351)
  • io-blk.so now delays the completion of the lock mount option if no CD is currently installed. (Ref# 28037)
  • io-blk.so now locks a vnode when it's created, to prevent a crash that could occur if a high-priority sync tried to use the vnode before it was initialized. (Ref# 23462)
  • io-blk.so now correctly honors the before and after keywords to the mount command's -o option. You can also specify these keywords on the devb-* command line, in the blk options, the way you specify ro, rw, noatime, and so on. (Ref# 19606)
io-char
  • The terminal POSIX support library incorrectly treated a physical break condition on a serial line and the receipt of the INTR character as the same event, and thus used the wrong tty flags to control the handling behavior. A physical break should be configured by the IGNBRK and BRKINT flags, whereas a keyboard interrupt is configured by the VINTR character and the ISIG flag. The effect of this may be seen as the inability to use Ctrl-C in certain terminal configurations (for example esh, which despite +isig intr=03 didn't also configure -ignbrk +brkint). (Ref# 19736)
  • The terminal POSIX support library incorrectly discarded an input 0x00 character when in ICANON (edited) mode, although it was available to be read in non-ICANON (raw) mode. (Ref# 21082)
  • The terminal POSIX support library incorrectly implemented the IGNPAR flag. This flag, when used with INPCK, should cause parity checking of input characters to be performed, and any characters with a parity error should be discarded and not be made available to be read. However the bad characters weren't being ignored. (Ref# 21083)

The above problems have all been corrected in the io-char.a library; the changes affect all devc-* drivers (because they're statically linked against this library).

io-usb, libusbdi.so
This is a resource manager that supports USB 2.0/1.0.
  • Some devices don't handle string descriptors properly, so libusbdi.so now checks to see if the string index fields for Manufacture or Product are set. If they aren't, the library doesn't try to read the language table (index 0) on the string descriptor. (Ref# 23097)
  • If a device has multiple interfaces and alternate settings on the second interface, selecting one of alternate settings no longer causes errors when enqueuing transactions on the first interface. (Ref# 28313)
  • Errors are now correctly reported for isochronous transfers when the buffer size is larger than MPS. (Ref# 28315)
  • Fetching and storing multiple configurations for a device now works correctly. This change lets you select a default configuration/interface for a multiconfiguration device. (Ref# 28449)
  • The io-usb server no longer crashes with a SIGSEGV on startup when bad arguments are passed to it. (Ref# 29082)
  • USB client drivers are no longer notified of HUB insertions when the client driver is first started. (Ref# 29527)
  • devu-ohci no longer runs out of Endpoint Descriptors. (Ref# 29661)

What's new: Network protocols

Global Name Service Manager (gns)
The name_open() function used to be a silent operation for the server in that it wouldn't know when a client called name_open(). This behavior is changed to allow operation over the network.

The server will now always receive an _IO_CONNECT message when a client calls name_open(). (For more information, please refer to the gns entry in the Utilities Reference.)

Qnet
We now ship two versions of Qnet:
  • npm-qnet-l4_lite.so — the new lightweight Qnet
  • npm-qnet-compat.so — the pre-6.3 version.

Note: The new Qnet (npm-qnet-l4_lite.so) is not compatible with the pre-6.3 versions.

The default version is the new lightweight Qnet (npm-qnet.so is a link to npm-qnet-l4_lite.so). If you wish to use the older version of Qnet, have npm-qnet.so link to npm-qnet-compat.so and restart io-net.


Note:
  • You can't have an instance of npm-qnet-l4_lite.so and npm-qnet-compat.so active at the same time on the same node.
  • You can't unmount Qnet (either version) from io-net in 6.3.0.

npm-qnet-l4_lite.so
  • We've add a new Qnet IOMSG, _NETMGR_QOS_FLUSH. This message lets an application force a retransmission instead of waiting for Qnet to activate its own timeout. This is useful for periodic detectable hardware failures where the application can take action, instead of enabling shorter timeout periods for Qnet, which adds more load to the system. (Ref# 38260)

    Here's an example:

    #include <sys/netmgr.h>
    #include <sys/netmsg.h>
    
    extern int __netmgr_send( void *smsg1, int ssize1, const void *smsg2,
                              int ssize2, void *rmsg, int rsize);
     
    int main (void)
    {
                struct _io_msg msg;
    
                msg.type = _IO_MSG;
                msg.combine_len = sizeof(msg);
                msg.mgrid = _IOMGR_NETMGR;
                msg.subtype = _NETMGR_QOS_FLUSH;
    
                __netmgr_send(&msg, sizeof(msg), 0, 0, 0, 0);
    }
        
  • Qnet now lets you specify the maximum transmission unit (MTU) of a Qnet packet via the mtu_en=num option. The num argument must be greater than 100. All nodes in network must use the same value. The default is 1500. (Ref# 22250)
  • Qnet supported a maximum of two network interfaces (the first two located) although the user could override and specify which two (with the bind=interface option). Qnet now supports more interfaces via the max_num_l4s=num option. The default is two; the maximum is four. (Ref# 22269)
  • Qnet used a pulse with a hard-coded priority for the QoS transmission thread, and the QoS periodic transmission thread. You can now set the priority of these pulses, using the options qos_per_pri=num and qos_tx_pri=num, where num is the new priority. We recommend that you not change these values; we supply these options for the user case where the priority of the io-net subsystems must be changed, which is typically rare. (Ref# 20891)
  • Qnet has the option of using CRC to check for packet corruption. By default it relies on the hardware. When using software CRC checks, Qnet verifies the CRC if it's present, although it also allows packets that don't contain a CRC value (other nodes not using the no_crc option). We've added a new enforce_crc option:

    enforce_crc=num

    If you use this option in combination with do_crc, only packets that contain a valid CRC are accepted. This option has an effect only when do_crc is also set to 1. Setting enforce_crc to one causes packets that are received without a valid software-level CRC generated by the remote mode (i.e. it's running do_crc=0) to be discarded, because the packet content's integrity is unknown, and could be suspect. The default is zero, which allows received packets without a generated software-level CRC to be processed. (Ref# 39171)

npm-qnet-compat.so
  • A race condition existed where Qnet could fault io-net. This could have happened when a client application sent a message (e.g. write() or read()) to a server application on another node. If the server application terminated while the message was being sent, or during the reply from the server back to the client, the client application's Qnet might have caused io-net to fault.

    This problem occurred only if the send or reply message buffer was larger than the MTU of the network being used. For example, with Ethernet, if the message buffer was larger than 1500 bytes, multiple packets needed to be sent to transmit the message. This has been fixed. (Ref# 21119, 21406)

  • Depending on how the discovery took place, a 128-byte buffer of memory formerly could be lost at the initial discovery of each peer node on the network. This has been fixed. (Ref# 19242)
TCP/IP stack (npm-tcpip-v4.so and npm-tcpip-v6.so)
  • The TCP/IP stack could formerly fault if you tried to get file-descriptor information (e.g. by executing sin fd) on a system where a process had called shutdown() for a TCP/IP socket descriptor, but the socket hadn't yet been closed. This has been fixed. You also now get more diagnostic information when you use sin fd to view information on socket file descriptors. (Ref# 21549)
  • If a program called bind() for an AF_LOCAL socket, and the path namespace entry was created, the TCP/IP stack used to leak a small amount of memory, even if the path were unlinked. This has been fixed. (Ref# 21639)
  • When the fastforward path in the TCP/IP stack was used (see the fastforward option to npm-tcpip-v4.so or npm-tcpip-v6.so), the TCP/IP stack didn't deal with the next hop gateway properly if it wasn't responding to an ARP request. The TCP/IP stack now correctly marks the route as being down and sends an ICMP-unreachable packet back to the source. (Ref# 23864)
  • If a packet were to be forwarded, and there was no route specified on the gateway, the TCP/IP stack returned ICMP_UNREACH with an ICMP_UNREACH_HOST code. The TCP/IP stack has been changed to return a ICMP_UNREACH_NET code. (Ref# 23900)
  • When the TCP/IP stack ran out of threads, it wasn't obvious to the user that this had occurred, beyond the slow response of the TCP/IP stack. (See the threads option for npm-tcpip.so. Now if this occurs, this situation is logged to sloginfo. (Ref# 26556)
  • The TCP/IP stack formerly could sometimes generate a double reply in response to sin fd queries. This didn't cause any issues, but made kernel traces confusing. (Ref# 25856)
SCTP (in the Extended Networking TDK)
  • SCTP currently supports only IPv4; its API may be subject to change.
  • Although SCTP (lsm-sctp.so) supports only the IPv4 protocol family, it must be used in combination with the npm-tcpip-v6.so DLL. You can't mount lsm-sctp.so while using the npm-tcpip-v4.so DLL. This is due to internal dependencies. Note that npm-tcpip-v6.so also supports IPv4 along with IPv6 and other features.
  • The TCP/IP stack (npm-tcpip.so) must be started with the option stacksize using a larger value than the default. For example, io-net -d -ptcpip stacksize=4096 when using SCTP (lsm-sctp.so).
IPFilter (in the Extended Networking TDK)
IPFilter (lsm-ipfilter-[v4|v6] can be used only with the matching TCP/IP stack (i.e. lsm-ipfilter-v4.so with npm-tcpip-v4.so; lsm-ipfilter-v6.so with npm-tcpip-v6.so).
Full TCP/IP stack and other updates
  • The full TCP/IP stack (npm-tcpip-v6.so; npm-tcpip-v4.so) has been updated to overcome the vulnerabilities in the TCP protocol. For details, see the security advisories NISCC Vulnerability Advisory 236929 and CERT Advisory TA04-111A.

    Note: Although our Tiny TCP/IP stack (npm-ttcpip.so) hasn't been updated to address the TCP vulnerabilities, we anticipate that embedded devices using our tiny stack have applications that use short-lived TCP connections and are therefore not as vulnerable.

  • Fixed problem re: select() where a socket would be erroneously marked as writable when it isn't. A subsequent write() would block or fail with EWOULDBLOCK. Another possible symptom is that a notification for write would be lost.
  • portmap has been replaced by rpcbind (portmap is now a symbolic link to rpcbind).
  • RPC library has been updated to support RPC Bind version 4.
  • dhcpd and dhcprelay have been updated to ISC dhcp version 3.0 p2.
  • New binaries: rpcbind, rpcgen, ntpd, ntpupdate, ntpdc, ntpq, ntptrace, gns.
  • New DLLs: nfm-autoip.so (in the Extended Networking TDK), npm-qnet-l4_lite.so, npm-qnet-compat.so, lsm-ipfilter.so and lsm-sctp.so (in the Extended Networking TDK).
  • New libraries (in the Extended Networking TDK): libipsec, libsctp.

Note: IPv6 is now part of the Extended Networking TDK.

rpcbind
By default, rpcbind executes in “secure” mode and uses Unix Domain Sockets for local communication.

If you wish to use an older RPC application with rpcbind or to use rpcbind in combination with the Tiny TCP/IP stack, you'll need to refer to the -L and -i options to rpcbind.


Note: The service rpcbind must be defined for both UDP and TCP in the /etc/services file. While the default /etc/services provided has these modifications, if you choose to use the current /etc/services file at installation time, these definitions will be missing and rpcbind will fail to function. The required lines are:
    
sunrpc    111/tcp        rpcbind portmap 
sunrpc    111/udp        rpcbind portmap

RPC library
Timeouts for clnt_broadcast() have changed. In 6.2 and earlier, timeout and retransmission occurs at 4 seconds and increases by 2 seconds for every timeout after that to a max of 14-second timeouts, resulting in 6 retransmissions.

In 6.3, timeout and retransmission occurs at 4 seconds and doubles after that to a max of 8 seconds, resulting in 2 retransmissions. You can alter timeout values by calling the lower-level call rpc_broadcast_exp().

dhcp.client
  • The dhcp.client previously sent a request to the DHCP server for the DHCP options that it could apply (IP address, netmask, etc.), but users couldn't modify this list. We've added support for a /etc/dhcp/dhcp-options file, so that you can request options that aren't handled by dhcp.client directly.

    When received from the server, these options are passed to the /etc/dhcp/dhcp-up script. Previously, dhcp.client relied on the server's passing all options in its client definition to that client whether those specific options were requested or not. If you're adding option handling to the dhcp-up script, you must also add that option to the dhcp-options file. For more information, see dhcp.client in the Utilities Reference. (Ref# 19509)

  • If you specify the -a option, dhcp.client sets the configured IP address as an alias. This allows it to coexist with AutoIP and its link-local address.
ntpd and ntpdate
These binaries can now adjust the time if the value to process is less than 1 ms in the past. (Ref# 17593)
rcp
This utility uses ftruncate() when copying a file, and rcp used to fail if the filesystem didn't support this function (i.e. ftruncate() failed with ENOSYS). It now continues. (Ref# 16487)
slinger
Slinger used to corrupt the beginning of the CGI script data stream if the HTTP request was a POST request. This has been fixed. (Ref# 20118)
ping
We modified ping to not require the FPU. (Ref# 15324)
pppd
  • This daemon used to leak memory when used in on-demand mode, as the connection was dropped and reestablished over time. (Ref# 21427)
  • Whenever you start pppd in on-demand mode, a session is established. When you terminate pppd, the created PPP interface should be destroyed. Formerly, the interface wasn't destroyed, so it was listed when pppd wasn't running. This has been fixed. (Ref# 21418)
pppoed
As a convenience, pppoed mounts the io-net DLL npm-pppoe.so if io-net hasn't already loaded it. The pppoed daemon used to do this using the system() function, which locates the mount command with the PATH of the user executing pppoed.

This was a security problem, because non-privileged users could have placed their own mount command in the path and had it executed as root. This could allow a local non-root user root access. The pppoed daemon now calls mount() directly. (Ref# 21675)

<netinet6/in6.h>
Compiling a C++ application using this header file (which <arpa/inet.h> includes) resulted in an error:
In file included from /usr/qnx630/target/qnx6/usr/include/arpa/inet.h:79,
from tst.cc:3:
/usr/qnx630/target/qnx6/usr/include/sys/types.h:263: error: `size_t' not
declared

This has been fixed. (Ref# 21204)

<kvm.h>
Compiling a C++ application using this header file used to result in an error related to undefined references. This has been fixed. (Ref# 19974)
ntpd and ntpdate
When ntpd or ntpdate (in broadcast/multicast mode, -M option) received an update from the NTP server, if the result of the comparison between the current time and the time from the server was 0 (i.e. no update was needed), an incorrect random residual value might have been stored. This residual value would then be added to the next time-synchronization update if the comparison between the current time and the time from the server was nonzero. This has been fixed. (Ref# 21766)
telnetd
During the initialization of the telnet link, if the client sent a large number of parameters to negotiate, telnetd used to overrun its reply buffer with the responses to all of the request's parameters. The telnetd daemon now flushes the buffer if it becomes full. (Ref# 21965)
route, arp, netstat, npm-tcpip-v4.so
  • The TCP/IP stack used a monotonic clock internally. Interfaces that used an absolute timeout value to specify a timeout, or to query a timeout, were converted to use a relative timeout value. Utilities that used this interface were converted to use a relative timeout value. This introduced portability and maintenance issues because the timeout values were incorrectly applied if the application wasn't modified. These interfaces once again use an absolute timeout. The interfaces effected are:
    • The Routing Socket rt_metrics structure member rmx_expire — the lifetime for the route

    The arp, route and netstat utilities had been modified to supply a relative timeout rather than an absolute one. We've changed them back, so that they again use an absolute timeout value. (Ref# 22877)

sysctl, npm-tcpip-v4.so, <netinet/icmp_var.h>
The TCP/IP stack would always respond to the ICMP timestamp request. You can now turn this feature off with the sysctl utility or the sysctl() function. The object to control this is net.inet.icmp.tstamprepl; the default is 1 (on). (Ref# 23329)
sysctl, npm-tcpip-v4.so, <netinet/in.h>, <netinet/ip_var.h>
The TCP/IP stack by default uses sequential IP header IDs. You can now enable random IP header IDs, by using the sysctl utility or the sysctl() function. The object to control this is net.inet.ip.random_id; the default is 0 (off). (Ref# 23328)
fs-cifs
  • When using fs-cifs, pread() no causes the file pointer to be changed. This had the potential to corrupt binaries being launched over the CIFS network protocol when using QNX Neutrino Core OS 6.3.2. (Ref# 38575)
  • fs-cifs no longer faults if an empty password ("") is passed on the command line. (Ref# 27957)
  • fs-cifs no longer faults when you use a password longer than 32 characters. (Ref# 24252)
  • If you're using fs-cifs to rename a file in the same directory, while changing only the case of letters in the filename (e.g. file to FILE) and the server is Windows, the file is no longer deleted. (Ref# 23706)
  • By default, if the CIFS server can't be reached, or isn't responding, it could take a long period of time before an application fails, as TCP timeouts would be applied. We've added a new -o timeout=num_seconds option that lets you specify the timeout to apply. This is applied to all server-blocking operations (e.g. mount, open(), read(), write(), and so on). Note that you could always use a signal to unblock the application. (Ref# 23115)
  • fs-cifs now supports more modern dialects. This improves compatibility with later Windows OS releases. This results in improvements in the accuracy of file time status, and quicker mounting of Windows shared directories. (Ref# 38233)
  • When using fs-cifs on PPCBE targets, fs-cifs formerly could return an unexpected errno back to applications that were trying to connect to resource-manager processes, but resolve the manager pathname via the CIFS mountpoint rather than the manager process if that process wasn't running. This could occur if the fs-cifs mountpoint is /, and the application is trying to resolve a pathname under /dev. For example, devc-pty might not have launched properly if the power manager weren't running, because fs-cifs returned an errno other than EBADF. This has been fixed. (Ref# 25447)
  • If there had been a successful mount of a share, and then the share was umounted, subsequent mounts of that same share would succeed, even if the user and password credentials specified were incorrect or missing. This has been fixed. (Ref# 27151)
  • The stat() times of a file accessed over the network using fs-cifs on a PPC target are now correctly decoded. (Ref# 22726)
  • When fs-cifs has a connection to the network server, and the server is rebooted, or some kind of temporary network failure occurs, fs-cifs tries to reestablish the connection and resume the operation it might have been doing. If that operation is a readdir(), fs-cifs no longer loses its place in the directory. It formerly could have returned duplicate entries, or missed entries. (Ref# 23729)
  • fs-cifs now implements the file access modes O_APPEND and O_TRUNC correctly. It formerly could potentially result in file corruption. (Ref# 38567)
  • If fs-cifs failed to authenticate with the server using an encrypted password, it would then attempt to authenticate with the server using an older method while sending the password unencrypted. This behavior has been changed to only send the password encrypted, unless you specify the option -o plainpwd. You might need the -o plainpwd option when mounting shares on older versions of Windows. (Ref# 39865)

    The new password options are as follows:

    -o plainpwd
    If logging in with an encrypted password fails, try to log in by using the password unencrypted.

    Note: Sending passwords in plain text may be considered a security problem.

    -o showpwd
    Show the plain-text password in the log file.

    Note: Adding the password to the log file may be a security problem if unauthorized personal have access to the log file.

fs-nfs3
  • fs-nfs3 no longer (depending on the server implementation) causes an application calling readdir() for a NFS-mounted directory to loop forever. The call to readdir() never returned NULL; instead, it started at the first directory entry again. This has been fixed. (Ref# 23092)
  • Using the -w size=num and -w number=num options to change the size of the cache for asynchronous write operations no longer causes internal cache corruption. (Ref# 25186, 20810)

    Note: These options aren't documented yet; for a description, see Known issues: Network protocols,” below.

  • The usage message now correctly says that the -s option, which specifies to use a soft mount, is a mountpoint option, not a global option. (Ref# 23381)
  • fs-nfs3 now supports values greater than 8096 for the -B option. (Ref# 20810)
  • If you're using fs-nfs3 with asynchronous writes, and the server is using root-squashing (i.e. it maps root to anonymous or nobody), you can now create directories and files correctly. (Ref# 25113)
fs-nfs2, fs-nfs3
  • NFS requests always have a unique identifier (xid) value. If a NFS server stops responding (for example because of a temporary network failure) fs-nfs2 and fs-nfs3 try to remount the server and resend the request. We've found that some servers refuse to reply to a request if the request's xid hasn't been changed after a remount, which is against the NFS specification. We've added an -x option to work around this problem; it causes the client to change the xid of the request after a remount. (Ref# 25402)
  • When you mount and unmount a NFS mountpoint repeatedly for hundreds of iterations, there's no longer a potential for a resource to be unreleased, causing all further mount attempts to fail. There's still a timeout period that must expire before mounts can continue. Unless you're doing this operation in a loop, you aren't likely to encounter this timeout. (Ref# 15078)
  • fs-nfs2 and fs-nfs3 are no longer vulnerable to improperly formatted RPC packets (e.g. those generated by a reconfigured NFS server for which the client had established a mountpoint). (Ref# 21480)
  • When you now call mkdir() with a pathname, if a symbolic link already exists with that pathname, mkdir fails with the errno value EEXIST; mkdir() previously resolved the link. (Ref# 19213)
  • In some cases, fs-nfs2 and fs-nfs3 wouldn't treat a TCP connection as a stream, and would expect that the entire packet should be returned with a read(). This would cause false failures, and fs-nfs2 and fs-nfs3 would remount the NFS server more times than necessary. We've fixed this. (Ref# 8873)
  • A link pathname that ends in a slash is no longer treated as a link rather than the directory it points to. For example, readlink() now returns an error instead of data for a path that ends in /. (Ref# 19209)
  • If you specify O_EXCL and O_CREAT for open(), and the path names a symbolic link, open() now correctly fails and sets errno to EEXIST. (Ref# 19210)
  • mkfifo() now fails with EEXIST if the path names a symbolic link. (Ref# 19212)
  • When deleting a directory, fs-nfs2 and fs-nfs3 would incorrectly attempt to use a file operation first, and then a directory operation. This made some NFS servers stop communicating with fs-nfs2 or fs-nfs3. We've fixed both client filesystems to use only a directory operation. (Ref# 38671, 38672)
fs-cifs, fs-nfs2, fs-nfs3
The usage message now correctly states that you don't need to specify a server-export/mountpoint combination on the command line when you launch fs-cifs, fs-nfs2, or fs-nfs3. You can invoke the mount command later to add mountpoints. (Ref #15446)
nfsd
  • If the export in the /etc/exports file is a link to another directory, showmount now correctly displays the link pathname instead of the target pathname. (Ref# 26149)
  • nfsd previously became permanently blocked on a FIFO if a Neutrino NFS client attempted to create and use one. It now supports FIFOs as described in the NFS version 3 specification. The Neutrino fs-nfs2 and fs-nfs3 NFS clients don't currently support FIFO special files. (Ref# 11098)

    Note: When using nfsd, be careful about what files are exported. If you don't have specific control over the NFS client and what files are accessed by the client, you shouldn't export directories that contain nonregular files (e.g. /dev). If these files don't have regular file semantics, nfsd may have unexpected behavior, such as becoming permanently blocked on the manager that owns the pathname.

  • nfsd no longer faults if it accesses a directory pathname that's longer than 256 characters to service a NFS version 2 request. (Ref# 38441)

What's new: Photon

Image loading
Fixed an error when loading png files, which occasionally would cause SIGSEGVs.
Helpviewer
Changed the helpviewer to allow matching of whole words when searching inside documents.
Photon File Manager
The Photon File Manager now has a new addition to its preferences dialog that lets you select a filename-encoding scheme. This feature allows PFM to properly display filenames that aren't encoded in valid UTF8. For details, see the pfm entry in the Utilities Reference.
Photon Library (libph.so)
  • Removed compilation type problem for PdSetTargetDevice().
  • Fixed a bug where a non-editable combobox wouldn't give focus to the list when clicked.
PxConfig* API
The new API has been reworked to lift some of the restrictions of the old API. The old API can hold only one config file open at a time, seriously limiting its practicality (particularly for use in a library).

All existing PxConfig* calls (from pre-6.3) continue to be supported in the form of macro wrappers around the new API.


Note: You need to recompile your applications if you're moving to 6.3 — we encourage you to migrate to the new API, particularly for new projects. But apps that worked with the old API should continue to work with the new.

For details on the new API, see the PxConfig* entries in the Photon Library Reference.

Voyager and IDE docs
If your connection configuration includes a proxy server, remember to add the following in the Proxy Overrides field in the Connection tab (Edit-->Preferences):

127.0.0.1, localhost

This will allow the IDE's help system to locate the files it needs.

Application Builder
Fixed an error when PhAB builds and tries to run phabbind.
Shelf (Launch menu)
  • The Launch menu was changed to use the /etc/photon/launchmenu directory structure to generate the launch menu. For details, see the chapter Using the Photon microGUI in the Neutrino User's Guide.
  • Added a “launch in terminal” toggle to the launcher plugin.
phfont
The design architecture has evolved from 6.2.x. Under 6.2.x, io-graphics was able to load the font server into its own data segment in order to speed up rendering services. This interface has been taken to a new level, through libfont, by allowing several system configurations:
  1. An external font server and a client font instance within io-graphics.
    Benefit:
    Increased speed.
    Cons:
    Increase in memory footprint. Although io-graphics instantiates a client font instance, it can use greatly reduced resources, since it isn't concerned with other application requests.
  2. A server font instance within io-graphics. This is the same behavior as 6.2.x. If an external font server isn't started, io-graphics will attempt to start a server font instance.
    Benefits:
    Good speed; middle memory footprint.
    Cons:
    Slower than option 1, since the graphics driver may have to wait for an outside client font request to complete.
  3. An external font server only.
    Benefit:
    Minimal memory footprint
    Cons:
    Slowest option

Client applications may also load a private client font instance, resulting in maximum speed when making font requests. Please read the new documentation for phfont, fontadmin, and libfont (Font Library Functions, specifically Pf*Dll() API calls).

Under the 6.3 architecture, rendering plugins are utilized by phfont. These DLLs are located in /lib/dll/font. Each rendering DLL has an embedded use message; just type use dllname.

The following binaries are no longer required:

  • phfontphf
  • phfontpfr
  • phfontFF
  • phfontFA.

Please read the documentation on phfont for further details. Options for the DLLs are set via the fontopts file; see the docs on fontadmin for further details.

Due to the new library (libfont), when linking against a static libph you must also link against libfont.

embed_font
You can use this script to copy all the font system binaries and libraries to a target build image. Usage is simple:
embed_font target_root_directory
fontopt is now fontopts
The fontopt configuration file is now deprecated and no longer used. Use the fontopts file instead. See the docs for phfont and fontadmin for further details.
fontview
The fontview program is a font-viewer application that can display glyphs from any font format supported by phfont, without having to install the font file. For more information, see the usage message (type use fontview from a pterm).

The fontview utility uses the same rendering plugins as phfont.

mkfontdir
This utility now uses the same rendering plugins as phfont to process index files.
io-graphics
  • Now has a new command-line format; supports configuration file, and multi-headed display.
  • The io-graphics initialization sequence no longer breaks some graphics drivers, such as devg-smi7xx. (Ref# 24084)
  • The io-graphics server no longer locks up Amanda PCI, MGT5200 and other boards. (Ref# 25861)
  • io-graphics now supports the following wide-screen video modes:
    • WXGA (1280x800)
    • WXGA+ (1440x900)
    • WSXGA+ (1680x1050)
    • WUXGA (1920x1200)

    These are the standard display sizes for laptops with wide screens. (Ref# 25744)

TrueType fonts
We fixed a problem where PhAB for Windows wouldn't recognize and render user-supplied TrueType fonts. (Ref# 19865)

To install a TrueType font:

  1. Use the Windows Control Panel to install the font.
  2. Add the .ttf file to the following directory:

    %QNX_TARGET%\usr\photon\font_repository directory

  3. Run mkfontdir so that the font appears in the font index file (fontdir).
Pg*() functions
Most Pg*() functions have Cx* versions, which are context-specific.

Note: Since the Pg*() versions are implemented as macros based on their *Cx() counterparts, they no longer have symbols in the new libraries; you'll need to recompile your code if you use these functions.

The macros are defined in the <PhProto.h> public header file.


New window frames
The window frames have been updated with a new look and new decorations. You can revert to the 6.2-style window frames by moving or removing /usr/photon/dll/winframe_updated.so.

You can have the new window frames on the desktop and have the old window frames in PhAB by launching PhAB with the -D option (ab -D) or with any other style of window frame by using the -F framestyle option.

Photon hook
You can pull in and execute a block of user code during the initialization of Photon applications. For details, see the widget styles section of the Managing Widgets in Application Code chapter of the Photon Programmer's Guide.
Photon clipboard
The Photon clipboard has been enhanced with added security. You can no longer get access to another user's clipboard files, unless you're running as root. Clipboard files are no longer compatible between 6.3.0 and previous releases. This also means that Photon applications built against libph.so.2 can't share the clipboard with Photon applications built against libph.so.3.

Note also that in 6.3, you're no longer limited to 64 KB when you cut and paste text. The limit is now your system RAM.

Clipboard Changed Event
Starting in 6.3.0, clipboard changes cause a new event to be emitted. The event will be a Ph_EV_INFO, with a subtype of Ph_CLIPBOARD_CHANGED. The data associated with the event will contain the input group number and the “clip type” string, so that the listener can call PhClipboardRead() to paste the data just copied. The old region changed event has been deprecated, but for now will still be emitted when the clipboard changes.
Multimedia
  • New MIDI parser and configuration-file documentation.
  • The dvdplayer is removed from the old Multimedia library.
phlogin
The default login application is now phlogin2, which provides a user icon that you can select to log in. If you remove phlogin2 from the path, phlogin (the original GUI login from 6.2) is used automatically.
savercfg
  • There's now support for power-saving modes and enhanced password protection.
  • Format of the config file has changed, but the new savercfg/saver are able to read both old and new formats.
  • The new savercfg writes only the new format, so the old format will be lost once you change your settings. The transition is essentially transparent from the user's point of view, but anyone sharing their homedir between 6.3/6.2.x platforms should be aware of this.
PtExit()
This function no longer causes individual threads to exit. See the docs for details.
Pt_CB_NUMERIC_CHANGED
If the PtNumericInteger and PtNumericFloat widgets have the Pt_CALLBACKS_ACTIVE bit set in the Pt_ARG_FLAGS resource, these callbacks are also invoked when your application changes the Pt_ARG_NUMERIC_VALUE with a call to PtSetResource() or PtSetResources(), or if the Pt_ARG_NUMERIC_VALUE is changed indirectly by a change to Pt_ARG_NUMERIC_MIN or Pt_ARG_NUMERIC_MAX.
Screensavers
On machines running the QNX Neutrino Core OS 6.3.2, if a screensaver is configured to require a password, and you press Cancel at the screensaver's password prompt, the screensaver no longer exits. (Ref #38266)
Security
New versions of the following files fix some security vulnerabilities in Photon reported by iDefense.com:
  • target/qnx6/armle/usr/lib/libAp.a
  • target/qnx6/armle/usr/lib/libph.so.3
  • target/qnx6/armle/usr/lib/libApS.a
  • target/qnx6/armle/usr/lib/libph.a
  • target/qnx6/armle/usr/lib/libphS.a
  • target/qnx6/armle/usr/lib/libAp.so.3
  • target/qnx6/armle/usr/photon/bin/fontsleuth
  • target/qnx6/mipsle/usr/lib/libAp.a
  • target/qnx6/mipsle/usr/lib/libph.so.3
  • target/qnx6/mipsle/usr/lib/libApS.a
  • target/qnx6/mipsle/usr/lib/libph.a
  • target/qnx6/mipsle/usr/lib/libphS.a
  • target/qnx6/mipsle/usr/lib/libAp.so.3
  • target/qnx6/mipsle/usr/photon/bin/fontsleuth
  • target/qnx6/ppcbe/usr/lib/libAp.a
  • target/qnx6/ppcbe/usr/lib/libph.so.3
  • target/qnx6/ppcbe/usr/lib/libApS.a
  • target/qnx6/ppcbe/usr/lib/libph.a
  • target/qnx6/ppcbe/usr/lib/libphS.a
  • target/qnx6/ppcbe/usr/lib/libAp.so.3
  • target/qnx6/ppcbe/usr/photon/bin/fontsleuth
  • target/qnx6/shle/usr/lib/libAp.a
  • target/qnx6/shle/usr/lib/libph.so.3
  • target/qnx6/shle/usr/lib/libApS.a
  • target/qnx6/shle/usr/lib/libph.a
  • target/qnx6/shle/usr/lib/libphS.a
  • target/qnx6/shle/usr/lib/libAp.so.3
  • target/qnx6/shle/usr/photon/bin/fontsleuth
  • target/qnx6/x86/usr/lib/libAp.a
  • target/qnx6/x86/usr/lib/libApS.a
  • target/qnx6/x86/usr/lib/libph.so.3
  • target/qnx6/x86/usr/lib/libph.a
  • target/qnx6/x86/usr/lib/libphS.a
  • target/qnx6/x86/usr/lib/libAp.so.3
  • target/qnx6/x86/usr/photon/bin/fontsleuth

This change fixes these issues:

  • Local exploitation of a format string vulnerability in the fontsleuth command allows attackers to gain root privileges — iDefense Security Advisory 02.07.06. (Ref #29447)
  • Local exploitation of a stack-based buffer overflow vulnerability libAp allows local attackers to gain root privileges — iDefense Security Advisory 02.07.06. (Ref #28807)
  • Local exploitation of a stack-based buffer overflow vulnerability in libph allows local attackers to gain root privileges — iDefense Security Advisory 02.07.06. (Ref #29448)

What's new: Windows-specific

We now provide two shells:

  • Bash shell (bash.exe)
  • Korn shell (ksh.exe)

You'll find these executables under ${QNX_HOST}/usr/bin (e.g. C:\QNX630\host\win32\x86\usr\bin). You may want to create desktop shortcuts for these or other executables you'll use often.

What's new: Documentation


Note: Service Pack 3 includes the latest documentation, including the Documentation Update 1.0.0. Don't install the Documentation Update 1.0.0 after installing Service Pack 3, or your system's documentation will be in an inconsistent state.

  • We've developed a Neutrino User's Guide covering a broad range of topics to help users as well as system administrators work with a Neutrino system.
  • We've added a description of the various commit levels to the documentation for io-blk.so in the Utilities Reference.
  • We've added entries to the Utilities Reference for gcov, gprof, mksbp, and qde. (Ref# 17542)
  • We've removed PtColorPalette from the Photon Widget Reference.
  • We've deprecated PtTerminalFont() from the Photon Widget Reference.
  • We've added PtTerminalFontInfo() to the Photon Widget Reference.
  • We've added the cursor structure file description to the Photon Library Reference.
  • We've made changes the new Pg*Cx() functions in the Photon Library Reference.
  • We've added PgDefaultAlpha() and PgDefaultChroma() to the Photon Library Reference.
  • We've updated the Working with BSPs chapter of the Building Embedded Systems guide to describe how to work with the new simplified packaging of Board Support Packages. (Ref# 38711)

Experimental items


Caution: Experimental software is primarily provided for customers and the community to try out, and perhaps to get a glimpse of what might be in store for the future. For information about the use of experimental software, see the Commercial Software License Agreement (CSLA) or Partner Software License Agreement (PSLA) in the Licensing area of our website, http://www.qnx.com/legal/licensing/.

The experimental items in QNX SDP 6.3.0 are:

  • asynchronous messaging

Known issues

QNX Momentics 6.3.0 SP3 contains known issues in these areas:


Note: We're actively investigating all known issues.

Known issues: Booting

  • The combination of F1 and F4 for diskboot (Safe Mode, Don't mount filesystems) doesn't work. (Ref# 21876)

    Workaround: Press F5 to start the debug shell; it simply starts fesh just after mounting the filesystems. If you want to run a consistency check a filesystem, run /sbin/chkfsys after the shell starts.

  • The graphics enumerator on x86 systems doesn't detect the Fujitsu Coral-PA reference card. (Ref# 25057)

    Workaround: Edit your /etc/system/enum/graphics enumerator file, search for Coral-P, and add the following line:

    device(pci, ven=10cf, dev=201e)           # Fujitsu Coral-PA
      

    The Coral-PA card will be enumerated when you reboot the system.

    The Coral cards don't support text mode, so on x86 systems, you need two video cards: one to use in text mode, and the Coral card.

  • QNX Neutrino might not boot on machines with an ICH6 chipset with the hard drive on SATA, and a CD drive on EIDE. The OS detects the SATA device and then hangs on EIDE detection. (Ref# 40446)

    Workaround: We've added a new -R command-line option to diskboot and a new “Hit space...” option, F3. Using these prevents diskboot from restarting a devb- driver. The drivers are restarted if only a CD-ROM is found. In the case of this issue, the restart means devb-ahci and devb-eide compete for the same bus, which results in a hang.

  • The printed 6.3.0 Service Pack 3 Installation Guide says that the configuration file for updating the disk drivers must be called drvrupdate.cfg, but it must actually be called drivers.cfg. (Ref# 40994)
  • The boot image for self-hosted Neutrino systems now starts io-hid and devc-con-hid, which support PS2, USB, and all other human-interface devices, instead of devc-con. The documentation doesn't describe devc-con-hid, and the Neutrino User's Guide still says that diskboot starts devc-con. The command-line options for devc-con-hid and devc-con are similar. (Ref# 41834)
  • Some Sony VAIO laptops don't assign an interrupt to a USB device; when you're booting Neutrino, you'll see some “InterruptAttachEvent failed” messages. (Ref# 41237)

    Workaround: Contact Technical Support to get a customized utility that enables the interrupts.

Known issues: BSPs, DDKs, and TDKs

  • Don't use a BSP with SP1, SP2, or SP3 unless the BSP's release notes state that you should. Please contact us for more information.
  • On Neutrino hosts, running the default uninstall script uninstalls both the binary and source BSP packages. (Ref# 18894)
  • SH4 binaries linked with QNX Neutrino 6.2.1 or earlier generate an “illegal instruction” error on exiting when you run them on SH4A targets. Renesas changed the nop opcode between SH4 and SH4A, and some of our process-initialization files (inserted at link time) used the old form. This was fixed in QNX Neutrino 6.3.0. (Ref# 24701)

    Workaround: Relink any SH4 binaries that you linked with QNX Neutrino 6.2.1 or earlier.

  • When you install a BSP or TDK on a self-hosted system, some binaries overwrite system binaries; if you install more than one BSP or TDK, it might overwrite binaries installed by another BSP or TDK. For more information, see the release notes for the BSPs and TDKs. (Ref# 25958)
  • packagebsp:
    • In the shiplist files, you can't add comments to the end of a line. For example, this won't work:
      /binaries/content/file  #this is a test
        

      We do allow comments that take up an entire line, like this:

      #################
      #Binary shiplist#
      #################
      
      #/binaries/content/foo
      /binaries/content/foo2
      #end of shiplist
        

      (Ref# 29371)

    • On Windows, packagebsp prints extra newline characters when you run it with bash. (Ref# 38457)
    • Some of the options to packagebsp are in pairs; one might specify the root directory of an optional component, while another specifies the shiplist. If you specify only one of these options, packagebsp doesn't add the optional component. Instead, it should give an error message and then exit. (Ref# 38366)
    • The packagebsp script should log its complete output (both regular and error messages) to a file that you can inspect later. (Ref# 30048)
    • packagebsp doesn't make sure that you have enough disk space available in the temporary directory or the destination directory. (Ref# 29968)
  • setupbsp:
    • On Windows, don't use a DOS-style relative path for the installation directory, or an error will occur during installation. For example, C:installdir is a DOS-style relative path (note there isn't a backslash after the C:). The path should always start with C:\, C:/, or /. (Ref# 38654)
    • The uninstaller that setupbsp creates removes the files that are listed in the shiplist, but leaves behind files added since you installed the BSP. (Ref# 38490)
    • If you specify the -v option for verbose output, setupbsp should send some of the output to stderr as well as to stdout. (Ref# 38453)
    • You can use setupbsp multiple to set up a BSP in different working directories, but the uninstaller that setupbsp creates removes the only instance of the documentation for the BSP the first time that you run it; it should remove the documentation only when you uninstall the last instance of the BSP. (Ref# 38363)
    • setupbsp doesn't check to make sure you have enough disk space available before setting up the BSP. (Ref# 38249)
    • The uninstaller that setupbsp creates doesn't remove any directories. (Ref# 38241)

Known issues: Compiler and tools

gcc
  • If you're using gcc 3.3.5 with the deprecated GNU libstdc++ library, cout/cin doesn't work on SH targets. Use the Dinkum C++ library instead.
  • MIPS C++ support with gcc 3.3.5 works only with the Dinkumware NO_EXCEPTION libraries. Anything else will generate a SIGILL error.
  • On MIPS, code that uses exceptions in shared libraries generates a SIGILL or other signal. Exceptions work as expected in static libraries and executables. (Ref# 23355)
  • There's an alignment issue with gcc 2.95.3, where an __attribute__((__aligned__(N))) applied to a typedef also applies that alignment to the base type. (Ref# 18662)

    For example, the following code applies an alignment of 8 to both my_long_long_t and the long long:

    typedef long long my_long_long_t __attribute__((__aligned__(8)));

    Workaround: Make a duplicate typedef of a dummy type:

    typedef long long my_dummy_t;
    typedef my_dummy_t my_long_long_t __attribute__((__aligned__(8)));
  • Nested functions (i.e. one function declared inside another) aren't standard C or C++, and they can cause problems on SH and PPC platforms. We recommend that you not use GNU extensions to ANSI C; for more information, see “Extensions to the C Language Family” in the gcc documentation at www.gnu.org.
  • With gcc 2.95.x and 3.x, C++ shared objects can optionally use __cxa_atexit(), which allows their destructors (normally registered with atexit()) to be called at dlclose() time. This feature isn't yet supported; as a result, you can't use dlopen() and dlclose() on C++ shared objects. (Ref# 19702)

    Workaround: Add the following to your C++ shared library:

    #include <dlfcn.h>
    
    /*
    * stick around for atexit(dtors)
    * add to common.mk:
    * CCFLAGS += -DSONAME_STR=\"$(notdir $(FULLNAME)$(VERSION_TAG_$(BUILD_TYPE)))\"
    */
    
    extern void hackslash(void) __attribute__((constructor));
    
    void hackslash(void) {
      dlopen(SONAME_STR,RTLD_NOW);
    }
        
  • On most platforms, the gcc 3.3.5 options -fpic and -fPIC are synonymous, but on PPC they're different and incompatible. We chose -fpic over -fPIC for performance reasons, and our PPC OS is built that way. (Ref# 21947)

    Workaround: If you see problems (such as relocation-truncation errors) at link time when building shared objects, consider splitting your shared object into multiple shared objects.

  • When you're compiling with gcc 3.3.5 for MIPS, you might get this error:
    relocation truncated to fit: R_MIPS_GPREL16
      

    (Ref# 22822)

    Workaround: Pass the -Wac,-G4 option to qcc.

  • gcc 2.95.3 ignores #pragma pack() directives for global structures on the ARM platform. For example, the structure in this code is still padded to 8 bytes instead of the expected 5:
    #pragma pack(1)
    struct five {
        unsigned char a;
        unsigned b;
    };
    
    struct five five;

    (Ref# 5151)

    Workaround: This problem doesn't affect code generated with gcc 3.3.5.

  • Both gcc 2.95.3 and 3.3.5 report parsing errors for seemingly simple code. (Ref# 20409)

    Workaround: See “Parse errors for simple code” in gcc.gnu.org/bugs.html#known.

  • If you use the -Os option with gcc 3.3.5 to optimize for size, you might get some compile errors. This issue will be fixed in gcc 3.4. (Ref# 19955, 21347).
gdb
  • Watchpoints don't work on the Freescale 8540ADS and Lite5200 platforms. (Ref# 21293)
  • Black-box regression tests for watchpoints fail for ARM targets. It appears that the watchpoint isn't correctly set. (Ref# 25599)
  • If you have two breakpoints exactly one instruction apart, the second breakpoint won't stop the debugger. (Ref# 20833)

    Workaround: Disable breakpoints in code that you're single-stepping through.

  • gdb may display a “Compiled with unknown debugging format” warning when debugging binaries compiled with gcc 3.3.5. This doesn't seem to affect the debugger in any way. (Ref# 20658)
  • If you run gdb over phditto, gdb hangs, because the Photon server spawned by phrelay inherits phrelay's set of ignored signals including SIGUSR1, which gdb relies on. (Ref# 24817)

    Workaround: Launch pterm windows using pwm's Desktop Menu (press Alt-Enter or right-click on the desktop background) instead of using the Terminal button on the shelf. Only pterm windows started by shelf inherit the ignored SIGUSR1.

    Another option is to write a wrapper around gdb to reset SIGUSR1.

  • On SH4 targets, gdb sometimes displays “finish meaningless on outermost frame” when trying to step out of a DLL if stop-on-solib-events is on. (Ref# 21502)

    Workaround: Disable stop-on-solib-events, or download the newer version of gdb from our website; log into your myQNX account, then go to Prerelease Software-->Trial Software-->Trial Software - QNX Momentics 6.3.x-->GDB 6.2.1 Experimental Release in the Download Center.

  • If you reset your target board while you're debugging from the Windows-hosted IDE, and you've clicked Terminate and remove in the IDE Debug view, the ntoCPU-gdb.exe process may run ready, consuming 100% of CPU. (Ref# 25174)

    Workaround: There is no workaround (other than not following this sequence of events). If gdb does run ready, you must terminate it from the Windows Task Manager. This problem will be fixed in a future version of gdb; you can get an experimental version from the Download Center on our website; look under Prerelease Software-->Trial Software-->Trial Software - QNX Momentics 6.3.x.

ld
  • Between the 2.10.1 version of the GNU linker in QNX Momentics 6.2.1 and the 2.12.1 version in QNX Momentics 6.3.0, a bug was fixed in the handling of relocation addends for SH targets. As a result of this fix, SH startup binaries (e.g. startup-systemh) that were created prior to QNX Momentics 6.3.0 won't work correctly if included in a boot image generated in QNX Momentics 6.3.0.

    Workaround: Rebuild the startup binary using QNX Momentics 6.3.0. The resulting startup will work with both 6.2.1 and 6.3.0.

  • Version 2.12.1 of ld produces bad R_386_NONE relocations if you're using gcc 2.95.3 and C++ to build shared objects. (Ref# 20433)

    Workaround: SP3 also includes version 2.10.1, and the qcc configuration files have been set up to use the older linker only if you're using gcc 2.95.3 and C++ to build shared objects.

make
  • The Windows version of make doesn't work with UNC paths, such as //some_machine/dir. (Ref# 24202)

    Workaround: Use drive-letter mountpoints instead.

  • Our recursive makefiles use the value of the NAME environment variable (if set) to name the resulting binary. We realized (too late) that this was too generic a variable to use for this purpose; if you have a NAME environment variable set on your system for some other purpose (e.g. your name or email address), its value will be used as the name of your binaries. We apologize for this mix-up. (Ref# 29843)

    Workaround: Unset the NAME environment variable before you build any executables.

qcc
  • In order to use gcc 3.3.5's support for the PPC Altivec extensions, add this option:
    -I $QNX_HOST/usr/lib/gcc-lib/powerpc-unknown-nto-qnx6.3.0/3.3.5/include
      

    to the qcc command line. This tells qcc where to find the <altivec.h> header file. GCC doesn't need this workaround, as it knows to search its own include directories. (Ref# 26109)

  • We're deprecating the -M option as of QNX Momentics 6.3.0. In 6.4, qcc will use -M for generating Makefile dependencies. (Ref# 26693)
qcp
The qcp utility works only on x86 platforms. (Ref# 9500)
usemsg
If you use usemsg to add versioning information or a usage message to a binary that has had a stack size set with the -N option to qcc, sometimes the stack-size modification is lost. (Ref# 25103)

Workaround: Pass the -l option to usemsg.

Windows-specific
  • The IDE and tools suffer from performance problems when installed on a Windows workstation with Novell client software. The problem also affects all Cygwin applications. (Ref# 21730)
  • Because of recent changes to the Cygwin library, you can't use COM1 as the port name for serial debugging under Windows. Instead, you must use /dev/com1.
  • The usemsg.exe utility might not be able to find the required files. (Ref# 21881)

    Workaround: Make sure the QNX Momentics Cygwin is in your PATH before the “real” Cygwin, or delete the Cygwin make.

Known issues: Core OS

Kernel

procnto
  • New! Specifying the -as option to procnto on SH platforms is the same as specifying -ad, not -ae as stated in the Utilities Reference. (Ref# 22858)
  • Physical memory fragmentation can occur when a lot of threads are created and remain alive for a period of time before most of them are destroyed. This fragmentation might cause problem for device drivers that need physical, contiguous memory (passing the MAP_PHYS flag to mmap()) for DMA and other device-related operations.

    This problem doesn't affect normal memory allocation, such as that using malloc(). When physical, contiguous allocations fail, malloc() and other normal memory-allocation operations still work. Also, this problem describes a situation when it isn't possible to allocate 4 MB physical, contiguous memory in a system that has 64 MB RAM. It may still be possible to allocate small chunks of physical, contiguous memory. As most device drivers need only small chunks of physical, contiguous memory (e.g. 32 KB), this problem may not be a concern for them either.

    When creating a thread, the OS kernel uses _smalloc() to allocate memory for various internal data structures called objects. When the thread is destroyed, the kernel releases the memory to a pool of free objects for reuse the next time an object is needed. When a free-object pool reaches a certain size, the OS releases objects directly back into a kernel memory pool that only the kernel uses. The kernel does not return the memory to the free pool of general memory that all the processes in the system use. Physical memory can get fragmented when kernel holds on pages of memory here and there; eventually large (4 MB and greater) physical, contiguous allocations could start to fail. (Ref# 16405)

    Workaround: Reserve enough physical contiguous memory before hand to make sure it's always available when needed.

  • The 74xx series PPCs with a 60x bus (not MBX) don't support 16-byte bus transactions. This limitation can cause unexpected alignment exceptions when using Altivec instructions to/from uncached memory regions. Symptomatic of this issue, passing messages to or from uncached memory regions can result in a kernel crash, due to the 60x bus limitation. (Ref# 14878)

    Workarounds:

    • Don't pass messages to or from uncached memory regions.
    • Disable the PPC_CPU_ALTIVEC feature flag in startup-* code to avoid using Altivec instructions in a message pass. (This also means that the OS won't save and restore the Altivec register set on a context switch.)
  • On Broadcom MIPS BCM1250 and BCM1125 chips, the startup program doesn't add cache callouts for the onboard L2 cache. This causes msync() operations that attempt to flush the cache not to force the data all the way to main memory. This isn't normally a problem, because the L2 cache uses a bus-snooping protocol and maintains consistency with the main memory anyway. You might have problems if you have the same region of memory mapped both with and without the PROT_NOCACHE attribute. (Ref# 21855)
  • Programs that you execute in place (XIP) in an image filesystem (IFS) on PPC targets might randomly crash in rare cases.

    PPC targets have separate caches for data and instructions. If the IFS is copied (or decompressed) when the data cache is enabled, the startup needs to flush the data cache. The kernel maps in the code or data segment directly from IFS for XIP; if the cache isn't flushed, the instruction cache may be loaded incorrectly, because it's loaded from the underlying memory directly, which may be different from the contents in the data cache.

    As the first-level data cache size is relatively small, the chance of running into this problem is low. We haven't seen any such crash in our kernel regression tests, and we aren't aware of any problem report from customers or internal sources which may be related to this problem. (Ref# 24783)

    Workaround: If you aren't using a mini-driver, you can add the following code segment to the startup program startup/lib/ppc/cpu_startnext.c to flush the data cache for IFS areas:

    void cpu_startnext(uintptr_t eip, unsigned cpu) {
    
        unsigned start, size, vaddr, dcache_linesize;
       
        /* First, flush the cache for ifs so that kernel can load executables
           from it without problems.
        */
    
        dcache_linesize = 1 << ppcv->cache_lsize;
        start = shdr->image_paddr + shdr->startup_size;
        vaddr = start & ~(dcache_linesize - 1);
        size = shdr->imagefs_size + (start - vaddr);
     
        for( ;; ) {
            icache_flush(vaddr);
            if(size <= dcache_linesize) break;
            vaddr += dcache_linesize;
            size -= dcache_linesize;
    }
        

    If you're using a mini-driver, please contact us for a fix.

  • When you're debugging an application on a system that's using floating point emulation (i.e. you passed -fe to procnto), attempts to step over floating point instructions cause the system to hang. (Ref# 26049)

    Workaround: Don't use floating point emulation, or don't step over floating point instructions (use a run-to-breakpoint instead).

procnto-smp
  • If you use pipelines or setpgid() on a termination process, procnto-smp can become deadlocked. You have to reboot your machine to recover. (Ref# 23481)
  • When using floating point emulation on MIPS processors, internal filesystem sanity tests have resulted in SIGILL exceptions. This problem doesn't occur if you use a hardware floating point unit. (Ref# 25206)
  • An internal test of terminal access control fails on x86 SMP. (Ref# 24948)
  • A test of mutexes on an SMP x86 platform case may cause a reboot. The test case in question produces a high degree of resource contention in order to test the reliability of the mutual-exclusion mechanisms within the OS. It does this by creating several resources with multiple threads per resource, each contending for that resource. On a four-way SMP x86 system, this test case has caused, on rare occasions, the system to unexpectedly reboot. At the time of the reported failure, there were 11 resources and 79 competing threads per resource. (Ref# 24938)
mq
If you use the instrumented kernel to trace events while you're using mq, emitting _NTO_TRACE_COMM_SMSG communication-class events might cause your application to crash with an EFAULT when it calls mq_send(). We've encountered this problem on SHLE boards. (Ref# 38082)

Workaround: Filter out the _NTO_TRACE_COMM_SMSG events by doing one of the following:

  • On the command line, filter out all COMM-class messages by passing the -F6 option to tracelogger.
  • In your application, filter out COMM_SMSG messages by calling:
    TraceEvent( _NTO_TRACE_DELEVENT, _NTO_TRACE_COMM, _NTO_TRACE_COMM_SMSG);
        
  • In the IDE, filter out COMM_SMSG messages with qconn by selecting the Class Specific mode in the System Profiler Configuration dialog, then selecting the Communication tab, selecting the Event Specific mode, and then disabling Send Message.

The side effect of filtering out these events is that the IDE's System Profiler won't be able to show you any message-passing.

Time zones
The USA is changing its time zone rules, effective 2007, enacted as part of the Energy Policy Act of 2005. While the standard rule will change across all states, US states will still have the right to choose not to observe it, per the Uniform Time Act of 1966.

This has ramifications not just for self-hosted QNX Momentics installations; the effects of this change on in-use runtime systems also needs to be considered. For example:

  • The default values you use for DST may need to be changed for the USA locales (/etc/timezone/uc_tz_t, /etc/TIMEZONE).
  • Specific rules that determine the time zone in any applications that deal with localization will need to be changed.

(Ref# 40378)

Libraries and header files

Bessel functions
According to POSIX 1003.1, the Bessel functions — j0(), j1(), jn(), y0(), y1(), and yn() — should be declared in <math.h>. They currently aren't declared in any header, but the functions are in libbessel.a and libbessel.so. (Ref# 23554)

Workaround: Declare them in your program; for the correct prototypes, see the entries for these functions in the Neutrino Library Reference.

asctime(), ctime(), gmtime(), and localtime()
These functions return a time in one of two static buffers (either a tm structure or an array of type char). Calling any of these functions can change the data in both these buffers. The documentation needs to make this clear. (Ref# 24716; Ticket ID 69174)
calloc_ram()
The prototype for this startup-library function is incorrect in the Customizing Image Startup Programs chapter of Building Embedded Systems. (Ref# 23448)

The prototype should be:

paddr32_t calloc_ram (size_t size,
                      unsigned align)
chroot()
The entry for this function in the Neutrino Library Reference incorrectly states that the effective user ID of the process must be the superuser to change the root directory. (Ref# 22761)
ELF64_R_INFO()
The definition of this macro is incorrect in <sys/elf.h>. It uses Elf32_Xword() instead of the Elf64_Xword() macro. (Ref# 40936)

Workaround: Edit the header file and change this line:

#define ELF64_R_INFO(s,t)	((((Elf32_Xword)(s))<<32) | ((Elf64_Xword)((t)&0xffffffff)))
  

to this:

#define ELF64_R_INFO(s,t)	((((Elf64_Xword)(s))<<32) | ((Elf64_Xword)((t)&0xffffffff)))
  
ENDIAN_*()
If the <cpuinline.h> file for a given processor family doesn't contain an implementation for __cpu_endian_ret*(), an application reverts to an implementation of the ENDIAN_*() macros defined in <gulliver.h>, which may have unintended side effects when used on device memory. Since the value is read multiple times, multibyte register devices that have clear-on-read behavior generate erroneous values. The implementation also isn't optimal, in that the memory location may be read several times. (Ref# 22140)
FILE* I/O functions
If a FILE* stream is placed into unbuffered mode (so theoretically all writes should physically happen immediately and any failures be detected), the low-level functions correctly indicate the errors, but the FILE*-oriented output functions (fwrite(), fprintf(), etc.) don't propagate these errors back as their return values. For example, if there's no space left on the disk, these functions don't indicate that an error has occurred. (Ref# 19598)

Workaround: Use the file-descriptor I/O functions instead, or call ferror() to check for errors after each call to fwrite(), fprintf(), and so on.

fork()
  • Physically contiguous areas aren't preserved across a fork(). If one process does a mmap() with MAP_ANON|MAP_PHYS to obtain a physically contiguous memory (drivers and the like), and then forks, the child process (which is supposed to be a duplicate of the parent) actually doesn't enforce contiguous areas when copying the parent's mappings. (Ref# 17531)
  • If you do a mmap() with MAP_ANON|MAP_SHARED with permissions of PROT_NONE, and use mprotect() to change a single page to PROT_READ|PROT_WRITE, and then fork(), the permissions of the MAP_ANON|MAP_SHARED mapping are not set per-page, but are reset to the default when the mmap() was first done, PROT_NONE. (Ref# 24585)

    Workaround: In the parent process, set the appropriate permissions when you create the mapping, or in the child process, use mprotect() to explicitly establish the mapping's protection attributes.

  • In extremely limited cases, it's possible that a call to fork() may fail and set errno to EINTR. This issue is limited to only x86, PowerPC, and SH architectures and usually occurs only when stacks have dynamically allocated all backing store (e.g. a 512 KB stack has 512 KB memory allocated) through heavy stack usage followed by a call to fork(). (Ref# 18408)
getgrouplist()
The list of groups that this function creates still includes the group ID that you pass as the basegid argument. Typically, you pass the group number from the password file for this argument. (Ref# 15547)
ham_action_fail_notify_pulse(), ham_action_fail_notify_pulse_node(), ham_action_fail_notify_signal(), ham_action_fail_notify_signal_node()
The prototypes for these functions are incorrect in the High Availability Toolkit Developer's Guide, and the names of ham_action_fail_notify_pulse_node() and ham_action_fail_notify_signal_node() are wrong. These functions all return an int. (Ref# 26253)
libc
The following functions are included in libc.a, but not in libc.so (to save space), but the documentation doesn't mention this. (Ref# 26866)
  • alphasort()
  • brk()
  • cfgopen()
  • crypt()
  • encrypt()
  • entutent()
  • fcfgopen()
  • forkpty()
  • ftw(), ftw64()
  • getgrouplist()
  • getlogin(), getlogin_r()
  • getpass()
  • getutent()
  • getutid()
  • getutline()
  • getwd()
  • getw()
  • globfree()
  • glob()
  • hwi_find_item()
  • hwi_find_tag()
  • hwi_next_item()
  • hwi_next_tag()
  • hwi_off2tag()
  • hwi_tag2off()
  • initstate()
  • inputline()
  • intr_capture()
  • intr_lock()
  • intr_release()
  • intr_timed_wait()
  • intr_unlock()
  • intr_wait()
  • login_tty()
  • modem_open()
  • modem_read()
  • modem_script()
  • modem_write()
  • nftw(), nftw64()
  • openpty()
  • pclose()
  • popen()
  • pututline()
  • putw()
  • qnx_crypt()
  • random()
  • rdchk()
  • re_comp()
  • re_exec()
  • regcomp()
  • regerror()
  • regexec()
  • regfree()
  • sbrk()
  • _scalloc()
  • scandir()
  • sched_get_priority_adjust()
  • setkey()
  • setstate()
  • setutent()
  • _sfree()
  • slogb()
  • slogf()
  • slogi()
  • _smalloc()
  • srandom()
  • _srealloc()
  • utmpname()
  • vslogf()
  • wordexp()
  • wordfree()
libmalloc
  • When using libmalloc_g, if you enable MALLOC_FILLAREA and MALLOC_CKCHAIN and do too many heap over- or underruns, then your process may fault. This occurs because the underruns and overruns may corrupt the metadata associated with heap allocations. Once the heap is corrupted, the reliability of the checking is also compromised. This is described in the section on libmalloc_g in the Neutrino Programmer's Guide. (Ref# 24428, 23322)
  • The libmalloc implementation of string.c may corrupt the heap on PPC targets. (Ref# 24394)
  • An internal string.c test case fails for the libmalloc string implementation. The libmalloc implementation of strcmp() and strncmp() incorrectly compares the two strings based on the difference between the characters treated as signed values instead of the difference between the characters treated as unsigned values. (Ref# 24369)
  • mprobe() sometimes causes the caller to fault. (Ref# 24423)
  • The libmalloc macro DH_ULEN() always returns 0 because of a bug in the definitions in the header files. If MALLOC_GUARD is undefined, DH_ULEN() is defined to be 0 in <malloc_g/malloc-lib.h>. If your code also includes <malloc_g/malloc.h>, the file explicitly undefines MALLOC_GUARD before including <malloc_g/malloc-lib.h>, resulting in the DH_ULEN() value of 0. (Ref# 24454)

    Workaround: Include <malloc_g/malloc.h> after <malloc_g/malloc-lib.h>, as follows:

    #define MALLOC_DEBUG
    #define MALLOC_GUARD
    #define MALLOC_PC
    #include <malloc_g/malloc-lib.h>
    
    ... other includes/code that depends on MALLOC_GUARD ...
    
    #include <malloc_g/malloc.h>
        
  • Memory traces may incorrectly show that allocations made before main() are associated not with a particular function, but possibly with a variable name. (Ref# 19486)
  • When you're using the libmalloc library, stack information for memory events is implemented only for x86, PPC, and SH4 architectures. The result is that line-number information and call traces aren't available for display when memory events occur on other architectures. This is a feature deficiency and will be corrected in a future release. The offset within the function where the event occurred is provided. (Ref# 12611)
  • The libmalloc backtrace information is missing for architectures other than x86, PPC and SH4. This will be implemented in future release. (Ref# 25393)
MsgSend(), memcpy()
A regression test fails for PROT_NOCACHE memory. (Ref# 24709, 21505)
name_attach()
In QNX Momentics 6.2.1B, the name_attach() server side never had to handle any _IO_* messages, but could set an error code of ENOSYS for them all. In 6.3.0, an _IO_CONNECT message is sent when the client does a name_open(); if the server doesn't reply with an EOK, the client fails to connect to the server. This message is needed in the remote case to force the establishment of the network link, and to determine that the server is actually there. (Ref# 20507)

Workaround: Add code to the server to handle this message. For an example, see the online documentation for name_attach() in the Neutrino Library Reference.

pipe()
  • When there are multiple writers to a pipe and the O_NONBLOCK flag is clear, a write of less than PIPE_BUF bytes into a full pipe could cause loss of data in the particular write even though the write returns with no error. (Ref# 20220)
  • When there are multiple readers and writers to a pipe, and reader/writer processes terminate repeatedly, the pipe manager may fault. (Ref# 20128)
pthread_cond_timedwait(), pthread_cond_wait()
The documentation for these functions should include the following (Ref# 27051):

If a thread that's blocked on a condition variable is canceled, the thread reacquires the mutex that's guarding the condition variable, so that the thread's cleanup handlers run in the same state as the critical code before and after the call to this function. If some other thread owns the lock, the canceled thread blocks until the mutex is available.


Note: Make sure that the thread's cleanup handlers unlock the mutex.

RPC Library (librpc.so, librpc.so.2, librpc.a, librpcS.a)
If all available memory is exhausted, the RPC library can potentially fault if a malloc() call fails during the first execution of either a clnt_broadcast() call or a rpc_broadcast() call. Memory corruption may occur if all thread-specific data keys are exhausted before the RPC library functions have been called. (Ref# 21945)
spawn()
On ARM targets with low-memory conditions, attempts to create a new process may result in an EINTR error instead of ENOMEM as might be expected. This happens when, during process creation, attempts to fault in the stack result in an out-of-memory condition, at which point a SIGBUS is delivered to the process, causing it to return EINTR. If the out-of-memory condition is detected before the stack is allocated, ENOMEM is returned. (Ref# 24406)
<stdio.h>
A duplicate declaration of vsnprintf() causes compile warnings. (Ref# 21880)
sysconf()
The value that sysconf( _SC_OPEN_MAX ) returns might not be correct if you've used the -F option to procnto to change the maximum number of file descriptors per process. (Ref# 16966)
tempnam()
The entry for tempnam() in the Neutrino Library Reference doesn't accurately describe how the function determines the directory portion of the temporary file's name. (Ref# 27332)

Workaround: See the entry for tmpnam(); this function and and tempnam() use the same method for determining the directory.


Note: The tempnam() function's behavior doesn't conform to POSIX.

vfork()
Internal testing causes a kernel crash on x86, ARM, and PPC platforms. (Ref# 24952)

Core utilities

mkefs, mkefts, and mkifs
The documentation for these utilities incorrectly says that if you specify a perms attribute of * for a file, the host file's permissions are used, and that for an inline file, the permissions are obtained from the umask of the user running mkefs. The actual permissions used are 0666. (Ref# 22371)
mkefs
Under Windows, if you redirect the output from mkefs to a file, the end-of-line characters will be DOS-style (CR, LF) instead of UNIX-style (CR). (Ref# 19065)

Workaround: Under Windows, use this syntax:

mkefs buildfile outputfile
  

instead of redirecting the output:

mkefs buildfile > outputfile
  
mkifs
  • Executables compiled with the -Nstacksize option and then included in images built using mkifs don't (by default) use the stacksize parameter. (Ref# 23573)

    Workaround: Specify [+raw] in the build file for any executables that you compiled with the -Nstacksize option. For more information about the raw attribute, see the entry for mkifs in the Utilities Reference.

  • The documentation for mkifs doesn't describe the difference between the raw.boot and binary.boot bootfiles. (Ref# 39923)

    Workaround: Here are descriptions:

    raw.boot
    Create a binary image with an instruction sequence prepended to it to jump to the offset of startup_vaddr within the startup header. The advantage is that when you download a raw image to memory using a bootloader, you can then instruct it to run right at the beginning of the image, rather than having to figure out what the actual startup_vaddr is each time you modify the startup code.
    binary.boot
    Create a simple binary image without the jump instruction. If you build a binary image, and you want to load it with U-Boot (or some other bootloader), you have to execute mkifs -vvvv buildfile imagefile, so that you can see what the actual entry address is, and then pass that entry address to the bootloader when you start the image. If you modify the startup code, the entry address may change, so you have to obtain it every time. With a raw image, you can just have the bootloader jump to the same address that you downloaded the image to.
QNX_HOST, QNX_TARGET
The development environment variables (QNX_HOST, QNX_TARGET, etc.) aren't set if you have a login shell other than the default (sh). This environment is picked up automatically from /etc/profile.d/qnxsdk.sh but if SHELL is set to ksh, then /etc/profile looks for *.ksh in the directory instead of *.sh and finds nothing. (Ref# 24660)

Workaround: Copy /etc/profile.d/qnxsdk.sh to /etc/profile.d/qnxsdk.ksh.

rtc
To enable reading from the RTC on a machine with a ServerWorks chipset on it (observed on a SuperMicro SuperServer 8060), you must first set the OS date and then set the RTC from the OS date:
# date 200607191700
Wed Jul 19 17:00:01 EDT 2006
# rtc -s hw
  

(Ref# 26324)

startup-bios
  • Don't use the -x option on machines that don't support extended addressing, or else pci-bios won't start. (Ref# 40404)
  • New! The -I option isn't described in the documentation. (Ref# 24418)

    Workaround: Here's the description:

    -I irq
    Make irq the highest-priority hardware interrupt in the system. You can specify a number from 0 through 7 (the default is 3).
tracelogger, traceprinter
  • In the previous version of tracelogger, if you specified a duration for the log (with the -s option), then the number of iterations logged was unlimited. With the new version, the number of iterations logged is left at the default, 32. (Ref# 26823)

    Workaround: If you're using the -s option, add the -n0 option.

  • The entries for tracelogger and traceprinter in the Utilities Reference are out-of-date. (Ref# 26514)

    Workaround: See the System Analysis Toolkit User's Guide for the correct documentation.

  • We've seen some kernel crashes when running regression tests using tracelogger and the procnto-800-instr instrumented kernel on Motorola RPX Lite boards. We haven't been able to reproduce these crashes outside the regression environment; they might be caused by memory exhaustion. (Ref# 26507)

    Workaround: Be cautious when running tracelogger on procnto-800-instr kernels under low-memory conditions.

Known issues: Device drivers

Audio device drivers (deva-*)

  • The graphics drivers run at a higher priority than applications, but they shouldn't run at a higher priority than the audio, or else breaks in the audio occur. (Ref# 4026)

    Workaround: Use the on command to adjust the priorities of the audio and graphics drivers.

Block-oriented drivers (devb-*)

devb-*
High-priority threads can get starved off by lower ones via devb-* because the filesystem uses sleepon_*() functions, which don't inherit priorities. (Ref# 2109)
devb-adpu320
Reading DVD-RAM causes devb-adpu320 to become blocked on a CONDVAR. (Ref# 19772)
devb-doc, devb-doc3, dformat, dformat3
The Disk On Chip drivers were provided by the vendor. If you run use -i on them, the state is given as Experimental. (Ref# 23101)
devb-aha8
You can't restart this driver on IBM PPC405 boards. (Ref# 16018)
devb-ncr8
This driver supports the NCR53c810, NCR53c815, NCR53c820, NCR53c825, NCR53c860, NCR53c875, NCR53c885, NCR53c895, and NCR53c896 PCI SCSI adapters. The list in the documentation is incomplete. (Ref# 22482)
devb-umass
The documentation and usage message say to use the devnn option to specify the USB address of the device. The correct name of the option is devno. (Ref# 24347)
devb-eide
DMA modes don't work on these drives:
  • Hitachi-LG Data Storage DVD WRITABLE/CD-RW DRIVE, ROM VER.E111, May 2006
  • Toshiba Samsung Storage Technology TS-H352C/DELH, DE02, May 2006

(Ref# 41600)

Graphics drivers (devg-*)

  • The following drivers are shipped only with the appropriate BSPs:
    • devg-pxa250.so
    • devg-q2sd.so
    • devg-rpxlite.so
    • devg-sa1110.so

    but their entries in the Utilities Reference don't say so. (Ref# 18023)

  • Starting Photon with multiple cards fails after running crttrap trap. When running crttrap trap, devg-vesabios.so will put the secondary card in a bad state, causing devg-radeon.so to fail to initialize (Ref. #39511).

    Workaround: Do the following:

    • Boot into text mode.
    • Run crttrap trap.
    • Configure the system to start both cards.
    • Reboot before starting Photon.

    After this, you should be able to start and stop Photon on both cards properly.

    You'll need to follow the steps above only if you run crttrap trap again.

  • All graphics drivers hang while trapping on (discontinued) Abit IS-20 (865GV) motherboards because of an issue in the BIOS. (Ref# 39626)

    Workaround: Use the onboard graphics controller instead. If you set the onboard display as the primary controller, any installed PCI graphics cards will still be detected / trapped.

  • The planar YUV overlay format doesn't work properly in the devg-radeon.so driver. (Ref# 29014)
  • If you have more than 512 MB of system RAM, the devg-radeon.so driver won't work. (Ref# 29339)

    Workaround: Reduce the system RAM to 512 MB or use the devg-vesabios.so graphics driver.

  • The devg-radeon.so driver doesn't work properly on ViewSonic VP2030b monitors; none of the resolutions work. (Ref# 41905)

    Workaround: Use the devg-vesabios.so graphics driver instead.

Human interface device drivers (devh-*)

  • If you press several keys at once on some Microsoft keyboards, the keyboard doesn't produce any indication when you release the keys. As a result, the input driver thinks you're still holding the keys down. For more information, see http://support.microsoft.com/kb/909528/en-us. (Ref# 40611)
  • Autorepeat doesn't currently work on ViewSonic 10191 USB keyboards. (Ref# 41118)
  • Pressing the space bar on a ViewSonic 10191 USB keyboard when the system displays the “Press space bar to input boot options” message doesn't work. You get the menu only after the EIDE enumeration is done.

    If you also have a Microsoft USB mouse connected, you get a “devh-usb.so - Unable to attach to USB device 1 (10)” message. (Ref# 41122)

Network drivers (devn-*)

devn-asix.so
This driver doesn't support the 1000 MB/s interface of the Linksys Gigabit USB Adapter (model no. USB1000). (Ref# 38115)

Workaround: Force the driver to use speed and duplex settings that it supports (10 and 100 Mbit/s).

devn-i82544.so
  • If you use more than 64 Tx descriptors, the PPC version of the driver is inoperative. (Ref #22848)

    Workaround: We've temporarily changed the PPC version of this driver to use 64 Tx descriptors by default (on other targets, the default is 128). This may result in lost packets for high-throughput transmit operations.

  • There appear to be endian issues with the devn-i82544.so driver on PPC; the following values are reported incorrectly (Ref# 22854):
    • hardware checksumming: netstat -p event counts
    • nicinfo Tx/Rx packet counts.
devn-ne2000
The documentation for devn-ne2000 now includes the did, pci, and vid options, but the usage message hasn't been updated. (Ref# 20914)
devn-pcnet.so
  • This driver doesn't support Fiber PCNET cards with the AM79C971KC chip. (Ref# 12497)
  • We don't recommended that you use devn-pcnet.so on the BCM1250 platform, because it can lose receive interrupts. (Ref# 29714)
devn-pegasus.so, devn-rtl8150.so
Slaying io-net with the devn-pegasus.so and devn-rtl8150.so drivers isn't always successful. (Ref# 28602)

Workaround: Use kill -9 instead to kill io-net.

devn-rtl8150.so
  • On the SH platform, the lan= option gets overridden. (Ref# 29285)

    Workaround: Fully specify the vendor ID, device ID, bus number, and device number to the driver when starting (e.g. vid=0x0bda,did=0x8150,busnum=1,devnum=2,lan=2).

  • Multicast and promiscuous modes for the rtl8150 driver aren't currently supported. (Ref# 29352)
devn-smc9000
Not all IPv6 multicast protocols function properly with this driver. (Ref# 21720)
devn-tigon3.so
This network driver on the Dell PowerEdge 850 board will run only up to 100 Mbit/s, and not 1000 Mbit/s. Other boards work well at 1000 Mbit/s. (Ref# 39355)

USB drivers (devu-*)

  • The PCI-USBNEC101-5P-1 controller card won't allow at least the following boards to boot: SystemH, EDOSK7780, BCM1x80. (Ref# 29496)

Known issues: Filesystems

  • The fs-pkg filesystem isn't designed to let you use chmod or chown on “virtual” fs-pkg directories. (Ref# 9552)
  • The documentation doesn't describe how you can change the order of resolution for filesystems that are mounted at the same mountpoint. (Ref# 38426)

    Workaround: Here's the description:

    Generally the order of resolving a filename is the order in which you mounted the filesystems at the same mountpoint (i.e. new mounts go on top of or in front of any existing ones). You can specify the order of resolution when you mount the filesystem. For example, you can use:

    • the before and after keywords for block I/O (devb-*) drivers, in the blk options
    • the -Z b and -Z a options to fs-cifs, fs-nfs2, and fs-nfs3

    You can also use the -o option to mount with these keywords:

    before
    Mount the filesystem so that it's resolved before any other filesystems mounted at the same pathname (in other words, it's placed in front of any existing mount). When you access a file, the system looks on this filesystem first.
    after
    Mount the filesystem so that it's resolved after any other filesystems mounted at the same pathname (in other words, it's placed behind any existing mounts). When you access a file, the system looks on this filesystem last, and only if the file wasn't found on any other filesystems.

    If you specify the appropriate before option, the filesystem floats in front of any other filesystems mounted at the same mountpoint, except those that you later mount with before. If you specify after, the filesystem goes behind any any other filesystems mounted at the same mountpoint, except those that are already mounted with after. So, the search order for these filesystems is:

    1. those mounted with before
    2. those mounted with no flags
    3. those mounted with after

    with each list searched in order of mount requests. The first server to claim the name gets it. You would typically use after to have a filesystem wait at the back and pick up things the no one else is handling, and before to make sure a filesystems looks first at filenames.

Known issues: IDE (Professional Edition only)

  • For MIPS only, the dietitian can't shrink the socket library because the library exports symbols that should be resolved in the C library. This problem (Ref# 12394) was fixed on all platforms except MIPS. (Ref# 15986)
  • If you check out an existing PhAB project from CVS, the IDE starts PhAB before checking the project out. PhAB creates some directories, and then the CVS checkout says that the files already exist. After telling the IDE to replace the files with the ones from CVS, PhAB still thinks that it's the old set of widgets (empty project).

    Workaround: To check out projects from CVS, use Check out Project, and then convert the projects; don't use Check out as..., which generates invalid configurations. (Ref# 18405)

  • The IDE has problems when projects are located in a remote (network drive) directory, and the network isn't reachable. (Ref# 11719)

    Workaround: Close any project that you created on a remote drive before disconnecting the drive.

  • The IDE incorrectly lets you choose the Intel C Compiler (icc) for non-x86 targets such as PowerPC or MIPS. (Ref# 22636)

    Workaround: Build only x86 variants with ICC.

  • The System Profiler in the IDE requires a minimum color depth of 16 bits. Otherwise, the timelines might appear to be blank. (Ref# 23763)
  • Opening a PhAB 6.2.1 project in the 6.3 IDE or PhAB converts it to a 6.3 project, which then won't run correctly if compiled for a 6.2.1 target. (Ref# 24298)

    Workaround: If you're using the coexistence feature in the IDE to target Neutrino 6.2.1, you should set the IDE to open the 6.2.1 version of PhAB. To do this, change the Path to Photon Appbuilder setting on the Appbuilder preferences dialog (Window-->Preferences-->QNX-->Appbuilder).

  • If you have a source file that contains some classes, and you open them in the Open Type Hierarchy view, then make some changes in the source file (e.g. moving a class into or out of a namespace), save the changes, make sure the indexer kicks in, and then reopen the same class in the Hierarchy view from the Outline view, an error message pops up, and a null-pointer exception is generated. The view becomes unusable. (Ref# 24999)

    Workaround: Restart the IDE.

  • The Application Profiler can attribute CPU time to the wrong line if you're profiling code that has profiling and debugging information, and that you linked against a static library that doesn't have profiling and debugging information. (Ref# 21024)

    Workaround: Build everything with debugging information, or use -gdwarf-2 instead of -gstabs with gcc 2.95.3.

  • In the Debugger, the this pointer is listed twice in the Debug Variables view. This is a benign error. (Ref# 20063)

    Workaround: If you compile with gcc 3.3.5, the second entry doesn't appear.

  • If you set the Save automatically before build option for a project, and you change one of the project's files, the file is saved if the project is selected in the tree, but not if the file is selected. This is a bug in Eclipse 3.0; see https://bugs.eclipse.org/bugs/show_bug.cgi?id=75063. (Ref# 25866)
  • If you select a number of lines in the C/C++ editor, and then press Tab, the editor corrupts the whole file. (Ref# 25864)
  • Assigning a hotkey to the Rebuild Project action has no effect (the hotkey doesn't work). This is a bug in Eclipse 3.0; see https://bugs.eclipse.org/bugs/show_bug.cgi?id=99193. (Ref# 25616)
  • When using Memory Analysis for ARMLE, ARMBE, MIPSLE, MIPSBE, and SHLE targets, libmalloc sometimes has difficulty tracing back to the call site of a function. As a result, the source files for function calls aren't always shown in the Memory Analysis perspective. There is no workaround at this time. (Ref# 26035, 25938, 26100)
  • The Application Profiler's sampling information shows “unknown” function names for MIPSLE and MIPSBE targets. There is no workaround at this time. (Ref# 24510, 25938)
  • Code coverage doesn't work well for C++ code if you use gcc 2.95.3; the output includes unusual characters and function names. (Ref# 26592)

    Workaround: Use gcc 3.3.x instead of 2.95.3.

  • The IDE doesn't correctly parse compiler errors from gcc 3.3.5. (Ref# 19221)

    Workaround: Add -fmessage-length=0 to the qcc or gcc command-line options.

  • Working in the System Profiler's timeline editor can cause problems with focus and mouse-tracking in the rest of the IDE. (Ref# 20538)
  • The IDE's System Information perspective doesn't properly update the progress view while it's refreshing data. (Ref# 21021)
  • The C++ Class Browser is currently experimental. (Ref# 369)
  • The IDE User's Guide doesn't explain how to import an SP3 project into an older version of the IDE. (Ref# 26985)

    Workaround: Here's how to do it:

    1. Back up your existing 6.3.0 SP3 workspace.
    2. Delete the .cdtproject and .project files from the project you wish to import.
    3. Import the project into your workspace in the older version of the IDE.
  • The System Profiler can take a very long time to load and parse a .kev file that was generated by a target system that's running Neutrino 6.3.0 SP1. The parsing is much faster for .kev files from an SP2 system. (Ref# 27221)
  • In the System Builder, if you choose Combine images and then uncheck Final Processing, the IDE still does the final processing. (Ref# 27082)
  • In a System Builder project, if you select an image, type a large value such as 0x8c0c0000 in the Offset field in the Properties-->Combine section, and then press Enter, the IDE restores the previous value. (Ref# 27954)
  • If you check a project out from CVS by using the New Project wizard, and you choose only one CPU with both debug and release versions, then when the wizard is done, the debug variant is always unchecked for SH, PPC and x86. In addition, a message pops up while the project is being checked out, saying “The file has been changed on the file system, do you want to load the changes?” but it doesn't say which file has been changed. (Ref# 25422, Eclipse ref# 102659)
  • If you don't have a web browser in any of the directories listed in your PATH variable, you can't display the documentation in the IDE. (Ref# 29580)

    Workaround: Specify a browser for the IDE to use, by choosing Window-->Preferences, and then choosing Help from the list on the left side of the dialog. In the right part of the dialog, select Custom Browser and fill in the path to the browser below.

  • The 6.3.0 SP2 version of the Quickstart Guide: 10 Steps to Your First QNX Program is also applicable to 6.3.0 SP3. (Ref# 41691)

Linux-hosted IDE

  • SP3 doesn't include the Motif plugin. $QNX_HOST/usr/qde/eclipse/libXm.so and $QNX_HOST/usr/qde/eclipse/libXm.so.2 are broken symbolic links. (Ref# 40059)
  • Under Linux with GTK, if you work extensively in the IDE (e.g. switching in and out of debugging) for a few hours (four hours on average), you get a JVM termination with the following at the top of the resultant hs_err_pidxxxx.log file:
    An unexpected exception has been detected in native code outside the VM.

    This is because of a memory leak in Eclipse; we've submitted a problem report to eclipse.org. (Ref# 22396)

    Workaround: Upgrade your system to Red Hat Enterprise; the VM and GTK on it are more stable.

  • If you start the IDE on Linux Fedora Core 4 (a version of Linux that we don't officially support), you'll see this message:
    Starting QNX Development Environment
    /opt/qnx630/host/linux/x86/usr/qde/eclipse/eclipse: error while loading 
    shared libraries: /opt/qnx630/host/linux/x86/usr/qde/eclipse/libXm.so.2: 
    cannot restore segment prot after reloc: Permission denied
      

    This message is caused by selinux (secure Linux). (Ref# 26579)

    Workaround: Install an upgrade of selinux:

    yum install selinux-policy-targeted
      
  • The IDE uses Mozilla, which isn't installed by default on Enterprise WS 4, to display the documentation. You need to change this to firefox; in the IDE, choose Windows-->Preferences-->Help and change the Custom Browser Command from mozilla %1 to firefox %1. (Ref# 26891)
  • On Linux hosts, the IDE's System Builder doesn't properly determine the local host ID, so the tftp server doesn't work. (Ref# 23668)

    Workaround: Use the ifconfig utility to get the host's IP address.

  • If your serial device is something like /dev/ttyUSB0, the Terminal 1 view of the System Builder might display the message Device Not Specified. The dialog gives you a way to specify the speed, parity, etc., but no way to specify the serial device to use.

    Workaround: Start the IDE like this:

    qde -vmargs -Dos.name=Linux-all-ports
      

Neutrino-hosted IDE

  • The New Project wizard lets you use special characters in the project name, but make won't build such a project. (Ref# 24441, 24531)

    Workaround: Don't use spaces or the following characters in a project name:

    | ! $ ( " ) & ` : ; \ '
    * ? [ ] # ~ = % < > { }
      
  • The self-hosted IDE gives the following warning:
    Warning: Could not get charToByteConverterClass!
      

    This warning is generated because we are using a non-SUN VM. This is the explanation from Aonix:

    The charToByteConverterClass is an internal sun.io class that the org.apache.xml.serializer.Encodings tries to access with a Class.forName(). Of course, this won't work on any non-Sun Java VM. The exception is caught and a default converter is used instead (after printing the warning message you see).

    You can ignore the warning. (Ref# 25851)

Solaris-hosted IDE

  • If you're using the IDE, make sure you have the appropriate patch installed to run the Java 2 SE 1.4.2 VM under Solaris. You can download the patch from java.sun.com:

    http://java.sun.com/j2se/1.4.2/download.html

  • The IDE uses Mozilla, which isn't installed by default, to display the to display the documentation and generate reports for code coverage. You need to change this to hotjava; in the IDE, choose Windows-->Preferences-->Help and change the Custom Browser Command from mozilla %1 to hotjava %1.

Windows-hosted IDE

  • The IDE won't launch on Windows NT hosts, because NT doesn't include usp10.dll, the DLL for the Uniscribe Unicode script processor. (Ref# 24713)

    Workaround: Download the Windows 98 version of usp10.dll from support.microsoft.com/kb/q249973.

  • On Windows XP, if you're logged in as a system administrator the first time you start the IDE, this user owns the configuration files, so other users won't be able to access them. (Ref# 24881)

    Workaround: Log in as the system administrator and delete the subdirectories in the $QNX_HOST/usr/qde/eclipse/configuration directory. Then log in as a nonadministrator and start the IDE.

  • If you reset your target board while you're debugging from the Windows-hosted IDE, and you've clicked Terminate and remove in the IDE Debug view, the ntoCPU-gdb.exe process may run ready, consuming 100% of CPU. (Ref# 25174)

    Workaround: There is no workaround (other than not following this sequence of events). If gdb does run ready, you must terminate it from the Windows Task Manager. This problem will be fixed in a future version of gdb; you can get an experimental version from the Download Center on our website; look under Prerelease Software-->Trial Software-->Trial Software - QNX Momentics 6.3.x.

Known issues: I/O devices

io-blk
io-blk doesn't automount removable media after the device has been manually unmounted. (Ref# 38394)

Workaround: Instead of manually unmounting the device, use the sync command (see the Utilities Reference) to make sure that the filesystem cache contents have been flushed, and then remove the device without unmounting it.

If the device has been manually unmounted, manually mounting it and then removing and reinserting the device allows automount to function as before.

io-usb
  • In some cases when unmounting DLLs and running the usb utility at the same time, some memory allocated by io-usb isn't freed. This is a rare situation. (Ref# 21716)
  • The io-usb server crashes if you repeatedly mount and umount and plug and unplug devices attached to the port. (Ref# 21556)
  • io-usb might crash with a SIGSEGV when you shut down the system and you don't have any USB devices inserted. (Ref# 29495)

Known issues: Licensing

  • If a disk is full (on any host) when you execute QNX Momentics-licensed components, you might not get a meaningful message to alert you of the problem. Instead, you may be requested to type in your license key (but doing so doesn't rectify the issue). Check your disk and free up some space if necessary. We'll provide a clearer message in a future release. (Ref# 21116)

Known issues: Multimedia

soundfile.so, soundfile_noph.so
Loading these legacy plugins causes a SIGBUS error. (Ref# 21707)

Workaround: Use the -ae option to procnto to enable alignment fault emulation.

Multimedia TDK 1.0.1
If you install the Multimedia TDK 1.0.1 after installing SP3, some files will be incompatible with SP3. (Ref# 39359)

Workaround: Do the following:

  1. Before you install the Multimedia TDK 1.0.1, back up the files listed below for for these targets:
    • $QNX_TARGET/armle
    • $QNX_TARGET/mipsle
    • $QNX_TARGET/ppcbe
    • $QNX_TARGET/shle
    • $QNX_TARGET/x86
  2. If you're on a self-hosted Neutrino system, also back up the versions of the files under /.
  3. Install the Multimedia TDK 1.0.1.
  4. Restore the files from the backup you made.

Here's the list of files that you need to back up before installing the TDK and restore afterward:

  • usr/lib/mmedia/libaif_parser.a
  • usr/lib/mmedia/libau_parser.a
  • usr/lib/mmedia/libaudio_writer.a
  • usr/lib/mmedia/libavi_parser.a
  • usr/lib/mmedia/libcdda_reader.a
  • usr/lib/mmedia/libff_mpegv_decoder.a
  • usr/lib/mmedia/libfildes_streamer.a
  • usr/lib/mmedia/libhttp_streamer.a
  • usr/lib/mmedia/libiff_parser.a
  • usr/lib/mmedia/libmidi_parser.a
  • usr/lib/mmedia/libogg_decoder.a
  • usr/lib/mmedia/liboggi_decoder.a
  • usr/lib/mmedia/librawfile_writer.a
  • usr/lib/mmedia/libstream_reader.a
  • usr/lib/mmedia/libwav_parser.a
  • usr/lib/mmedia/libwavfile_writer.a
  • usr/lib/mmedia/libwindow_writer.a
  • lib/dll/mmedia/aif_parser.so
  • lib/dll/mmedia/au_parser.so
  • lib/dll/mmedia/audio_writer.so
  • lib/dll/mmedia/avi_parser.so
  • lib/dll/mmedia/cdda_reader.so
  • lib/dll/mmedia/ff_mpegv_decoder.so
  • lib/dll/mmedia/fildes_streamer.so
  • lib/dll/mmedia/http_streamer.so
  • lib/dll/mmedia/iff_parser.so
  • lib/dll/mmedia/midi_parser.so
  • lib/dll/mmedia/ogg_decoder.so
  • lib/dll/mmedia/oggi_decoder.so
  • lib/dll/mmedia/rawfile_writer.so
  • lib/dll/mmedia/stream_reader.so
  • lib/dll/mmedia/wav_parser.so
  • lib/dll/mmedia/wavfile_writer.so
  • lib/dll/mmedia/window_writer.so
  • usr/lib/libTremor.so.1
  • usr/lib/libTremorS.a
  • usr/lib/libaoi.so.1
  • usr/lib/libaoiS.a
  • usr/lib/libavcodec.so.1
  • usr/lib/libavcodecS.a
  • usr/lib/libmmconvenience.a
  • usr/lib/libmmconvenienceS.a
  • usr/lib/libmmedia.a
  • usr/lib/libmmedia.so.1
  • usr/lib/libmmediaS.a
  • usr/lib/libmpegs.a
  • usr/lib/libmpegsS.a
  • usr/lib/libogg.so.1
  • usr/lib/liboggS.a
  • usr/lib/libvorbis.so.1
  • usr/lib/libvorbisS.a
  • usr/lib/libxing_audio.a
  • usr/lib/libxing_audio.so.1
  • usr/lib/libxing_audioS.a
  • usr/photon/bin/mmplay
  • usr/bin/playaudio

Known issues: Network protocols

npm-qnet.so
Redundant GNS servers have a window where service could be lost. If connectivity is lost to a gns process in server mode while it's acting as a redundant server, and while client gns processes running on other nodes are registering services, the server may become out of sync with the other redundant servers. (Ref# 20008)
npm-qnet-l4_lite.so
  • This DLL has many options to alter how Qnet functions (e.g. timeouts, retries, and idle times). You shouldn't use these options unless you're trying to overcome an issue related to your environment. Qnet is optimized to function with its default settings. (Ref# 21298)
  • Once Qnet has a domain, you can't set Qnet to not use a domain; you can only change the domain. (Ref# 38802)
  • You can't use the Qnet “file” resolver (resolve=file option) to resolve IP addresses. It currently supports MAC addresses in combination with the option bind=en. (Ref# 38997)
  • Qnet treats the _CS_DOMAIN configuration string differently if it's undefined or set to a NULL string. If it's undefined, Qnet uses a domain of .net.intra; if it's set to a NULL string, Qnet applies that as the domain (for example hostname.). (Ref# 19676)
fs-cifs
  • pwrite() behavior isn't consistent with other Neutrino filesystems. If you open a file with O_APPEND, the offset supplied to pwrite() doesn't override O_APPEND. The data is written to the end of the file, regardless of the file offset supplied. (Ref# 38576)
  • If you unlink() a file on a CIFS mount point, any open file descriptors for that file become invalid. (Ref# 38574)
  • If you perform a socket operation on a file descriptor of a file on a fs-cifs mountpoint, the operation fails, but the errno returned might not be ENOTSOCK. (Ref# 38572)
  • fs-cifs doesn't support POSIX file-locking functions. (Ref# 38570)
  • fs-cifs incorrectly sets an errno of EPERM instead of EBADF if you attempt to write to a file opened as O_RDONLY or O_ACCMODE. (Ref# 38565)
  • If a component of a pathname supplied to a function isn't a directory, fs-cifs should return ENOTDIR. It currently returns ENOENT. (Ref# 38564)
  • fs-cifs may return a different errno when the mkdir() function call fails than those returned by the local filesystem. (Ref# 38573)
  • PATH_MAX for CIFS (and thus fs-cifs) isn't 1024 as in POSIX. This is set by both Windows and the CIFS specification. The pathname length can be up to 255 characters. (Ref# 38566)
fs-nfs2
  • If you attempt to access a link to a file using a pathname that ends in slash, the operation fails with an incorrect errno of EINVAL instead of ENOTDIR. (Ref# 38560)
  • fs-nfs2 doesn't support files larger than 2 GB. (Ref# 39060)
  • fs-nfs2 doesn't correctly implement the options -w size=n and -w number=n as described in the fs-nfs2 usage message. Don't use them. (Ref# 39031)
  • If a path ends in a slash, it must be a directory. When accessing a link with a trailing slash, fs-nfs2 immediately returns EINVAL, instead of resolving the link and reporting errors such as EPERM (permission denied) or ENOTDIR (not a directory) before returning EINVAL (invalid argument). This behavior was seen as an optimization to reduce network traffic, because this kind of file access will ultimately fail. Strict POSIX behavior will be added in a future release. (Ref# 20878)
  • fs-nfs2 doesn't support a -B option greater than 8096. (Ref# 39022)
fs-nfs3
  • The -s option, which specifies to use a soft mount, isn't documented. (Ref# 23381)
  • The -w size=num and -w number=num options aren't documented. (Ref# 23583)

    Workaround: Here's a description:

    The fs-nfs3 manager supports a write-caching feature (by default), which greatly enhances performance. This is accomplished by performing write operations locally and releasing the application, but delaying transmission of the write operation to the NFS server until a later time.


    Note: You should disable this feature if multiple NFS clients will be accessing the same files on the NFS server, or else corruption may result because the server's file contents might be out of date compared to the cached version on each client. You can disable this feature using the -w sync=hard option.

    -w sync=hard
    Disable write caching.
    -w size=num
    The buffer size for each file, in units of 1 KB (default is 8; size = 8).
    -w number=num
    The number of buffers; each buffer can buffer one file. The default is 10, which means up to 10 files can be buffered simultaneously.
    -w delay=sec
    The data in the cache will be flushed to the server after sec seconds. The default is 2 seconds.
  • fs-nfs3's exit status is always 255. (Ref# 38512)
fs-nfs2, fs-nfs3
  • fs-nfs2 lets you modify the on-disk binary file of an executable that is executing. It should return an error with errno set to EBUSY. (Ref# 38563)
  • If you use the mount command to mount an NFS server, and you specify the argument -o ver3 and fs-nfs3 isn't running, fs-nfs2 will accept this mount request. (Ref# 38640)
  • fs-nfs2 and fs-nfs3 don't support fchdir(). (Ref# 38548)
  • The NFS clients don't distinguish between a pathname ending or not ending in / when passed as the argument to mkdir(). (Ref# 38484)
  • NFS is a connectionless protocol. If a server stops responding to the NFS client, it continues to try to reach the server to complete an operation until the server becomes available, or the user stops the operation. While the fs-nfs2 and fs-nfs3 clients are trying to reach the server, NFS operations are blocked until they're successful. This isn't an issue if the client is talking only to one server, but if an fs-nfs2 process has mounted multiple servers, the blocked operation also block the client's ability to talk to the other servers. (Ref# 39084)

    Workaround: Start separate client (fs-nfs2, fs-nfs3) processes for each server you wish to mount.

fs-cifs, fs-nfs2, fs-nfs3
The documentation incorrectly implies that at least one server-export/mountpoint combination is required on the command line when you launch fs-cifs, fs-nfs2, or fs-nfs3. You can invoke the mount command later to add mountpoints. (Ref #15446)
gns
  • A gns daemon can't act as both a client and server at the same time. If a local service is registered with a GNS client, the client can forward that information to redundant or backup servers; a server can't forward the information. (Ref# 21037)
  • Currently, GNS (name_attach()) isn't compatible with the resource manager framework. (Ref# 20062)

    Workaround: Your resource manager must handle the raw QNX messages until this is corrected.

nfsd
nfsd lets you access files only up to 16 subdirectory levels deep within the directory exported in the /etc/exports file. Deeper directory levels and files aren't accessible. (Ref# 40104)
slinger
When slinger is executing a CGI script and setting the environment variables to be passed to the script, the environment variable SERVER_ROOT is set to / instead of to the directory specified by HTTPD_SCRIPTALIAS. The actual current working directory of slinger is correct; it's just the environment variable that's wrong. (Ref# 20795)
tftp
  • tftp can terminate with a floating-point exception when printing statistics from a get or put command when you're using verbose mode. (Ref# 20615)
  • tftp can fault if you press Enter at the “To” prompt without supplying the host parameter. (Ref# 20064)
rpcgen
This utility looks for the C preprocessor in the wrong place on QNX Neutrino hosts. (Ref# 8461)

Workaround: Create a symbolic link:

ln -s /usr/qnx630/host/qnx6/x86/usr/bin/qcc /usr/bin/qcc
  
npm-tcpip-v4.so
  • If a packet is smaller than the minimum Ethernet packet size, the packet may be padded with random data, rather than zeroes. (Ref# 21460)
  • The TCP/IP stack doesn't maintain the statistics for outbound packets over VLAN interfaces. (Ref# 16684)
  • The TCP/IP stack doesn't maintain the statistics for the number of input and output bytes or packets if the packets are forwarded via the fast-forward feature. (Ref# 23041)
  • The TCP/IP stack doesn't maintain proper interface statistics for the link speed. (Ref# 27015)
  • If the default UDP socket receive-buffer size is set near its limit (for example sysctl -w net.inet.udp.recvspace=240000), UDP-based sockets become unreliable. (Ref# 27386)
npm-tcpip-v4.so, npm-tcpip-v6.so
If a packet is smaller than the minimum Ethernet packet size, the packet may be padded with random data, rather than zeroes. (Ref# 21460)
pppd
  • When pppd creates a proxy arp entry, it does this without the permanent flag, so the entry will time out after approx 20 minutes, instead of being permanently set. (Ref# 24103)
  • pppd doesn't use the /etc/ppp/options.ttyname option file. (Ref# 23743)
rcp
This utility sets its user ID to root. It was reported that you can overrun the source/target file argument buffers in the utility, giving yourself root access. Under QNX Neutrino, rcp spawns the cp utility for local file-copying operations; it's the cp utility that faults. When rcp spawns cp, it does so with the credentials of the user who launched rcp, rather than root's. (Ref# 22002)

Known issues: Photon

Starting Photon
When you start Photon, you might see a “Cannot attach mouse input report (error code2)” message on the console. It's a benign message that you can ignore. (Ref# 29662)
PT_CB_ACTIVATE and PT_CB_ARM
These callbacks don't work with PtText and PtNumeric. (Ref# 21608)

Workaround: For a PtText, add this code:

int raw_text_callback( PtWidget_t *widget, void *data, PtCallbackInfo_t
*cbinfo )
{
    PtSuperClassRawEvent( PtBasic, widget, cbinfo->event );
    return Pt_CONTINUE;
}
  

When you create a PtText widget, add this code:

PtRawCallback_t text_cb = { Ph_EV_BUT_PRESS | Ph_EV_BUT_RELEASE,
  raw_text_callback };
…

PtSetArg( …, Pt_CB_RAW, &text_cb, Pt_LINK_INSERT );
… = PtCreateWidget( PtText, … );
  

You can use similar code for a PtNumeric widget.

PdGetOffscreenContextPtr()
This function leaks memory on MIPS hardware. (Ref# 8065)
ptermcs
This utility core-dumps when saving. The problem is in PxTerminalBuildCharsets(): if the “internal” charset is NULL but the “font charset” is specified, it builds a bad data structure that causes PxTerminalSaveCharsets() to crash. (Ref# 19568)
PhAB
  • The template editor currently lets you delete or rename the widget template, but doesn't provide a way to restore the default value. (Ref# 21969)
  • If you're using bash as your shell in Neutrino, PhAB doesn't populate the list of targets when you try to build an application. (Ref# 22850)
  • Opening a PhAB 6.2.1 project in the 6.3 IDE or PhAB converts it to a 6.3 project, which then won't run correctly if compiled for a 6.2.1 target. (Ref# 24298)

    Workaround: If you're using the coexistence feature in the IDE to target Neutrino 6.2.1, you should set the IDE to open the 6.2.1 version of PhAB. To do this, change the Path to Photon Appbuilder setting on the Appbuilder preferences dialog (Window-->Preferences-->QNX-->Appbuilder).

PhAB for Windows
  • If you create an application, and then build it, the Make Application window has an extra unreadable character at the end of each line. (Ref# 22190)
  • If you start PhAB through the IDE on a Windows XP SP2 host, several security-alert dialogs are displayed, because the Windows XP SP2 firewall detects the background TCP/IP communication between the PhAB application and the Photon server. (Ref# 22282)

    Workaround: Configure Windows to unblock. Once you've done this, Windows won't display the security warnings when you restart PhAB.

  • If you try to copy and paste something in PhAB when running it as a nonadministrator user, you get an error message:
    PhAB: Can't open: "clipboard.phab" (Permission denied).
    Please resolve the problem and re-try this operation. (No error)
        

    Thus, copying and pasting is impossible. (Ref# 39879)

    Workaround: Make sure that your HOMEDRIVE and HOMEPATH environment variables are set to point to a directory that you have permission to write into.

    PhAB for Windows uses the HOME environment variable if it's set, otherwise it internally sets HOME to HOMEDRIVE followed by HOMEPATH. If these aren't valid, then PhAB will encounter difficulties.

  • You can't save a PhAB project in a path that contains spaces (e.g C:\Documents and Settings\some_user\my_phab_app). (Ref# 39883)
$HOME/.ph/phapps
Note that this file, which contains a list of the applications that you want Photon to launch automatically when it starts, must be executable. (Ref# 22196)
voyager
If you use voyager with vserver on a Malta board or any other platform that doesn't have a Floating Point Unit, voyager continually fails with a SIGFPE error when it tries to load a page. (Ref# 22404)

Workaround: Rebuild the OS image so that it uses floating-point emulation, by specifying the -fe option to procnto in the buildfile.

io-graphics
  • If you don't specify a plugin, io-graphics fails. (Ref# 22489)

    Workaround: Always specify the -pphoton option (gri-photon.so is currently the only plugin available).

  • If you specify the -d and -p options for io-graphics, you must put the -d option before the -p, or else io-graphics fails. (Ref# 22670)
Alpha on PPC
If you use alpha drawing functions on PPC targets, and you draw an image to a memory context and blit it to the screen, the colors are incorrect. (Ref# 21458)

Workaround: Don't use a memory context, or draw to one memory context, blit to another memory context, and then blit to the screen.

phditto
If you run gdb over phditto, gdb hangs, because the Photon server spawned by phrelay inherits phrelay's set of ignored signals including SIGUSR1, which gdb relies on. (Ref# 24817)

Workaround: Launch pterm windows using pwm's Desktop Menu (press Alt-Enter or right-click on the desktop background) instead of using the Terminal button on the shelf. Only pterm windows started by shelf inherit the ignored SIGUSR1.

Another option is to write a wrapper around gdb to reset SIGUSR1.

Pt_ARG_SCROLLBAR_WIDTH
Setting this resource for a PtList or for a compound widget that includes a PtList has no effect. (PR 20431)

Workaround: Attach the following callback to the Pt_REALIZED resource of the list widget:

int
list_realized_cb( PtWidget_t *widget, ApInfo_t *apinfo,
                  PtCallbackInfo_t *cbinfo )
{
    PtGenListWidget_t *list = (PtGenListWidget_t*)widget;
    unsigned short      *width;

    // NOTE: Use the width that the user set in PhAB.
    PtGetResource( widget, Pt_ARG_SCROLLBAR_WIDTH, &width, 0 );

    // This code sets the actual sizes of scrollbar(s).
    if( list->scrollbar )
        PtSetResource( list->scrollbar, Pt_ARG_WIDTH, *width, 0 );
    if( list->hscrollbar )
        PtSetResource( list->hscrollbar, Pt_ARG_HEIGHT, *width, 0 );

    // This is a workaround to make the list widget
    // position (anchor) the scrollbars correctly (with the new size).
    PtSetResource( widget, Pt_ARG_SCROLLBAR_WIDTH, *width - 1, 0 );
    PtSetResource( widget, Pt_ARG_SCROLLBAR_WIDTH, *width, 0 );

    return Pt_CONTINUE;
}
  

If you're using a compound widget such as a PtCombobox, use this code:

int combo_realized_cb( PtWidget_t *widget, ApInfo_t *apinfo, 
                       PtCallbackInfo_t *cbinfo )
{
 PtGenListWidget_t *list;
 PtWidget_t   *wp = widget;
 unsigned short    *width, list_width;

 // NOTE: Use the width that the user set in PhAB.
 PtGetResource( widget, Pt_ARG_CBOX_BUTTON_WIDTH, &width, 0 );

 // Find the list widget in the combo
 while( (wp = PtWidgetFamily( widget, wp )) ) {
  if( PtWidgetIsClass( wp, PtList ) ) {
   list = (PtGenListWidget_t*)wp;
   break;
  }
 }

 if( !wp )
  return Pt_CONTINUE;

 list_width = *width + 2;

 // This code sets the actual sizes of scrollbar(s).
 if( list->scrollbar )
     PtSetResource( list->scrollbar, Pt_ARG_WIDTH, list_width, 0 );
 if( list->hscrollbar )
     PtSetResource( list->hscrollbar, Pt_ARG_HEIGHT, list_width, 0 );

    // This is a workaround to make the list widget 
    // position (anchor) the scrollbars correctly (with the new size).
    PtSetResource( wp, Pt_ARG_SCROLLBAR_WIDTH, list_width - 1, 0 );
    PtSetResource( wp, Pt_ARG_SCROLLBAR_WIDTH, list_width, 0 );

 return Pt_CONTINUE;
}
  
helpviewer
  • If you aren't using ksh or sh as your login shell, the environment variables that the helpviewer uses aren't initialized. (Ref# 27250)

    Workaround: Set QNX_HELP_HOME_PAGE to /usr/qnx630/target/qnx6/usr/help/product/momentics/bookset.html, and QNX_HELP_PATH to /usr/qnx630/target/qnx6/usr/help/product (assuming you installed QNX Momentics in the default location).

  • New! If you run the helpviewer as one user, and you then log in as another user and search the documention, helpviewer's indexer fails with a message of “Cannot open /var/help/usr/qnx630/target/qnx6/usr/help/product.” (Ref# 25628)

    Workaround: Log in as root and type:

    rm -r /var/help/usr
        

    and then generate the index.

Known issues: Utilities

show_vesa
You must log in as root and be in text mode — not Photon — to run this utility. The documentation for this utility lists several options, but show_vesa doesn't have any. (Ref# 41020)
slay
If you use the -C option to change the runmask for a process, the processor for blocked threads doesn't change until the threads become unblocked (or never if the threads remain blocked). The documentation should mention this. (Ref# 40730)

Known issues: Host-specific

QNX Neutrino self-hosted

qconfig
There are two versions of qconfig installed in three places on self-hosted Neutrino systems:
  • $QNX_HOST/usr/bin/qconfig — this is always the correct version
  • /usr/bin/qconfig — this is the correct version if you've installed the SP2 to SP3 Upgrade on a 6.3.0 SP2 system; it's the wrong version if you've done a clean installation of 6.3.0 SP3.
  • $QNX_TARGET/x86/usr/bin/qconfig — this version is obsolete, and you don't need it anyway

(Ref# 42105)

Workaround: Do the following:

  1. Log in as root.
  2. cp $QNX_HOST/usr/bin/qconfig /usr/bin/qconfig
  3. rm $QNX_TARGET/x86/usr/bin/qconfig

Windows hosts

echo.exe
On Windows, the QNX-provided echo.exe interprets the Windows \ separator as an escape character. As a result, environment variable settings won't work if you use \ as a path separator; use / instead. (Ref# 19924)
PATH and quotation marks
Certain programs (e.g. Norton Ghost) add directories inside double quotation marks (e.g. ...;"c:\Program Files\Norton Ghost\";...) to your PATH environment variable. This causes the Cygwin spawn() function to fail, which in turn causes cp to fail when called by ln-w. (Ref# 20046)

Workaround: Modify your PATH environment variable and remove any quotation marks.

MAKEFLAGS
Microsoft Visual Studio also uses the MAKEFLAGS environment variable, but in a much different way than QNX Neutrino does. The result is that Microsoft Visual Studio no longer works after you've installed QNX Momentics.

Workaround: If you want to work with Microsoft Visual Studio (MSVS) after installing QNX Momentics on the same system, do the following:

  1. Open a command window and run cmd.
  2. Type set.
  3. Find the value for MAKEFLAGS and save it.
  4. Type set MAKEFLAGS.
  5. Do your MSVS work.
  6. To work with QNX Momentics again, type:

    set MAKEFLAGS=saved_makeflags_value

Permissions
If you don't have permission to write files in the top-level directory of the C drive, you won't be able to run certain tools, such as bindres and usemsg, which are needed for building PhAB applications. (Ref# 21849)

Solaris hosts

qconfig
If you're using the default Solaris shell, you might have problems switching between different installed versions of QNX Momentics. When you run a command like this:
`eval qconfig -e -n"QNX Momentics 6.3.0"`
  

you get this error:

QNX_HOST=/opt/qnx630/host/solaris/sparc: is not an identifier
  

and your PATH isn't updated. (Ref# 20653)

Workaround: Use ksh instead of the default Solaris shell.

Deprecation of legacy multimedia components

QNX Momentics 6.2.1 introduced a new multimedia library based on an “addon” architecture, and legacy multimedia components (pre-6.2.1) were deprecated. 6.3.0 is the last release that includes these legacy components. The deprecated items are:

  • /etc/config/media/mpregistry
  • /usr/photon/bin/phplay
  • /usr/bin/plaympegaudio_noph
  • /usr/bin/playsound_noph
  • /usr/bin/playAudioCd
  • /usr/lib/libmedia.so.2
  • /usr/photon/plugins/mpegaudioplugin
  • /usr/photon/plugins/mpegsystemplugin
  • /usr/photon/plugins/mpegvideoplugin
  • /usr/photon/plugins/soundplugin
  • /usr/photon/dll/audiocd.so
  • /usr/photon/dll/extproc.so
  • /usr/photon/dll/mpegaudio.so
  • /usr/photon/dll/mpegsystem.so
  • /usr/photon/dll/mpegvideo.so
  • /usr/photon/dll/soundfile.so
  • /usr/photon/bin/mpegaudio
  • /usr/photon/bin/mpegsystem
  • /usr/photon/bin/mpegvideo

You should make sure that any multimedia applications that you plan to migrate to the next release of QNX Momentics use the current multimedia library. For more information, see the Multimedia Developer's Guide.


Note: QNX Momentics ships with the runtime components of the current multimedia library. You require the Multimedia TDK to develop new multimedia components.

Getting started with the documentation

After you've installed your development suite, you'll find an extensive set of online documentation in HTML format. Go to the help menu item (e.g. in Windows XP: All Programs-->QNX Momentics-->Documentation) or look under the following directory:

${QNX_TARGET}/usr/help/product/momentics/bookset.html

This “roadmap” page contains links to the various HTML booksets that accompany the OS (e.g. System Architecture, Programmer's Guide, Library Reference, Utilities Reference, etc.).

You'll find the installation and release notes in the ${QNX_TARGET}/etc/readme/ directory.


Note: For the most up-to-date version of these notes, go to our website, www.qnx.com, log into your myQNX account, and then go to the Download Center.

Technote: Fine-tuning your network drivers

This technical note is intended to help you tune your network drivers for increased performance or reduced memory footprint using this Network Driver patch. This note includes:

First, we need to talk about network driver interface hardware chips — ASICs — which are sometimes referred to as NICs (network interface controllers, or network interface chips).

At the risk of oversimplifying, we can categorize NICs into two groups: high-performance and low-performance. We aren't talking about the media bit rate (10, 100 or 1000 Mbit) but rather the ability of the complete system, when using the NIC, to avoid packet loss.

Hardware engineers work very hard to design media that rarely lose a packet. And there is a gain, or amplifying effect: when you lose 1% of your packets, you don't lose 1% of your throughput via a protocol, you lose around 50% of your throughput, due to the incurred software-level protocol timeouts and/or retransmissions.

High-performance NICs

What we call “high-performance” NICs have the ability, in a loaded system, to not lose any packets. They generally do this by using transmit and receive descriptor rings in main memory, which in turn point to packet buffers also in main memory.

High-performance NICs use bus-master DMA (direct memory access) to transfer packet data to and from main memory entirely independent of the CPU, using the descriptor rings as laundry lists of packet transmit and receive requests to carry out.

Thus, large scheduling latencies in software that service the NIC (e.g. io-net) can be tolerated.

Low-performance NICs

What we call “low-performance” NICs have been observed by users, in loaded systems, to consistently lose packets, with corresponding poor data throughput performance. These NICs don't use descriptor rings and DMA, but for simplicity, instead attempt to buffer the entire packet in a (usually limited) on-chip buffer area.

Unfortunately, these low-performance NICs, because of their low cost and size, are very attractive to board designers. Examples of these (usually older, obsolete) NICs include:

  • Crystal 8900: devn-crys8900.so
  • SMC9xxx: devn-smc9000.so
  • National Semiconductor ne83815: devn-83815.so
  • National Semiconductor ne2000: devn-ne2000.so, devn-wd.so

On a fast (e.g. 2 GHz) lightly loaded machine, these low-performance NICs can function adequately, without packet loss.

However on a slower (e.g. 100 MHz) machine that's CPU-bound with applications that may increase the scheduling latency of io-net, packet loss during receive can often result because the limited hardware buffer overflows.

You shouldn't use these NICs where you need high-performance data throughput. You should use them only for low-cost debug and diagnostic ports, which are often removed for production versions of boards.

If you're using NFS used with one of these low-performance NICs, you can get a great improvement by using the -B4096 or even -B2048 option to fs-nfs. Qnet in QNX Neutrino 6.3 and later generally automatically goes into “windowed mode” with these NICs to try to avoid packet loss.

Tuning high-performance NIC drivers

Common examples of high-performance NICs include:

  • Intel i82544: devn-i82544.so
  • Intel 82557/558/559: devn-speedo.so
  • Tulip (DEC 21x4x): devn-tulip.so
  • SMC 9432: devn-epic.so

These NICs are all at least 10/100 Mbit, and some are gigabit, but what makes them high-performance is their ability to function independently of the CPU and use the large CPU main memory for packet buffering, which the low performance NICs by design can't.

There are two critical data-transfer interfaces to a high-performance NIC, which you must tune correctly to avoid packet loss under load:

  • The first is the (usually PCI) bus itself. The high-performance NIC will have some FIFO memory, used to buffer data for immediate transmit and receive. As the FIFO drains for transmit, or fills up for receive, the NIC must request to become the bus master to burst data to the FIFO for transmit, or from the FIFO for receive.

    If the latency to schedule the NIC as bus master is excessive, the FIFO will drain for transmit or will overflow for receive. Either will cause a packet to be lost.

    Excessive bus master scheduling latency used to be more of a problem in QNX 4, where other devices (e.g. disk) were programmed with excessive DMA burst length; they would “park” themselves on the bus. This doesn't appear to be as much of a problem in QNX Neutrino, but you should be aware that it can be a problem if you're suffering from mysterious packet loss. The nicinfo output can often give you a clue here.

  • Far more likely, when you're encountering packet loss at the driver/hardware level, is that the transmit and receive descriptor rings are overflowing.

    For receive, this usually happens when a high (e.g. greater than 21) priority thread runs READY and hogs the CPU for an extended period of time. This causes io-net to not be scheduled, and the receive descriptor eventually fills up as packets arrive, and the NIC bus-masters the received packets into main memory.

    For transmit, this usually happens when there's an extremely large burst of transmit activity (e.g. server) and possibly some kind of backup or congestion (e.g. PAUSE frames) which simply fills up the transmit descriptor ring faster than the NIC can get it out onto the wire.

    In this network driver patch, the drivers for the high-performance NICs are generally configured with a default 64 transmit descriptors and 128 receive descriptors. You can change them using the transmit=XXXX and receive=XXXX command-line options to the drivers. Generally, the minimum allowed is 16, and the maximum is 2048. Due to the hardware design, stick to a power of 2, such as 16, 32, 64, 128, 256, 512, 1024, or 2048.

    Transmit buffer descriptors are generally quite small, generally in the range of 8 to 64 bytes. So, the cost of increasing the transmit=XXXX value to, say, 1024 for a server (which sees large bursts of transmitted data) is quite small:

    (1024 - 64) x 32 = 30,720 bytes

    for a transmit descriptor of 32 bytes.

    Receive buffer descriptors are similarly quite small, however there's a catch. For each receive descriptor, the driver must allocate a 1,500 byte Ethernet packet buffer. Because the packet buffers must be aligned, they aren't permitted to cross a 4 KB page boundary, so in reality, io-net allocates a 2 KB buffer for each 1,500 byte Ethernet packet.

    So, the cost of increasing the receive descriptor to 1024 from the default 128, with an almost insignificant 32-byte-sized receive descriptor is:

    (1024 - 128) x (32 + 2048) = 1,863,680 bytes

    or almost 2 Megabytes, which is nowhere near as much as the filesystem grabs by default for its cache, but still not an insignificant amount of memory for a memory-constrained embedded system.

    For a memory-constrained system, you should carefully select the sizes of the transmit and receive descriptor rings so that they're minimum-sized, yet no packets are lost under load, with the scheduling latency for io-net on your system.

    Obviously, reducing the receive descriptor ring has more of an effect than reducing the transmit descriptor ring.

    In an application where memory is of no concern, but maximum performance is, generally transmit and receive descriptor rings of 1024 or even 2048 are used.

    Most of the time, bigger is better. There is, however, a potential catch: for some benchmarks, such as RFC2544 (fast forwarding), we've observed that excessively large descriptor rings decrease performance because of cache thrashing.

    However, that's really getting out there. Most of the time, you simply need to configure the transmit and receive descriptor ring size to suit your application so that minimum memory is consumed, and no packets are lost.

PHY probing

Almost all of the network drivers in this patch have been optimized for performance with respect to PHY probing.

Prior to this patch, network drivers would periodically (e.g. every two or three seconds) communicate via the MII to the PHY chip connected to the NIC, to determine the speed and duplex of the current media connection.

The problem is that, while the PHY is being probed, packet loss can occur. The drivers in this patch contain an optimization to not probe the PHY, as long as there have recently been some packets received. This gives maximum performance for most users.

However, there is a nasty scenario: the NIC is connected to a 100 Mbit full-duplex link. The cable is rapidly unplugged and immediately replugged into a 10 Mbit half-duplex hub, which also has a steady stream of (e.g. broadcasted) received packets. In this scenario, because of the steady stream of received packets, the network driver won't probe the PHY, and will still think it's in 100 Mbit full-duplex. This is a problem, because the NIC isn't listening before it transmits; it's still full-duplex, on a half-duplex link. Excessive collisions and out-of-window collisions will result in packet loss.

However, if you leave the cable unplugged for three seconds before plugging it into another hub, the driver probes the PHY and relearns the media parameters and reprograms the NIC with the appropriate duplex.

If you need to rapidly unplug and replug the cable into network boxes with different duplexes, you should specify probe_phy=1 to the network driver, to force it to always periodically probe the PHY. Packet loss may result during this probing, but you will know that the driver is always in sync with the PHY with respect to the media.

For maximum performance, the default is probe_phy=0.

Speed and duplex

Most (but not all) of the drivers in this patch support more than one Ethernet speed and duplex. The most common are 10 and 100 Mbit, and half and full duplex, though the newest NICs support 1000 Mbit (gigabit) Ethernet as well.

All of the drivers let you specify speed=XX and duplex=Z, where XX is 10, 100 or 1000, and Z is 0 (zero) for half-duplex, and 1 (one) for full-duplex. Generally most 10 Mbit links are half-duplex (to old hubs or repeaters, which is the original Xerox blue-book Ethernet) and most 100 Mbit links are full-duplex (switches with point-to-point connections). However, for maximum confusion, you will occasionally see 10 Mbit/full-duplex, and 100 Mbit/half-duplex, but not very often.

If you don't specify speed and duplex, the driver attempts to auto-negotiate the speed and duplex to the fastest possible, by an IEEE specification. Most Ethernet hardware produced in the last few years is compliant with the IEEE specification, but there is some older hardware around that isn't.

In the absence of auto-negotiation, the PHY can figure out the speed pretty easily. However, the duplex is another matter. If auto-negotiation isn't supported, the remote device is assumed to be older and thus half-duplex, not full-duplex.

The moral of the story is that 99% of the time you shouldn't specify speed and duplex; the auto-negotiation should automatically figure it out for you. If you run the nicinfo utility, it will tell you what the auto-negotiated speed and duplex is, and most of the time, it will be correct.


Note: It's crucial that both devices, at both ends of the link, use the same speed and duplex, otherwise heavy packet loss can occur (see above).

So, you should specify speed and duplex to the network driver only if you have older, perhaps broken or nonstandard Ethernet hardware, and you manually control both ends of the Ethernet link. For example, a managed hub or a cross-over cable.

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 QNX Momentics guide or visit our website, www.qnx.com.

List of fixes

Software fixes

Change Ref # Fixed in
If you set an alias for an interface, phlip now applies it to the correct interface. 3280 6.3.0
When entering Direct mode, or switching to the same mode you started in (same resolution, bit depth, and refresh rate), the displayable area no longer shrinks. 3623 6.3.0
The usage message for fdisk has been corrected. 4509 6.3.0 SP1
devn-smc9000.so now handles promiscuous mode. 6531 6.3.0
timer_gettime() and timer_settime() no longer return invalid values. 7613 6.3.0
64-bit division errors on SH4 have been fixed. 7927 6.3.0 SP1
phdialer no correctly converts the modem auto-disconnect time from minutes to seconds. 8069 6.3.0
We now ship mkfontdir for Windows and Solaris. 8322 6.3.0
A Photon application is now displayed in the Taskbar only if the Ph_WM_TASKBAR bit is set in the window's Pt_ARG_WINDOW_MANAGED_FLAGS resource. 8704 6.3.0 SP1
Compiling with optimization for SH4 platforms now works when optimizing out simple switch statements. 8722 6.3.0 SP1
In some cases, fs-nfs2 and fs-nfs3 wouldn't treat a TCP connection as a stream, and would expect that the entire packet should be returned with a read(). This would cause false failures, and fs-nfs2 and fs-nfs3 would remount the NFS server more times than necessary. We've fixed this. 8873 Patch ID 234
dlsym() now resolves symbols according to the documented algorithm. 8950 6.3.0 SP1
It's now possible to use setrlimit() to set a process's maximum heap size (RLIMIT_DATA). 9070 6.3.0
The mtu option no longer makes the ARMLE variant of devn-smc9000 crash. 9357 6.3.0
The -p option to pidin now accepts a process name or ID as its argument. The -P option now works correctly. 9373 6.3.0 SP1
CPU-specific versions of gdb now load a CPU-specific profile. 9398 6.3.0 SP1
The Local Protect Bit (LPB) is now set correctly in full-duplex mode, so devn-ppc800.so no longer encounters transmission errors 9569 (Ticket ID 38913) 6.3.0
qcc now correctly handles configuration files that are actually links to other files. 9732 6.3.0 SP1
On mipsle platforms, ftpd no longer faults whiling listing a directory. 9771 6.3.0
The SMC9000 driver now supports multicasting with the Lubbock BSP. 9888 6.3.0
PtScrollContainer now positions its scrollbars correctly when the scrollbars are set to “display always.” 9988 6.3.0
gdb can now successfully read memory that straddles a page. 10120 6.3.0 SP1
If devb-aha2 faults (e.g. if you don't have the right kind of board), the parent process now correctly gets a SIGCHLD signal. 10388 6.3.0 SP2
devb-aha2 no longer faults if you don't have any AHA 2 cards installed. 10391 6.3.0
An optimized-out switch statement no longer causes the compiler to crash. 10467 6.3.0 SP1
Applications that use a PtOSContainer widget no longer have problems when redrawing via phrelay. 10628 6.3.0
In the IDE's System Information perspective, the System Blocking Graph now shows the Blocked Folks, even for clients that are Send- or Reply-blocked. The information for a process's threads is now updated correctly. 10772, 14428 6.3.0 SP2
The mem_offset() and mem_offset64() functions now return the correct offset when passed a pointer addressing the syspage (i.e. via _syspage_ptr) rather than return an error. 10862 6.3.0 SP1
devn-speedo.so now detects the correct MAC address and works with large EEPROMs. 10983, 12774 6.3.0
nfsd no longer becomes permanently blocked on a FIFO if a Neutrino NFS client attempts to create and use one. 11098 Patch ID 234
Failed mmap() calls no longer leak memory. 11408 6.3.0 SP1
spawnp() no fails with an error of EACCES when you try to execute a directory. 11417 6.3.0
Untagged shared memory images are now displayed properly in phindows and phditto. 11489 6.3.0 SP1
PtSlider now correctly changes its appearance when you set the Pt_GHOST flag. 11531 6.3.0
The devg-rotate* drivers now correctly handle scaled blits. 11593 6.3.0
qconn no longer crashes when you pass it long command lines. 11712 6.3.0 SP2
flashctl now rounds the values of the -o and -l (“el”) options down to the nearest block bound. If the range specified exceeds the partition size, it's rounded down to fit. If you use the -v option, flashctl displays what the values have been rounded to. 11738 6.3.0
In the IDE, the Add Include menu option now works on the word under the cursor, not just on a selected word. 11757 6.3.0 SP2
The Acer EIDE driver now has DMA support for CD-ROMs. 11788 6.3.0
When you attach the IDE's Application Profiler to a running process, the 'Thread Info' pane is now updated correctly when first drawn. 11898 6.3.0 SP2
The IDE's System Blocking Graph now shows multiple channels if they exist. 12290 6.3.0 SP2
In the IDE's Application Profiler, if you run a profiled application for an ARM target, and then try to double-click on a function in the call graph, you now get the source file coming up with annotated bars, as you do on other platforms. 12422 6.3.0 SP2
The devf-dbpxa20dp flash driver no longer crashes with a SIGBUS error on ARM. 12449 6.3.0
If you use waitfor in a startup script, processes that depend on the entry in /dev now find the entries correctly. 12450 6.3.0
The performance of the devn-prism.so driver is now better. 12455, 14339 6.3.0
The IDE's Run to Cursor command now has a button on the toolbar, an entry in the Debug menu, and a hotkey. 12466 6.3.0 SP2
In the IDE, the output from an application run using Run-->C/C++ Application now consistently makes it to the console. 12485 6.3.0
The PtWebClient interface and the voyager server now let you match whole words when searching. 12596 6.3.0
The USB stack now allows multipacket interrupt transfers. 12642 6.3.0
The IDE's Memory Analysis perspective now makes it easier to find a memory leak in a shared object. 12658 6.3.0 SP2
Text boxes in Voyager no longer lose focus when scrolled off-screen. 12713 6.3.0 SP1
The TVIA driver now renders the image correctly with the digital interface. 12719 6.3.0
In the Neutrino-hosted IDE, the C Perspective layout now persists between sessions. 12731 6.3.0 SP2
64-bit signed division on SH platforms now works correctly with LONGLONG_MAXC in programs compiled with gcc 2.95.3. 12772 6.3.0 SP2
Using the Memory Analysis perspective no longer causes the IDE to run ready. 12794 6.3.0 SP2
The front porch timing is now correct in the TVIA graphics driver. 12809 6.3.0
The autodetection scheme that npm-qnet-compat.so uses to determine whether or not the platform it's running on supports misaligned access now works on ARMBE targets. 12989 6.3.0
We now ship the rb, rx, rz, sb, sx, and sz utilities that qtalk needs in ZMODEM mode. 13050 6.3.0 SP2
The x86 version of J9 no longer crashes the kernel when it runs out of RAM. 13280 6.3.0
devn-sis9.so now honors the speed and duplex setting specified on the command line. 13297 6.3.0
Alpha maps can be put in shared memory, and the graphics framework and the PNG loader now support RGBA images. 13362 6.3.0
The IDE no longer stores project-specific data in .metadata. 13365 6.3.0
In the IDE's Debug perspective, you can now cast a selected variable to a different type in the Variables view. 13367 6.3.0
The network drivers now allocate 64 receive descriptors and 128 transmit descriptors by default. 13453 6.3.0
qconn no longer crashes in a high-activity, multiple-user environment. 13459 6.3.0 SP2
There are no longer any problems using PCI memory as shared memory on SH4 targets. 13532 6.3.0
PdCreateOffscreenContext() and PdGetOffscreenContextPtr() no work correctly on ARM targets. 13539 6.3.0
devc-serppc8260 and devc-serppc800 now send commands correctly. 13741 6.3.0
The gdb 5.2.1 nto_procfs interface now reads floating-point registers correctly. 13744 6.3.0 SP2
devn-fd.so now increments its packet counts correctly. 13785 6.3.0
In the IDE, the System Builder's New Project wizard has a clearer user interface. 13840 6.3.0 SP2
You can now scroll the code-completion window in the IDE running on Neutrino. 13933 6.3.0 SP1
Repeatedly opening a large (greater than 20 MB) log file no longer causes problems in the IDE's System Profiler. 13952 6.3.0 SP2
In the IDE, if you launch the Memory Analysis module, and the application is being debugged, you can now reattach the debugger when a memory error is encountered. 13968, 14099 6.3.0
devn-speedo.so no longer auto-negotiates when the media rate is forced on the command line. 13970 6.3.0
The IDE's backtrace is no longer corrupted for non-x86 targets when attached with the debugger. 14023 6.3.0 SP2
A useless right-click menu in the IDE's Profiler view has been deleted. 14108 6.3.0 SP2
devb-eide no longer faults on MIPSBE because of a command-line typo (== instead of ==). 14114 6.3.0
BREAK now works on the SCI AND SCIF port of devc-sersci. 14166 6.3.0
Bulk transfers no longer timeout on the devu-sp1161 driver. 14197 6.3.0
You can now build multiple projects in the IDE's C/C++ Projects view. 14202 6.3.0 SP2
devn-epic.so no longer drops multicast packets in promiscuous mode. 14225 6.3.0
devn-ns83815.so no longer drops multicast packets in promiscuous mode. 14246 6.3.0
devn-rtl.so no longer drops multicast packets in promiscuous mode. 14247 6.3.0
devn-via-rhine.so no longer drops multicast packets in promiscuous mode. 14248 6.3.0
In the IDE, the C-C++ editor's Code Assist now works. 14255 6.3.0 SP2
devn-i82544.so: _IO_NET_REMOVE_MCAST now removes (rather than adds) addresses. 14256 6.3.0
devn-via-rhine.so: _IO_NET_MCAST_RANGE now processes the entire range. 14259 6.3.0
devn-rtl.so: _IO_NET_MCAST_RANGE now processes the entire range. 14264 6.3.0
When you set Pt_END in the Pt_CB_LOST_FOCUS callback for a PtComboBox, the widget now correctly maintains focus instead of shifting it to the next widget. 14286 6.3.0
The IDE's Debugger is now faster when uploading/initializing large applications. 14287 6.3.0
The uncompress command is now a symbolic link to gzip. 14301 6.3.0 SP2
You can now control and disable the rate at which the IDE's System Information perspective collects data and refreshes the display. 14336 6.3.0 SP2
devb-ncr8 no longer faults in libcam.so.2 when copying files to disk. 14388 6.3.0
devn-fd.so no longer faults when you use it with Qnet on x86 targets. 14389 6.3.0
startup-bcm1250 can now detect memory properly when there's more than 256 MB. 14404 6.3.0
If you've disabled the “Perform build automatically on resource modification” option and you've set the “Save all modified resources prior to manual build” option, the IDE no longer does a global rebuild when you start the debugger. 14417 6.3.0 SP2
The translation of Photon events no longer causes problems when the emitter region is the same size as the Photon space. 14421 6.3.0
In the IDE's System Information perspective, the Deliver Signal option by default sends a SIGTERM signal (which terminates the process). 14439 6.3.0 SP2
Navigating the Help tree in the IDE is now faster. 14506 6.3.0
devc-sersci now sets the parity and stop bits correctly. 14528 6.3.0
The abs() function now has the correct prototype for use with C++. 14582 6.3.0 SP1
The icons in the IDE's System Builder projects now indicate the different types of files. 14586 6.3.0 SP1
You can't select text anymore in multiline-text (PtMultiText) widgets that aren't editable. 14600 6.3.0 SP1
In the Neutrino-hosted IDE's System Profiler, removing processes no longer causes j9 to run ready. 14612 6.3.0 SP2
The IDE's Signal Information view no longer flickers excessively when you've selected more than one process. 14635 6.3.0 SP2
Dual use of USB HID and bulk now works correctly. 14644 6.3.0
In the IDE, the checking for duplicate files that happens when you add files to System Builder projects has improved; it now warns you about files or directories with the same name only if they're in the same directory. 14661 6.3.0 SP2
devg-radeon.so no longer distorts images when they're scaled down. 14662 6.3.0
The resolv.conf file now supports a nocache keyword that prevents the socket library's resolver code from caching the nameserver's configuration. 14686 6.3.0
We've corrected the SH7751_PCI_STAT_* definitions for pci-systemh. 14795 6.3.0
Simultaneous interrupts no longer cause the system to freeze on the MGT5100. 14823 6.3.0
devu-ohci no longer prints diagnostics when you run the usb utility, unless you've specified the verbosity option. 14838 6.3.0
You can now include spaces in the ssid option for all wireless network drivers. 14868 6.3.0
A flood ping no longer kills devn-prism.so. 14880 6.3.0
The IDE's Help-->Software Updates-->New Updates command looks for updates for Eclipse, but no longer looks for any on our website. 14901 6.3.0 SP1
devb-eide is now faster on PPCBE MTX platforms. 14944 6.3.0
In the IDE's System Builder, if you create an image with a blank in its name, the IDE no longer deletes the build script. 14971 6.3.0 SP2
For QNX C/C++ projects in the IDE, you can now specify an absolute path for the Installation directory (in the project Properties dialog on the QNX C/C++ Project-->General tab). 15004 6.3.0 SP2
A blue arrow now helps you keep track of the active line of code in the IDE's Debug perspective. 15017 6.3.0
Spaces are now handled correctly in search paths for System Builder projects. 15040 6.3.0 SP1
Changes that you make to a file in the IDE's Application Profiler Editor are now correctly shown in the C/C++ Editor. 15052 6.3.0 SP2
dhcp.client can now reconfigure an interface that has already been reconfigured. 15072 6.3.0
When you mount and unmount a NFS mountpoint repeatedly for hundreds of iterations, there's no longer a potential for a resource to be unreleased, causing all further mount attempts to fail. There's still a timeout period that must expire before mounts can continue. Unless you're doing this operation in a loop, you aren't likely to encounter this timeout. 15078 Patch ID 234
devc-sersci now has odd and even parity correct. 15102 6.3.0
The date on a generated temporary license no longer appears in the local format (which caused problems with Flexlm). 15170 6.3.0
The HID driver now enumerates USB devices correctly. 15183 6.3.0
The devn-prism.so driver now supports retrieving the BSSID value. 15211 6.3.0
mprotect() now correctly honors SHMCTL_LOWERPROT set on memory objects. 15227 6.3.0
devn-ne2000.so no longer makes io-net crash. 15229 6.3.0
The redundant Suppress Reset Vector control was removed from the Properties dialog in the System Builder. 15267 6.3.0 SP1
The devf-* drivers now handle the timeout that AMD flash uses after issuing an erase sequence specifying additional erase blocks. 15279 6.3.0
devn-tulip.so no longer takes 25 seconds to auto-negotiate the media rate. 15286 6.3.0
Creating a debug version of a large application no longer causes an internal compiler error. 15296 6.3.0
In the IDE, if you create a post-mortem debug launch configuration, and then relaunch it, you're asked to select the core file again, but the IDE remembers the directory the file was in. If you cancel the selection, you're no longer switched to the Debug perspective. 15300 6.3.0 SP2
You no longer get “unable to get stack depth” errors while launching the (IP - qconn) debugger with a simple C/C++ application. 15309 (Ticket ID 61634) 6.3.0
Displaying a large .kev file in the System Profiler is faster in the Neutrino-hosted IDE. 15315 6.3.0 SP2
Removing a process from the System Profiler no longer causes problems in the Neutrino-hosted IDE. 15316 6.3.0 SP2
ping, ping6, and ftp no longer use floating-point math to calculate statistics. 15324 6.3.0 SP1
Attempting to grow a directory (or .inodes file) on a completely full fs-qnx4.so disk no longer leaves the directory marked as busy. 15354 Patch ID 245
fs-cifs now supports code sharing. 15362 6.3.0
devn-tulip.so now works correctly on the MTX604 platform. 15370 6.3.0
devn-gt64260.so: mount/umount with traffic no longer locks up the board. 15374 6.3.0
The ARMLE kernel no longer has high latencies when a program is terminating. 15377 6.3.0
devn-via-rhine.so no longer faults during a benchmark test. 15394 6.3.0
The system now has a way to be notified when the autoip module either chooses an address or notices a DHCP server address. 15421 6.3.0
The snd_pcm_plugin_params() function no longer leaks playback streams. 15445 6.3.0
The usage messages now correctly state that you don't need to specify a server-export/mountpoint combination on the command line when you launch fs-cifs, fs-nfs2, or fs-nfs3. You can invoke the mount command later to add mountpoints. 15446 Patch ID 234
You can now mount fs-cifs mountpoints within an existing fs-cifs mountpoint. 15452, 21532 6.3.0 SP1
In the IDE, the Remove executables from target option now works for serial debugging. 15455, 15461 6.3.0
A high-priority thread in a usleep-loop no longer causes some problems with round-robin scheduling for other threads running at a lower priority. 15456 6.3.0
Combo boxes now work properly in the IDE running on Neutrino. 15465 6.3.0 SP1
In the IDE's System Information perspective, the System Resources view no longer uses a lot of CPU even when closed. 15489 6.3.0 SP2
io-graphics no longer crashed when the shared-memory area is too small for the given PgReadScreen() command. 15499 6.3.0
The shutdown command's -S option no longer supports the photon or user type. Use phshutdown for Photon's shutdown options. 15528 6.3.0
Compiling large C++ sources with debugging using the Dinkumware <xmemory> header no longer results in an internal compiler error. 15530 6.3.0
The reboot callouts on SH boards no longer have an error accessing the system page. 15534 6.3.0
A flood ping no longer hangs the SMC9000 driver. 15563 6.3.0
The flash library now passes the correct offsets to the suspend/resume MTD functions, so the devf-generic driver longer core-dumps (a side effect from AMD MirrorBit changes). 15566, 16060 6.3.0
The Microsoft ISA Firewall Client is now compatible with PhAB for Windows. 15568 6.3.0
Calling mmap() or mmap_device_memory() with MAP_FIXED no longer causes the kernel to crash. 15573 (Ticket ID 61868) 6.3.0
The USB interrupt transfer handler is now called correctly. 15578 6.3.0
It's now possible to verify that the version of /usr/lib/ldqnx.so.2 that's loaded into memory is the same as the version on the disk. 15579 6.3.0
io-net -dspeedo mmap no longer faults while parsing the options. 15608 6.3.0
In the IDE's Debug perspective, you can attach to a running process through a Debug launch configuration, not a Run launch configuration. 15643 6.3.0 SP2
The ecpp library now supports uint64_t. 15653 (Ticket ID 61889) 6.3.0
The input drivers now ignore the Pause Break key; it no longer clears the Pk_KF_Compose flag forever. 15681 6.3.0
deflate now works as a mkefs filter. 15683 6.3.0
devn-el900.so no longer resets the multicast filter when promiscuous mode is disabled. 15721 6.3.0
devn-speedo.so no longer resets the multicast filter when promiscuous mode is disabled. 15722 6.3.0
devn-i82544.so now supports the DCMD_IO_NET_CHANGE_MCAST command to devctl(). 15728 6.3.0
devn-speedo.so now supports the DCMD_IO_NET_CHANGE_MCAST command to devctl(). 15731 6.3.0
GDB now correctly gets I/O privileges when single-stepping over a ThreadCtl(_NTO_TCTL_IO,0) system call. 15735, 19351 6.3.0
procnto no longer terminates a child process without notifying its parent process. 15756 6.3.0 SP2
dumpefs now has a usage message. 15794 6.3.0
The USB stack now correctly handles the removal and insertion of devices. 15852 6.3.0
Thread creation no longer fails with ENOMEM. 15865 6.3.0
devn-tulip.so no longer reports the wrong speed and duplex setting after a parallel detection. 15869 6.3.0
The USB stack now correctly send an interrupt IN request within the specified polling period. 15871 6.3.0
Configuring the PRISM driver no longer causes it to reset every four seconds. 15872 6.3.0
The startup time for devf-systemh on SystemH has improved. 15880 6.3.0
Our SH4 kernel calls now save the frame pointer, so gdb can now backtrace out of them. 15882 6.3.0
The usage message for devn-bcm1250.so now gives the correct IRQ setting (0x80050013). 15895 6.3.0
We've added a missing _CSTD to <netmgr.h>, so this file now compiles for C++. 15904 6.3.0
If you use the VESA driver on an SMP machine, your machine no longer spontaneously reboots. 15928, 16009 6.3.0
devg-tvia.so: we corrected some TVIA Cyberpro 5050 video overlay problems. 16006 (Ticket ID 62284) 6.3.0
deva-ctrl-sis.so is now included in 6.3. 16020 6.3.0
PiFlipImage() can now flip PNG pictures. 16059 6.3.0
The driver for the Renesas Camelot-Biscayne no longer suffers from a DMA problem that caused “pops” and “clicks.” 16084 6.3.0
In PhAB, if you import a GIF with transparency as a button image, and you close that project and reopen it, the transparency in the image is now maintained. 16097 6.3.0
The IDE's System Resources view no longer has two columns that display the same information (i.e. heap sizes). 16177 6.3.0 SP2
When devn-pcnet.so runs with a big stack, it can now receive packets longer than 32 bytes. 16187 6.3.0
Standard utilities no longer core-dump with the SMP kernel on MIPS 1250. 16206 6.3.0
Phindows operations are now smoother. 16215 (Ticket ID 61745) 6.3.0 SP1
The IDE's Debug perspective now retains the contents of the Expressions view (i.e. the expressions you want the IDE to evaluate and display) from one invocation of the debugger to the next. 16241 6.3.0 SP2
In the IDE's Debugger perspective, you can now add expressions in the Expressions view. 16242 6.3.0 SP2
The -fno-fp-moves option is now set by default for the compiler for PPC code. 16263 6.3.0
devn-bcm1250.so now handles multicast packets correctly in promiscuous mode. 16293 6.3.0
The IDE now properly builds the Renesas Biscayne BSP after you retrieve it from CVS. 16302 6.3.0 SP2
Running devn-speedo.so driver with two Speedo network cards no longer causes a system hang. 16337 6.3.0
devn-bcm1250.so: removing a Compact Flash card no longer produces an error (“Free IRQ: Invalid argument”). 16340 6.3.0
We corrected an problem with operator precedence in tto.c for devc-serppc8260. 16375 6.3.0
PhAB for Windows now handles transparent GIFs correctly. 16392 6.3.0
gcc now correctly recognizes the “mutable” qualifier. 16397 6.3.0
devc-serppc8260 now correctly unmasks the Carrier Detect and hardware flow-control interrupts. 16431 (Ticket ID 62640) 6.3.0
We now ship a Windows version of the deflate utility. 16457 (Ticket ID 62518) 6.3.0
In the IDE, setting or removing a breakpoint no longer suspends running processes. 16465 6.3.0
PgDrawPolygon() no longer draws extra lines in a polygon. 16466 (Ticket ID 62627) 6.3.0
If you use ftp -u .... in a system call, it no longer returns an error even if it uploaded the file correctly. 16469 (Ticket ID 62351) 6.3.0
/etc/nslookup.help is now correctly /usr/share/misc/nslookup.help. 16481 6.3.0
rcp no longer fails on filesystems that don't support truncate(). 16487 6.3.0 SP1
The PtWebClient widget, when connected to Mozilla now handles its configuration settings properly. 16498 6.3.0
If you specify the nomulticast command-line argument to devn-rtl.so, and you then issue a DCMD_IO_NET_CHANGE_MCAST devctl() command, the driver now correctly sets the error code to ENOTSUP. 16505 6.3.0
devn-tulip.so no longer incorrectly resets the multicast filter when you disable promiscuous mode. 16509 6.3.0
devn-tulip.so's multicast filter is no longer corrupted when you add a large number of addresses. 16511 6.3.0
devn-el900.so's multicast filter is no longer corrupted when you add or remove large sets of multicast addresses. 16513 6.3.0
Toggling promiscuous mode no longer interferes with devn-el900.so's multicast filter. 16515 6.3.0
If dispatch_block() is interrupted by a signal, it once again returns NULL and sets errno to EINTR. 16531 6.3.0
The IDE's debugger no longer uses the wrong name for the executable when you launch a Standard Make C Project. 16535 6.3.0
The smartset -R option to devi-elo now works correctly (i.e. it doesn't reset the device). 16564 6.3.0
Photon now honors the setting of the NumLock on startup. 16583 6.3.0
In the Windows-hosted IDE, if you edit the search paths in the properties in the System Builder, and you click Add Workspace Path, the resulting a browser now starts at the root of your workspace, instead of at the root of your filesystem (e.g. C:). 16590 6.3.0 SP2
In the IDE's System Builder, you can no longer set the use-in-place or copy attribute for items that you're adding to an embedded filesystem. (This setting has no meaning for an embedded filesystem.) 16609 6.3.0
During debugging in the IDE, the values of class members are now updated correctly in the Variables view on SH platforms, but only if you're using gcc 3.3.5 and the default debug options. 16630 6.3.0 SP2
Including the ha/ham.h header in a C++ application no longer causes compile errors. 16648 (Ticket ID 62597) 6.3.0
The IDE's Build action toolbar button now has a tool tip. 16689 6.3.0 SP2
The IDE no longer blocks when qconn takes a long time to respond. 16701 6.3.0 SP2
If you try to import a QNX 4 Photon application into PhAB, and the files includes Windows end-of-line characters, PhAB no longer tries to import the application. 16709 (Ticket ID 62828) 6.3.0
We now ship the fdformat utility for Windows hosts. 16738 (Ticket ID 62852) 6.3.0
The Variables view in the IDE's Debugger now correctly displays multiple variables with the same name. 16753 6.3.0
The use command no longer crashes if you use the malloc_g library. 16769 6.3.0
PhAB language translation now works correctly with a widget database opened with ApOpenDBaseFile(). 16786 6.3.0
In the IDE's System Information perspective, a process's heap usage is now updated properly in the System Summary view. 16792 6.3.0 SP2
In the IDE's System Information perspective, the information about the system memory is now updated in the System Summary view. You can manually refresh the information, or you can schedule an update by using the Update Control view. 16793 6.3.0 SP2
If you expand and collapse an event file in the IDE's System Profiler, the editor now scrolls correctly. 16796 6.3.0 SP1
The devn-i82544.so driver no longer reports an error when you specify the busindex option. 16818 6.3.0
The IDE's System Profiler now provides hover information for thread events when the process is unexpanded. 16820 6.3.0 SP2
The devn-eepro.so driver no longer fails under a heavy load. 16842 (Ticket ID 62976) 6.3.0
The rsrcdbmgr_*() functions no longer fail because of an error in sorting an internal list. 16872 6.3.0
Lines with a stroke width > 1 are no longer drawn 1 pixel too wide. 16889 6.3.0
io-graphics no longer crashes with a SIGSEGV when used with the devg-rotate90 driver. 16892 6.3.0
devb-eide now works correctly on the Sandpoint board (X3 and X2). 16900 6.3.0
devp-biscayne now has a -d option that you can use to override the default time (500 ms) that the driver waits before enumerating the cards. (The MSAC-PC2 MemoryStick adaptor requires more than 700 ms to initialize.) 16901 6.3.0
In the IDE, when the Target Navigator is refreshed, it no longer jumps to the currently selected item. 16937 6.3.0 SP2
In the Signals view in the IDE's Debugger, changing filters no longer deselects the view and the IDE itself. 16938 6.3.0 SP2
If you call fcntl() with F_DUPFD and a file descriptor's that's greater than the configured number of maximum open file descriptors per process, the function now sets errno to EINVAL instead of EMFILE. 16960 6.3.0
The gettytab file is now correctly shipped in /etc/config. 16971 6.3.0
PCI servers no longer SIGSEGV when you call pci_read_config8() called with length of 256 or more. 16996 6.3.0
A hard power-down no longer causes file corruption. 16999 (Ticket ID 63132) 6.3.0
The IDE's editor for common.mk no longer hides all text that follows #QNX internal start. It now uses folding to hide all text until the next #QNX internal end. 17002 6.3.0 SP2
The Thread Info view in the IDE's Application Profiler now correctly shows rarely scheduled threads. 17003 6.3.0
devn-epic.so and devn-gt64260.so now have an mtu option that you can use to set the maximum transmission unit. 17026, 17027 6.3.0
In the IDE's System Information perspective, the filesystem plugin now restores connections when you restart the target. 17050 (Ticket ID 63145) 6.3.0 SP2
The IDE's System Builder now supports Ctrl-C in the Serial Terminal view. 17054 6.3.0
Scrolling the Tasks view now works cleanly in the IDE hosted on Neutrino. 17070 6.3.0 SP1
cpp0 no longer fails to include some include files under Cygwin. 17076 6.3.0
Resetting the sample counts in the IDE's Application Profiler now zeroes out the call-count information. 17093 6.3.0
The IDE's debugger no longer locks up when it's disconnected from the target (e.g. when the power fails or a cable is disconnected. 17095 6.3.0
The bootscript editor in the IDE's System Builder now supports keyboard shortcuts for cut, copy, and paste operations. 17096 6.3.0
devn-i82544.so now supports promiscuous multicasting. 17139 6.3.0
With devn-ns83815.so, if you enable promiscuous multicast mode, and then enable and disable regular promiscuous mode, promiscuous multicast mode is now correctly still enabled. 17141 6.3.0
devn-speedo.so no longer hangs when you add a lot of multicast addresses to filter. 17142 6.3.0
PhAB now works properly with the Continuus version-control system. 17144 6.3.0 SP1
The devn-rtl.so now negotiates the correct duplex setting when the speed is 10 Mbit. 17146 Patch ID 153
devn-speedo.so now displays the negotiated duplex setting in nicinfo's output. 17151 6.3.0
Guard pages are now properly added and removed by mmap() and munmap(). 17165 6.3.0 SP1
In the IDE's System Profiler, you can now create a tracelog even with interrupts disabled. 17170 6.3.0 SP2
If you use ifconfig to create and assign more than one VLAN interface, the assigned MAC addresses are now displayed correctly. 17172 (Ticket ID 63323) 6.3.0
The BENQ CD rewriter can now read CD filesystems. 17186 6.3.0
We now ship devg-i830.so. 17209 6.3.0
Phindows now correctly draws lines in Pg_DRAWMODE_XOR mode. Note that Phindows doesn't support the extended drawing modes, including XOR raster operations such as Pg_DrawModeDSx. 17217 6.3.0
If you set Pt_SHOW_TITLE in the Pt_ARG_CONTAINER_FLAGS for a PtMultitext, PhAB no longer crops the widget's vertical scrollbar. 17218 6.3.0
devn-epic.so now uses the speed and duplex setting specified on the command line. 17255 6.3.0
devn-speedo.so no longer has transmit lockup/slowdown issues. 17268 6.3.0
devn-smc9000.so no longer hangs the Daytona board when you umount the device during high traffic. 17287 6.3.0
devg-banshee.so now handles alpha maps correctly in 8bpp mode. 17289 6.3.0
_mcount is now correctly defined when compiling for profiling for ARM targets. 17298 6.3.0
In the IDE, compile times are now shorter when you've enabled enhanced dependency checking. 17299 6.3.0
New RAM-detection routines now allow BCM1250E and BCM1125E to boot. 17312 6.3.0
Phindows now correctly handles expose events for alpha images. 17323 (Ticket ID 63511) 6.3.0
The first insertion of a CD is now correctly detected with a Plextor CD-Writer. 17340 6.3.0
devf-ram now handles SRAM properly. 17344 6.3.0
pfm now has a filename-encoding option that lets you tell it how to treat filenames that include non-UTF characters. 17349 6.3.0
devn-bcm1250.so can now run port1 on BCM91125 a second time. 17353 6.3.0
devf-bcm91125 no longer crashes with a SIGBUS in little-endian mode. 17358 6.3.0
pidin now sorts its output by process ID. 17376 6.3.0
The IDE now gives you more control over the names of output files. 17384 6.3.0
The IDE now provides a way for you to add variants (QNX Projects). 17385 6.3.0
make clean in IDE now removes .i files. 17388 6.3.0
IDE now lets you specify compiler and linker options manually. 17390 6.3.0
The IDE's System Summary now displays the correct amount of used memory. 17396 6.3.0
The version of memcmp() in libmalloc now works correctly. 17401 (Ticket ID 63540) 6.3.0
The BCM1250A BSP now properly detects noninterleaved RAM in big-endian mode. 17414 6.3.0
The getaddrinfo() function no longer faults if the hostname can't be resolved. 17441 6.3.0
In the IDE, if you select an application that depends on a shared library from another project, then click Run-->Run As-->C/C++ QNX Qconn, the IDE now automatically uploads the needed shared libraries. 17442 6.3.0 SP2
pppd no longer crashes with a SIGBUS or SIGSEGV during connection on SHLE targets. 17445 6.3.0
devn-ppc405.so now reports the correct duplex setting in nicinfo. 17478 6.3.0
You can now load an SH4 dump file in a standard C project into the IDE's postmortem debugger launch configuration. 17483 6.3.0
Data corruption no longer occurs when you transfer a file to an NFS drive and the server is qnx. 17567 6.3.0
For devn-ns83815.so, adding or removing large sets of multicast addresses no longer corrupts the multicast filter. 17570 6.3.0
With devn-i82544.so, if you delete multicast addresses from an empty filter, you now get an error of ENOENT. 17571 6.3.0
tracelogger now supports daemon mode. 17572 6.3.0
devn-el900.so no longer fails with the 3COM 3CCFE575BT card. 17573 (Ticket ID 63671) 6.3.0
libc has a better implementation of ftw() and now implements nftw(). 17575 6.3.0
A mmap() of physical memory now gets the right color on SH and MIPS targets. 17582 6.3.0
ntpd can now adjust the time backwards in very small increments. 17593 6.3.0 SP1
ntpd no longer displays “Can't adjust time (0 sec, -24 usec): Invalid argument” messages. 17593 6.3.0
With devn-tulip.so, if you start with an empty filter, force a filter overflow, and then go back to an empty filter, the protocol stack now correctly doesn't get any multicast packets, because the filter is empty. 17598 6.3.0
devn-epic.so now uses the correct transmission rate in duplex mode. 17604 6.3.0
If you use pci_attach_device() to connect a device with the PCI_PERSIST flag set, then subsequently attach with the PCI_SHARE flag set, the resources are now correctly shared. 17606 6.3.0
Qnet no longer leaves clients NET_REPLY-blocked if the cable is disconnected. 17640 6.3.0
qtalk now correctly clears the FILENAME macro after sending a file using qcp. 17677 6.3.0
Qnet now works correctly with two (or more) Ethernet network cards plugged into the same network. 17763 6.3.0
The rsrcdbmgr_attach() function now works correctly on all targets. 17784 6.3.0 SP1
asyncmsg_get() no longer fails on MIPS and SH targets. 17800 6.3.0 SP2
The bind=ip option to npm-qnet-l4_lite.so now works correctly on MIPS, ARM, and SH processors. 17810 6.3.0
devi-hirun no longer core-dumps if keyboard-mapping files aren't found. 17811 6.3.0
In PhAB, if you click a file in the Browser Files panel, the file is no longer popped up twice. 17834 6.3.0
Maximizing the CPU Activity pane in the IDE's System Profiler no longer makes the IDE stop updating the editor pane or run ready. 17853 6.3.0 SP2
devg-i830.so: the bus no longer locks when you use the overlay. 17859 6.3.0
If you change a PtBasic into a PtArc, the arc is no longer a very large size. 17865 6.3.0
devn-ppc405.so now reports the correct speed of in nicinfo. 17877 6.3.0
libsocket now correctly exports the symbols dn_skipname and __dn_skipname. 17898 6.3.0
ldqnx.so now honors weak undefined symbols, even in DLLs. 17912 6.3.0
If you call mmap() with the MAP_NOX64, the memory area is now correctly prevented from crossing a 64 KB boundary. 17922 6.3.0 SP1
Capital letters with glyphs no longer get truncated at large point sizes. 17930 6.3.0
When you're debugging a C++ program in the IDE, you no longer get messages of Error while reading shared library symbols: string table offset backs up at 64. 17954 6.3.0
mkifs now reserves enough space in the OS images for [data=uip] executables. As a result, booting with the debug shell no longer hangs the boot procedure. 17961 6.3.0
The pre-6.3 version of Qnet (npm-qnet-compat.so) now does some consistency checking to handle node-down situations. 17963 6.3.0
SMP systems now boot correctly when using procnto-smp. 17984 (Ticket ID 64023) 6.3.0
When debugging a Photon application (using gdb), if you copy something to the clipboard, your terminal window containing gdb no longer freezes. 17993 6.3.0
If you use a PtTree, calling PtTreeModifyItemString() now damages the widget correctly. 18001 6.3.0
Using devg-i830.so with fullscreen programs no longer causes the machine to reboot. 18013 6.3.0
devn-i82544.so is now enumerated properly when you start your system. 18035 6.3.0
devg-i830.so no longer causes a test application to run READY. 18046 6.3.0
The res_queryN() function (called from getaddrinfo()) now allocates a larger stack, so it can run properly. 18053 6.3.0
The usage message for devn-i82544.so now has the correct vid, did, and pci options. 18057 6.3.0
The TFTP server now works correctly on Linux, Neutrino, and Solaris hosts. 18097 6.3.0
Using name_attach() no longer causes applications to crash. 18161 6.3.0
Whenever you open a file in the IDE's editor, the cursor is now correctly displayed as an I-beam, and hover help now works. 18185 6.3.0 SP2
If switching to disassembly fails, the IDE's debugger now displays an error message. 18189 6.3.0 SP2
On SMP machines, waitpid() no longer waits indefinitely if a previous waitpid() has already picked up the status of a child process that's terminating. 18207 6.3.0 SP2
PtMenuBar's anchor flags are now honored after you've turned anchoring off and then back on in PhAB. 18226 6.3.0
devg-banshee.so (with all 3dfx Interactive VooDoo3 chipsets) no longer corrupts the display when you scroll in the Voyager browser. 18227 6.3.0
Repeatedly mapping (MAP_FIXED) to an address returned from mmap() no longer fails. 18230 6.3.0
Mapping to a fixed virtual address no longer fails on MIPS. 18231 6.3.0
The fs-nfs3 utility no longer corrupts mountpoint directories. 18257 6.3.0
devn-i82544.so driver now auto-negotiates to 10 Mbps. 18271 6.3.0
qcc no longer crashes on Solaris when you're building in parallel. 18299 6.3.0 SP2
mkefs now has a maximum path length of 1024 bytes. 18309 6.3.0 SP1
fs-cifs no longer causes errors when you compile an application on a mountpoint. 18337 (Ticket ID 64307) 6.3.0
mkifs now handles long filenames properly. 18340 6.3.0 SP1
The Qnet DNS server no longer truncates the domain if it matches the current domain. 18343 6.3.0
The nfsd utility no longer has trouble handling many clients. 18369 6.3.0
munmap() now correctly sets errno to EINVAL if you specify a size of zero. 18413 6.3.0
PhAB's pixmap editor no longer has a clipping problem. 18430 6.3.0
The System Information view now remembers its refresh rate after you restart the IDE. 18433 6.3.0 SP1
If you cut or copy a file in the IDE's filesystem navigator, the paste operation now works. 18434 6.3.0 SP2
The IDE's filesystem navigator now correctly keeps track as you add and remove files. 18435 6.3.0 SP2
If a sudden power loss corrupts a flash filesystem directory entry as it's being written, it's now properly detected and repaired the next time the driver is run. 18446 6.3.0
Holding a key no longer causes Photon to consume a lot of CPU cycles. 18453 6.3.0
A stack walkback using __builtin_return_address on PPC targets no longer causes a SIGSEGV. 18457 (Ticket ID 64448) 6.3.0
devc-ser8250 no longer randomly pauses transmission for a number of seconds. 18465 (Ticket ID 64124) 6.3.0
devf-generic's format operations no longer show an “overpoll” error on Biscayne SHLE platform (AMD MirrorBit-related). 18477 6.3.0
libfs-flash3 now correctly sets errno to EINVAL for unsupported XTYPES. 18516 6.3.0
On self-hosted Neutrino systems, there's now a symbolic link from /usr/share/bison to /usr/qnx630/host/qnx6/x86/usr/share/bison 18563 6.3.0 SP2
tinit -p no longer displays a text-mode login before starting Photon. 18653 6.3.0
phlogin now runs .profile when you log in as root. 18716 6.3.0
The find utility now returns 0 if all path operands were successfully traversed, or a positive number if an error occurred. 18763 6.3.0
In fs-qnx4.so, if you create a directory, create a file, hold that file open with O_ACCMODE, unlink that file, create the same filename, and then close any files, then attempting to remove the directory no longer fails with an error of EBADFSYS. 18786 Patch ID 245
PhAB for Windows no longer has problems with special characters (e.g. umlauts) in its resource editors. 18787 6.3.0
If you formerly called pci_attach_device() more than once with the same device handle, the function disabled the device. Now, pci_attach_device() disables the device only if the flags you pass to both calls are different. 18797 6.3.0 SP1
ksh now works on big-endian MIPS targets. 18801 6.3.0 SP1
The device enumerator now starts multiple audio drivers correctly. 18811 6.3.0
The kernel no longer faults on SC400 boards. 18836 6.3.0 SP1
If you use DL_DEBUG, dlopen() now displays diagnostic messages if it can't open the library. 18857 6.3.0
io-usb now supports device insertion and removal. 18891 6.3.0
Automounting now works with USB whenever a device is inserted; devb-umass no longer crashes with a SIGSEGV when a USB device is inserted after the driver has been started with PNP and automount enabled. 18901 Patch ID 189
devf-generic no longer runs READY on 6.2.1 Biscayne systems with Strata Flash. 19006 6.3.0
Recursive searches in a CD filesystem no longer return corrupted entries. 19014 Patch ID 189
The ps utility once again displays the processes' name and arguments. 19031 6.3.0
The IDE's QNX Project now supports a more complex build structure. 19060 6.3.0
mkimage is now included in all host packages. 19075 6.3.0 SP1
Calling mmap() with a bad FD no longer causes a kernel fault. 19126 6.3.0 SP1
find now prints correct inode numbers on non-x86 platforms. 19172 6.3.0 SP1
mkifs no longer strips the version information (QNX_usage, QNX_info, and QNX_Phab) from binaries in an image filesystem. 19183 6.3.0
fs-nfs2 and fs-nfs3 no longer treat a link pathname that ends in a slash as a link rather than the directory it points to. For example, readlink() now returns an error instead of data for a path that ends in /. 19209 Patch ID 234
If you specify O_EXCL and O_CREAT for open(), and the path names a symbolic link, open() now correctly fails and sets errno to EEXIST for fs-nfs2 and fs-nfs3. 19210 Patch ID 234
mkfifo() now fails with EEXIST if the path names a symbolic link over fs-nfs2 and fs-nfs3. 19212 Patch ID 234
When you now call mkdir() with a pathname, if a symbolic link already exists with that pathname, mkdir fails with the errno value EEXIST; mkdir() previously resolved the link. 19213 Patch ID 234
If you run mkefs and specify the type=fifo attribute, the command now creates an loadable image. 19214 6.3.0 SP2
opendir() no longer leaks file descriptors after you call exec(). 19223 6.3.0
A small memory leak in npm-qnet-compat.so has been fixed. 19242 6.3.0 SP1
The template for PtRaw now includes the Draw, Init, Extent, and Connect functions. 19274 6.3.0
On Windows, deflate now cleans up its temporary files. 19278 6.3.0 SP1
PhAB no longer core dumps when you click Done in the Edit Template dialog and the directory is empty. 19294 6.3.0
In the IDE's System Profiler perspective, a right-click now changes focus to the clicked view. 19302 6.3.0 SP1
If you move the needle of a PtMeter in test mode, the needle no longer disappears. 19313 6.3.0
In the IDE, you can now remove a process from the Debug view, even if you started the process from the File System Navigator with no console. 19371 6.3.0
Under heavy loads, umount formerly could SIGSEGV a devb-* driver; this has been fixed. 19387 6.3.0 SP1
You can now switch CPUs on an SMP system in the IDE's System Profiler perspective. 19415 6.3.0 SP1
PhAB no longer lets you modify image dimensions before you've created a new image. 19419 6.3.0
We've fixed various issues that caused FFSv3 corruption. 19421 6.3.0
The IDE now preserves the positions of macros in common.mk files. 19424 6.3.0 SP1
The IDE's System Builder now locates files that you specify with an absolute path. 19426 6.3.0 SP1
System Builder's Serial Terminal Clear Terminal button now properly clears the terminal. 19435 6.3.0 SP1
When a thread is created, if the process has reached a breakpoint, the new thread is also stopped. 19446 6.3.0
Phindows now supports local font-lookup. 19460 6.3.0
The borders of a PtRectangle widget are now drawn correctly when its fill color is transparent and its inside color isn't transparent. 19469 6.3.0 SP2
The message that results when you free() or realloc() unallocated data has been corrected. 19481 6.3.0 SP2
On an SMP system, if two threads both access lazily mapped memory (e.g. stack) at the same time, one thread would successfully access the memory, but the other thread would receive a SIGSEGV signal. This is now handled properly. 19483 6.3.0 SP1
In the IDE, to convert a a QNX Project to standard Make C, you can now choose File-->New-->Project or File-->New-->Others. 19504 6.3.0 SP2
dhcp.client can now handle arbitrary options through the /etc/dhcp/dhcp-options file. 19509 6.3.0 SP1
The -s option to mkdir does nothing and has been removed. 19533 6.3.0 SP2
In the IDE's System Profiler, if you search the results for a process name, markers are now displayed on the timeline. 19535 6.3.0 SP2
PtPolygon and PtBezier no longer shift relative to their parent's position (if the container's position isn't (0,0)). 19553 6.3.0
The QNX_CONFIGURATION environment variable is now always set. 19585 6.3.0 SP1
io-blk.so now correctly honors the before and after keywords to the mount command's -o option. 19606 Patch ID 245
io-blk no longer has a 10 MB cache cap; the limit is now 15% of system memory. 19619 6.3.0
Our implementation of gzip now handles large (64-bit) files and the most recent GNU gzip archives. 19651 6.3.0 SP2
io-graphics now marks images on PPC as big-endian. 19658 6.3.0
The devn-ne2000 driver no longer causes a ENOBUFS error under a heavy traffic load. 19670 6.3.0 SP1
execl() now correctly returns EACCESS when you don't have permission to search the target directory. 19692 6.3.0
In the IDE's System Profiler, the event selection is no longer reset when focus is returned to the window, and repeatedly using the Find command no longer causes Find to stop working. 19694, 20629 6.3.0 SP1
Selecting many threads in the Trace Definition dialog no longer crashes the IDE. 19695 6.3.0 SP1
Using the debug procfs interface to read memory from io-net (with Qnet loaded) on a remote node no longer causes a lockup. 19697 6.3.0 SP1
The libc version of alloca(0) now returns a usable address instead of NULL. This means that the libc version and the builtin gcc version now behave the same. 19701 6.3.0 SP1
The DHCP and NTP binaries now include embedded build properties (displayed by use -i). 19705 6.3.0
The __builtin_return_address() function now works correctly for SH targets using gcc 2.95.3. 19706 6.3.0 SP2
When you're building a project in the IDE, the Progress Information dialog now displays the correct make command. 19708 6.3.0 SP2
Changing the numeric value of a PtNumericFloat() no longer resets the value to 0.0 19730 6.3.0
In the IDE, importing a C++ library project no longer turns it into a C++ application project. 19731 6.3.0
io-char no longer incorrectly treats a VINTR character and a physical line break as the same event. This means that the semantics of the ISIG, BRKINT, and IGNBRK flags are now honored. 19736 6.3.0 SP1
In PhAB, if you drag and drop a template in a template folder, the correct name is now displayed in the Selected Templates field. 19745 6.3.0
In the System Profiler in the self-hosted IDE, moving a window over an editor no longer causes redraw problems. 19746 6.3.0
qnxplayer no longer core-dumps when you run the Audio Player from Phindows. 19777 6.3.0
devn-pegasus.so no longer has problems registering its entry in /dev/io-net. 19802 6.3.0
The default C++ options for gcc 2.95.3 now include -D_PTHREADS=1. 19811 6.3.0 SP2
PtNumeric widget and its subclasses no longer have Pt_CALLBACKS_ACTIVE set by default. 19814 6.3.0
If you change a menu module or menu item in a menu module, PhAB now knows that you need to regenerate the code the next time you build the application. 19821 6.3.0
In PhAB for Windows, the rightmost and bottommost stripes of the PhAB window are now drawn correctly. 19828 6.3.0
devb-ram no longer faults on MIPS targets when you use POSIX locks. 19868 6.3.0
resmgr_msgread() no longer erroneously returns 0 bytes because of a boundary condition in message passing. 19884 6.3.0
devf-bigsur and devf-generic can now identify flash devices properly. 19891 6.3.0
The IDE's System Builder now provides better support for the prebuilt directory in BSP packages. 19912 6.3.0
Images (16- and 32-bit) are no longer inverted on PPC targets. 19918 6.3.0
6.3.0 includes the J9 plugin. 19954 6.3.0
exec() no longer hangs if you try to execute a FIFO. 19957 6.3.0
The environment is now set up to allow a J9 plugin or VM to run, even from the browser. 19963 6.3.0
phs-to-pcl now creates better-quality lines and circles. 19967 6.3.0 SP2
The <kvm.h> header can now be compiled with C++ applications without resulting in an error due to undefined references. 19974 6.3.0 SP1
Horizontal scrolling of a Voyager window no longer corrupts the display when you're using the devg-i810 graphics driver. 19980 6.3.0 SP1
The IDE's System Builder now supports the [+page_align] attribute in OS images and embedded filesystems. 19981 6.3.0
If you change a container's name right after you create the project, the IDE no longer loses the build-configuration information. 19982 6.3.0 SP2
Phindows and phditto now feature write-ahead draw buffers that increase performance on a modem connection. To use this feature, specify the -N option for Phindows and phditto. 19986 6.3.0 SP1
In the IDE's CVS perspective, if you choose Check Out As...-->QNX C project, the IDE now retains the list of variants to build. 19992 6.3.0 SP2
The IDE no longer gives a “string index out of range” error when you open a project's properties. 19995 6.3.0 SP2
In the IDE, files now inherit the Type of Build property from their project. 20001 6.3.0 SP1
In the Neutrino-hosted IDE, the BSP description text is now displayed when you import a BSP. 20041 6.3.0 SP1
If you check out a project in the IDE's CVS view, the IDE no longer creates a new empty project and asks if you want to overwrite it. 20042 6.3.0 SP2
In the IDE, you can create an empty file in a library project and link it by using the Extra Object Files in the project properties Linker tab. The field where you can type the filename now has a more descriptive label. 20049 6.3.0 SP2
Phindows exposures are now faster when the window isn't in focus. 20070 6.3.0
When you import a System Builder project by copying an existing .bld file from a previous installation, the project is now properly converted. 20073 6.3.0 SP2
devn-smc9000.so now handles the speed and duplex options correctly, and its performance has improved. 20103 6.3.0
Slinger CGI no longer sends corrupted data in response to POST requests. 20118 6.3.0 SP1
The IDE now has “All” and “All enabled” options for variants in container projects. 20121 6.3.0 SP2
In the IDE, if you choose Import-->File System, you can now choose a directory by typing in the Directory Field field. 20123 6.3.0 SP2
The video drivers no longer have endian problems on big-endian platforms. 20127 6.3.0
On Windows hosts, /tmp is now always mounted to C:\tmp. 20130 6.3.0 SP2
The IDE's System Builder can now find the libraries needed to build the audio drivers for the Renesas Big Sur/Amanda BSP. 20142 6.3.0 SP2
gcc 2.95.3 now defines __ELF__. 20146 6.3.0 SP1
In the IDE's System Profiler, if you set the Tracing Method to “Iterations,” using the default value of 32 iterations no longer creates an invalid .kev file. 20147 6.3.0 SP2
On 32-bit wide Intel flash, if an attempt to access flash using a 16-bit aligned address failed, the flash driver used to crash when it reset the hardware. The reset callback now aligns the addresses properly. 20151 6.3.0 SP1
Moving the mouse over the shelf in Phindows no longer causes an assertion that causes the shelf to exit. 20152 6.3.0
devg-ati_rage128.so no longer locks up when it exits direct mode. 20169 6.3.0
The IDE's Makefile parser now supports \ line continuations. 20173 6.3.0 SP1
Calling PgWaitHWIdle() no longer destabilizes applications. 20192 6.3.0
There's no longer a launchmenu or wm directory in /. 20199 6.3.0
We've corrected a boundary condition where an arc rendering flips over and renders the path in a clockwise fashion rather than counterclockwise. 20200 6.3.0
The pcterm20.phf glyph 0x00 now contains all zero bytes. 20229 6.3.0 SP1
In the PtTty widget, the Pt_ARG_TTY_INPUT resource no longer accepts a value larger than will fit in an unsigned short, and no longer overwrites Pt_ARG_TTY_INPUT_WRITTEN. 20238 6.3.0 SP1
Drawing filled polygons with more than 248 points using HW acceleration with devg-coral no longer causes the graphics driver to lock up. 20242 6.3.0 SP1
The devg-coral graphics driver no longer draws spurious pixels when drawing large unfilled polygons using hardware acceleration. 20244 6.3.0 SP1
Pasting license text into qnxactivate's Add License Key on Linux now works correctly. 20248 6.3.0 SP1
Resizing the Phindows window no longer breaks the blitting in PhAB for Windows. 20250 6.3.0
The startup for the PPC BookE board no longer fails. 20263 6.3.0 SP1
The IDE's System Profiler no longer incorrectly claims to have run out of memory when you're working with a large tracebuffer file. 20264 6.3.0 SP2
When you create new variants for BSP projects, the variant folder now gets the correct name. BSP projects also no longer ignore any advanced properties when building. 20268 6.3.0 SP2
The IDE System Profiler's Preferences dialog no longer lets you enter invalid text. 20278 6.3.0 SP2
In the IDE's System Information perspective, the Signal Information view now displays its data correctly. 20282 6.3.0 SP2
npm-qnet-l4_lite.so adds more debugging sloginfo events in the kernel interface layer to aid in debugging. 20290 Patch ID 234
devf-*: when several blocks are corrupt, the flash filesystem no longer turns them all (incorrectly) into spare blocks. 20312 6.3.0 SP1
mozserver for Voyager can now download files. 20355 6.3.0
In the IDE, if you open a QNX project, add extra include paths, and then add another project folder, the parser can now interpret files from the new extra path. 20365 6.3.0 SP2
There's no longer potentially a very small timing window (out of the user's control) where access() could fail with EINVAL on an fs-cifs mountpoint. 20372 Patch ID 234
Photon executables now include build properties and version information that you can display with use -i. 20379 6.3.0
mkimage now supports flash filesystem version 3 (FFS3) images. 20386 6.3.0 SP1
usemsg now reports an ldrel failure as a failure. 20403 6.3.0 SP2
Network drivers that autonegotiate now report the correct speed and duplex after the cable is reconnected after being disconnected for a while. 20417, 20423 Patch ID 153
PtFileSel and PtFileSelection(): the icon for a closed folder and the icon for a symbolic link to a folder are no longer identical. 20425 6.3.0 SP1
TCP/IP: valid ACKs are no longer thrown out if snd_nxt is rewound. 20430 6.3.0
The stdio library now contains fseeko64() and ftello64(), 64-bit variants of fseeko() and ftello(). 20437 6.3.0 SP1
The libmmedia multimedia library can now handle MP3 files that have ID tags in the header. 20438 6.3.0 SP1
The Mozilla web server now properly handles a change in graphics mode. 20441 6.3.0 SP2
The Mozilla server can now handle a graphic-mode change without corrupting its display. 20441 6.3.0 SP1
gcc 3.3.x no longer ignores __attribute__((__aligned__())) in typedef declarations. 20443 6.3.0 SP1
In the IDE's System Profiler, if you right-click in the Timeline (or any other) pane, select Properties-->General-->CPU, click on a color selector, and then immediately click on the corresponding item in the visible column, you're now correctly given a choice between true and false instead of a color selector. 20448 6.3.0 SP2
In Voyager, the Save Target As right-click menu option now works. 20476 6.3.0 SP1
Multimedia: wav_parser.so now processes truncated .wav files. 20477 6.3.0 SP1
In the IDE, if you create a QNX library project and a QNX application project, and want to link the application against the library, and you specify the library and the library path through the application's project settings by using the Project button under Extra Library Paths to do this, the IDE can now find the library and build the application. 20496 6.3.0 SP2
When you're setting the properties of a pterm window, the radio button for the character set appears in the correct location in the Customize Font List dialog. 20502 6.3.0 SP1
Closing the IDE's System Profiler no longer results in a null-pointer exception. 20540 6.3.0 SP1
Voyager client's menus and context menus are compatible with different browser engines. 20549 6.3.0 SP1
In vserver, a multitext input in a form is now displayed correctly when scrolled. 20565 6.3.0 SP1
If you haven't set your HOME environment variable, the SP1 installer for Windows sets it to be the directory where you installed QNX Momentics (e.g. C:\QNX630). Setting this variable prevents GDB from later becoming unresponsive. 20566 6.3.0 SP1
name_attach() now returns EEXIST instead of ENOTSUP if the local name already exists. 20570 6.3.0 SP1
If you call shm_ctl() with flags of SHMCTL_ANON | SHMCTL_PHYS, the function now correctly returns physically contiguous memory. 20578 6.3.0 SP1
System Builder fields now clear trailing whitespace. 20606 6.3.0 SP1
C++ compile namespace issues and problems with _FILE_OFFSET_BITS=64 have been resolved by including _FILE_OFFSET_BITS mappings within a namespace std wrapper. 20624 6.3.0 SP1
The devn-i82544 driver can now read and load status registers accurately and achieve accurate hardware checksum counts. 20643 6.3.0 SP1
The project-level search paths now work properly in the IDE's System Builder. 20645 6.3.0 SP1
If you delete a target in the Target Navigator, the IDE now prompts you to confirm the deletion. 20667 6.3.0 SP2
The IDE's code coverage report now includes the source code. 20674 6.3.0 SP2
New! The IDE's TFTP server now supports the tsize option. 20689 6.3.0 SP1
sigsetjmp() is now a macro, as required by the C++ standard. 20701 6.3.0 SP1
The helpviewer's search no longer considers -, +, and . characters to be delimiters, so that it can now find terms such as io-net. 20730 6.3.0 SP1
libasound performs audio rate conversion properly. 20750 6.3.0 SP1
qcc now stores intermediate files in a /tmp directory. 20785 6.3.0 SP1
The stack size for the TCP/IP stack has been increased to 4096 bytes. 20789 6.3.0 SP1
fs-nfs3 now supports values greater than 8096 for the -B option. 20810 Patch ID 234
ppc85xx_set_freqs() now uses the proper divisor to get the RTC frequency. 20837 6.3.0 SP1
The Global Name Service manager caches a list of managers and reuses a cached entry if an application looks up a service more than once. If any of the managers in the list crashes, GNS now tries the next server in the list instead of failing. 20846 6.3.0 SP1
If you're running Voyager with the Mozilla server and you change graphics modes, the browser's contents are now correctly updated. 20849 6.3.0 SP1
npm-qnet-l4_lite.so no longer uses a pulse with a hard-coded priority for the QoS transmission 20891 Patch ID 234
phs-to-ps now correctly lines up columns in monospaced fonts that include international characters. 20898 6.3.0 SP2
qcc now skips the preprocessing stage when calling icc, unless you explicitly request it by using the -E or -P option. 20955 6.3.0 SP1
icc -gcc now works with code using <stdarg.h> or <varargs.h>. 20981 6.3.0 SP1
In the IDE, if you combine code coverage sessions, you no longer lose some of the data. 21001 6.3.0 SP2
In the IDE, code coverage now works better for C++, but only if you use gcc 3.3.x, not 2.95.3. 21002 6.3.0 SP2
In the IDE's Code Coverage perspective, the Save entire report button now produces a useful report. 21004 6.3.0 SP2
In the IDE's Application Profiler, launching is now a nonblocking, background activity. 21023 6.3.0 SP2
MP3 files with an invalid ID3 tag are now played at the correct speed. 21029 6.3.0 SP1
A race condition that caused the instrumented kernel to fail on the Renesas Biscayne board under high interrupt load has been fixed. 21039 6.3.0 SP1
The 6.3 IDE now works with the 6.2.1 versions of mkefs and mkifs. 21054 6.3.0 SP2
The System Builder Projects view no longer shows C/C++ projects, just the open System Builder projects. 21068 6.3.0 SP1
In the Build Console preferences in the IDE's C/C++ Development perspective, the minimum number of lines for the Build console is 10; the dialog now displays the correct range. 21074 6.3.0 SP2
io-char no longer discards 0x00 characters when it's in edit mode. 21082 6.3.0 SP1
io-char now correctly handles IGNPAR; if IGNPAR is set, io-char ignores parity errors. 21083 6.3.0 SP1
We fixed a memory leak in procnto that could have caused critical allocations to fail. 21091 6.3.0 SP1
A race condition that used to make Qnet fault io-net has been eliminated. 21119, 21406 6.3.0 SP1
The iofunc library now honors the IOFUNC_MOUNT_32BIT flag, in order to protect resource managers that don't support 64-bit file access. 21122 6.3.0 SP1
The IDE no longer loses build-variant settings when you convert a 6.2.1 workspace into 6.3. 21125 6.3.0 SP1
The bootpd utility is now shipped in the core QNX Momentics release. 21126 6.3.0 SP1
The IDE's System Information perspective now displays process IDs, not just process names. 21132 6.3.0 SP2
bison's support files (bison.simple and bison.hairy) are now installed on non-Neutrino host platforms. 21138 6.3.0 SP1
usemsg no longer fails when the pinfo file is write-protected. 21144 6.3.0 SP1
The devc-ser* drivers now generate Ctrl-C interrupts properly when you're using esh. 21148 6.3.0 SP2
In the IDE, you can now save project properties even if the project's directory has been renamed. 21158 6.3.0 SP1
The icc configuration files are now fixed; shared libraries created with the icc compiler work properly. 21173 6.3.0 SP1
The IDE's System Profiler now unbundles the idle thread's CPU usage from that for the rest of procnto. 21175 6.3.0 SP2
The Timebar in the IDE's System Profiler editor now provides hover help to indicate which display is active. 21176 6.3.0 SP2
If you try to mount an image filesystem, but you specify an invalid physical address, procnto now returns an error instead of crashing. 21183 6.3.0 SP1
In the IDE, build properties for source files are now inherited from their containers. 21191 6.3.0 SP1
<netinet6/in6.h> now compiles cleanly in C++ code. 21204 6.3.0 SP1
The IDE's Code Coverage now works on projects that aren't in the standard workspace directory. 21207 6.3.0 SP1
The devb-eide now supports SiS MuTIOL-compliant chipsets (SiS962/963/964/965). 21212 6.3.0 SP1
The mass-storage device driver (devb-mass) now works with Lexar, Phison, Teac CD, and Msystems Diskgo USB flash devices. 21242 6.3.0 SP1
Linking an application and solib against libcpp.so.3 no longer causes runtime link errors. 21260 6.3.0 SP1
io-char now properly handles software flow-control commands when the terminal is also controlling the flow. 21272 6.3.0 SP1
Using the float type with gcc 2.95.3 no longer causes memory corruption on SH4 platforms; see What's new: Compiler and tools,” above. 21275 6.3.0 SP1
The PPC assembler now supports the new BookE SPRG registers. 21286 6.3.0 SP2
phs-to-ps now handles transparent bitmaps correctly. 21292 6.3.0 SP2
On FFSv3 flash filesystems, an lseek() after a chsize() (ftruncate()) now returns the correct end-of-file size. 21303 6.3.0 SP1
The basic player applications (phplay and mmplay) now run on SH4 platforms. 21306, 21310 6.3.0 SP1
<sys/resmgr.h> now includes the prototype for resmgr_unbind() 21314 6.3.0 SP2
You no longer get an internal error when converting a C/C++ project to a QNX project in the IDE. 21315 6.3.0 SP1
When a channel is destroyed, npm-qnet-l4_lite.so notifies the client node involved. If that client node is down, Qnet no longer faults logging an event regarding this scenario. 21336 Patch ID 234
cam-cdrom no longer leaks memory in DCMD_CAM_CDROMSTART, DCMD_CAM_CDROMSTOP, DCMD_CAM_CDROMPAUSE, DCMD_CAM_CDROMRESUME, DCMD_CAM_CDROMPLAYTI, and DCMD_CAM_CDROMPLAYMSF devctl() commands. 21340 6.3.0 SP1
mpegs_parser.so doesn't make applications SIGSEGV anymore on ARMLE. 21352 6.3.0 SP1
Pt_CB_GOT_FOCUS and Pt_CB_LOST_FOCUS callbacks now work correctly in PtNumeric* widgets. 21357 6.3.0 SP1
<sys/cdefs.h> no longer removes all __attribute__ functions when using icc. 21361 6.3.0 SP1
In the IDE, you can now successfully copy a file to the target, even if the file already exists there. 21381 6.3.0 SP1
The Filesystem pane in the IDE's System Builder now correctly shows user-created directories that are nested inside another user-created directory called /usr when usr is at the root of the IFS filesystem. 21394 6.3.0 SP2
The npm-tcpip-v4.so TCP/IP stack no longer tries to apply a time of 0 seconds to ARP cache entry structures. 21395 Patch ID 234
A problem with MAP_LAZY mappings where there's no L1 pagetable for that 4 MB range when entering message passing that could cause some boards to hang has been corrected. 21411, 22261 6.3.0 SP2
When you terminate pppd, the created PPP interface is now destroyed correctly, so it's no longer listed when pppd isn't running. 21418 6.3.0 SP1
pppd used to leak memory when used in on-demand mode, as a connection was dropped and reestablished over time. This has been corrected. 21427 6.3.0 SP1
io-usb no longer faults on MIPSBE SMP targets when two USB commands run at once. 21439 6.3.0 SP1
io-usb on MIPSBE SMP targets now correctly locates devices after you reboot the system. 21441 6.3.0 SP1
io-audio no longer faults if you start it without loading a driver. 21443 6.3.0 SP1
io-audio no longer faults on SHLE platforms when clients run at different priorities. 21444 6.3.0 SP1
Multidimensional arrays are now displayed correctly in the IDE's Debug Variable view. 21446 6.3.0 SP1
In the IDE's C/C++ perspective, if you choose Compile Selected and then Build Project, the IDE now builds the project if necessary. 21450 6.3.0 SP2
The IDE's System Profile is now able to read tracelogger files that were generated with the ring-buffer (-r) option. 21453 6.3.0 SP2
The color rendering on PowerPC for 16 bits/pixel color depth has been corrected for the PmMem*() functions. 21468 6.3.0 SP1
In the IDE's Debugger, you no longer get a “not responding” message in the Variable view when you switch from one thread to another while debugging. 21478 6.3.0 SP2
fs-nfs2 and fs-nfs3 are no longer vulnerable to improperly formatted RPC packets (e.g. those generated by a reconfigured NFS server for which the client had established a mountpoint). 21480 Patch ID 234
If an unexpected RPC response “NFS NULL” packet arrived while there was a pending open() from a client application that the server hadn't yet responded to, fs-nfs2 or fs-nfs3 formerly could fault. This has been corrected. 21480 6.3.0 SP1
PhAB's Text translation editor no longer loses translation information if you click Save and then Save and Close. 21482 6.3.0 SP1
Passing bad values to msync() no longer makes a procnto thread loop forever, faulting. 21484 6.3.0 SP1
mmap() now handles errors from the resource manager when you're mapping a file. 21521 6.3.0 SP1
PtHelpUrl() now brings an already running helpviewer to the current console. 21534 6.3.0 SP1
The npm-tcpip-v4.so TCP/IP stack no longer faults if you try to get file-descriptor information (e.g. by executing sin fd) on a system where a process has called shutdown() for a TCP/IP socket descriptor, but the socket hasn't yet been closed. 21549 Patch ID 234
PhReleaseImage() now checks to see if the alpha map is in shared memory and releases it appropriately. 21562 6.3.0 SP1
cc1.exe no longer dumps stack with Scansoft code and optimization of -O. 21568 6.3.0 SP2
Profiling using stream mode no longer fails on Solaris hosts. 21584 6.3.0 SP2
fs-nfs3 now supports file sizes greater than 2 GB. 21592 Patch ID 234
npm-qnet-l4_lite.so now only periodically logs an event for misaligned packets supplied by a driver. 21621 Patch ID 234
npm-tcpip-v4.so no longer leaks a small amount of memory when a program calls bind() for an AF_LOCAL socket. 21639 Patch ID 234
If you connect() on an unlinked or nonexistent AF_LOCAL socket, errno is now correctly set to ENOENT. 21664 Patch ID 234
We fixed a potential security problem with pppoed; see What's new: Network protocols,” above. 21675 6.3.0 SP1
vserver used to crash continuously on the Renesas Biscayne; it no longer does. 21677 6.3.0 SP1
ped no longer crashes with a bus error on the Renesas Biscayne. 21679 6.3.0 SP1
phgrafx is no longer vulnerable to buffer-overflow attacks. 21682 6.3.0 SP2
calib no longer crashes with a bus error on the Renesas Biscayne. 21687 6.3.0 SP1
cpim no longer crashes with a bus error on the Renesas Biscayne. 21688 6.3.0 SP1
kpim now displays a message if the definition files are missing. 21689 6.3.0 SP1
vserver.file no longer crashes when running helpviewer on the Renesas Biscayne. 21690 6.3.0 SP1
The IDE's Filesystem pane now works for EFS-only projects. 21693 6.3.0 SP1
<sys/cdefs.h> now correctly defines __deprecated__ when it isn't compiled with gcc. 21695 6.3.0 SP1
The helpviewer no longer crashes with a memory fault if you move it and then click the restore button on SH4 targets. 21696 6.3.0 SP1
mixer no longer crashes with a bus error on the Renesas Biscayne. 21697 6.3.0 SP1
phview no longer crashes with a memory fault on SH4 platforms. 21698 6.3.0 SP1
The default binary parser for new Make projects is now the QNX binary parser instead of ELF. 21699 6.3.0 SP2
Print preview no longer crashes for a ped text file on the Renesas Biscayne. 21700 6.3.0 SP1
nfm-bpf.so no longer faults on SHLE or MIPSBE platforms while multicasting. 21715 6.3.0 SP1
In the IDE, if you check the Generate Map File checkbox under Properties-->QNX C/C++ Project-->Linker, and you're using icc as the compiler, the application no longer fails to build. 21722 6.3.0 SP1
PtWidgetInsert() now correctly moves the widget's region to the correct place in the region hierarchy. 21724 6.3.0 SP1
In the IDE, changing the build variants or compiler type no longer changes the shared library type to static. 21734 6.3.0 SP1
When you profile a C++ application in the IDE, sampling information and the number of calls to each function are now correct. 21738 6.3.0 SP2
In the IDE, you no longer get a ClassNotFound exception while browsing for the upload directory on a target (i.e. by opening the Launch Configuration dialog, selecting Download page, and then selecting Browse). 21762 6.3.0 SP2
ntdp now synchronizes the time correctly. 21766 6.3.0 SP1
chkfsys now uses less memory when checking large disks. 21795 6.3.0 SP2
On starting, touchscreen drivers no longer complain about finding a graphics region with no capability data. 21822 6.3.0 SP2
ntox86-ld-2.10.1 now has execute permissions on Linux and Solaris. 21833 6.3.0 SP1
helpviewer-index no longer crashes on PPC targets. 21835 6.3.0 SP1
The devc-ser8250 no longer lets you add data to the canonical buffer when the buffer is full. 21859 6.3.0 SP1
The gcc 2.95.3 compiler no longer issues erroneous warnings that variables defined in a function might be uninitialized. 21863 6.3.0 SP2
If your project's .cdtproject file is write-protected, and you try to add or delete a build target, the IDE now displays an error message and doesn't modify anything. 21868 6.3.0 SP2
In the Neutrino-hosted IDE, postmortem profiling on x86 no longer breaks with ccov enabled in the build. 21887 6.3.0 SP2
Voyager now correctly displays special characters (e.g. letters with accents) in its title bar. 21893 6.3.0 SP2
The ln-w utility now implements the functionality of symbolic links; there's a new -s option for creating them. 21924 6.3.0 SP1
User TCP applications that are blocked on read() no longer unblock and return 0 when you run sin. 21962 Patch ID 234
The IDE's Process Information view now correctly displays all environment variables. 21964 6.3.0 SP2
Environment variables are now displayed in the IDE's Process Information view. 21964 6.3.0 SP1
A large HTTP GET request-URI (greater than the value of PATH_MAX) no longer overflows Slinger's internal buffer and causes a fault. 21965 6.3.0 SP2
QWinCfg no longer crashes when QNX_HOST or QNX_TARGET doesn't exist in the environment registry. 21967 6.3.0 SP2
Phindows no longer displays warnings when you start it on Windows 98. 21976 6.3.0 SP1
mmplay no longer shows a blank area the first time that you play an MPEG video. 21978 6.3.0 SP1
The IDE no longer flags “Remarks” from the Intel C/C++ compiler (icc) as errors. The compiler uses remarks to report common, but sometimes unconventional, use of C or C++. 22012 6.3.0 SP2
fsync() no longer causes problems on read-only media. 22013 Patch ID 189
pax -rw now works properly on Windows hosts. 22016 6.3.0 SP2
Corrected a typo in the Progress Information dialog in the IDE's Application Profiler. 22020 6.3.0 SP2
In the IDE's Application Profiler, double-clicking main now correctly opens the corresponding source file of a C++ project built with icc 8.0. 22034 6.3.0 SP2
Canceling a download no longer causes Voyager to crash. 22036 6.3.0 SP1
In the IDE, the common.mk editor now uses folding instead of a toggle button to hide and reveal the hidden internal code. 22044 6.3.0 SP2
The snapshot of the Build and Debug Options tab of the Project Properties has been updated in the Working with Applications chapter of the Photon Programmer's Guide. 22073 6.3.0 SP2
The embedded shells (esh, uesh, and fesh) have two new built-in commands: emount and ewaitfor. 22074 6.3.0 SP2
Corrected the instructions for preventing users from moving or resizing an application, in the Working with Applications chapter of the Photon Programmer's Guide. 22078 6.3.0 SP2
The IDE's Debugger now launches the binary on the target and gdb in parallel. 22080 6.3.0 SP2
nftw() now recognizes readdir() failures and reports errors back to the caller. 22084 6.3.0 SP2
ApOpenDBase() now properly handles “Alloc” widget resources. 22091 (Ticket ID 67098) 6.3.0 SP2
The IDE's debugger now handles conditional breakpoints in a DLL correctly. 22097 6.3.0 SP2
If you create a regular C make project in the IDE, invoke the Set QNX build environment function from the C/C++ Projects view, go to the next page, and then select the system default compiler, the x86 element is no longer repeated in the architecture list. 22101 6.3.0 SP2
devb-umass now works correctly with devices (such as the San Disk Cruzer Mini) that return invalid data for CSW. You can now specify the csw_ignore option on the command line. 22104 Patch ID 189
The SCSI_INQUIRY command for devb-umass now requests only 36 bytes. Some devices fail when asked for the full 96 bytes. 22105 Patch ID 189
The IDE's System Builder now recognizes backslashes as line-continuation characters. 22123 6.3.0 SP2
PhAB no longer crashes when you try to add menu items. 22146 6.3.0 SP1
usbd_urb_status() no longer returns EOK when the status function parameter indicates that the URB is still busy. 22156 Patch ID 189
In the IDE's Memory Events view, if you resize the columns in the Allocation Trace, Unmatched Allocations, and Unmatched Deallocations, the IDE remembers the new settings when you switch to another perspective and back again. 22162 6.3.0 SP2
When you're adding new variants, the IDE now prompts you if it needs any extra information (e.g. source and header files in a variant or CPU directory). 22166 6.3.0 SP2
We removed a spurious free() in the flash filesystem code that could have corrupted the heap. 22176 6.3.0 SP1
The configuration files for the MIPS assembler now include the -G0 option, so options are now consistent for the assembler and compiler. 22195 6.3.0 SP2
The malloc_g library can now detect memory leaks on MIPS targets. 22198 6.3.0 SP2
fs-cifs now responds, even if left idle for several hours. 22226 Patch ID 234
npm-qnet-l4_lite.so now lets you specify the maximum transmission unit (MTU) of a Qnet packet via the mtu_en=num option. 22250 Patch ID 234
npm-qnet-l4_lite.so now supports a maximum of four network interfaces. 22269 Patch ID 234
In the IDE, System Builder project properties are now saved and restored properly. 22276 6.3.0 SP2
Missing parentheses have been added to the definition of __PASS_AS_FLOAT() in <sh/platform.h>. 22289 6.3.0 SP2
use no longer crashes with a SIGSEGV if the usage message doesn't contain a newline character. 22299 6.3.0 SP2
A client USB driver no longer gets an extra insertion callback if it's started while the USB stack is enumerating a device. 22307 Patch ID 189
gcc 2.95.3 no longer hangs when you use the -O2 or -O3 option. 22316 6.3.0 SP1
We removed some undefined weak symbols from libgcc.a for gcc 3.3.5 that were being set to 0, causing a SIGSEGV when they were called. 22355 (Ticket ID 67274) 6.3.0 SP2
The coverage annotation at the end of a program is now accurate in the IDE's Code Coverage perspective. 22391 6.3.0 SP2
In the debugger on MIPS and SH, if you single-step from one instruction onto an instruction where you have a breakpoint set, the second instruction is no longer left as a breakpoint trap instruction. 22392 6.3.0 SP1
The IDE's System Builder now uses an extension of .srec instead of .ifs when you're creating an S-record image. 22537 6.3.0 SP1
mmplay no longer locks up if you queue an mpv file to it before the previous mpv is finished. 22548 6.3.0 SP1
Writing to a 0-sized unlinked file no longer makes fs-ext2.so crash. 22593 Patch ID 245
If an application is executed from an NFS-mounted filesystem, and has its binary code changed on the filesystem while maintaining the same path and filename on the filesystem, executing the application a second time no longer causes the already executing instance of the application to fault. 22601 Patch ID 234
In gdb, you can now successfully step from within a shared library to another function. 22622 6.3.0 SP1
devc-serpsc no longer runs out of interrupts on the Freescale Lite5200EVB. 22630 6.3.0 SP2
The permissions for the default /etc/rc.d/rc.local file are now 750 (read, write, execute for the user; read, execute for the group; no permissions for others). 22665 6.3.0 SP1
fs-ext2.so no longer runs READY if you try to create too many files and inodes. 22676 Patch ID 245
PhAB no longer causes j9 to hold 92-98% of the CPU when working with the IDE. 22679 (Ticket ID 66319) 6.3.0 SP2
When you build a Container project in the IDE, the top-level container no longer reports a Pass when some projects fail. 22720 6.3.0 SP2
The stat() times of a file accessed over the network using fs-cifs on a PPC target are now correctly decoded. 22726 Patch ID 234
pci-mgt5200 now supports the Silicon Motion Lynx chipset 22732 6.3.0 SP2
Moving a large image in PhAB for Windows no longer causes Photon to crash. 22832 6.3.0 SP1
In the IDE's System Profiler, selection in the timeline is now based on the nearest event instead of the nearest, next event. 22872 6.3.0 SP2
route, arp, netstat, and npm-tcpip-v4.so once again use a monotonic clock and timeouts. 22877 Patch ID 234
If a container project is read-only, and you try to save it, the IDE now asks if you want to make your project read-write. 22888 6.3.0 SP2
In the IDE's Container Import Wizard, the Location button is now enabled all the time. 22890 6.3.0 SP2
We addressed a rare corner case where many equally sized, noncontiguous, RAM sections in the syspage (8×4 MB) could have resulted in a kernel error assertion during bootstrapping on ARM or x86 targets. 22907 6.3.0 SP2
socket() no longer sets errno incorrectly when the system is out of memory for AF_LOCAL sockets. 22917 Patch ID 234
The IDE's System Optimizer dialog no longer always displays “No libraries can be removed.” 22923 6.3.0 SP2
hogs no longer crashes in a system with more than 200 processes. 22950 6.3.0 SP2
If you edit the properties of an OS image in the IDE's System Builder perspective, the combobox of procnto variants is now correctly filled in. 22957 6.3.0 SP2
stat() no longer fails on fs-dos.so directory names that contain UTF-8 characters. 22959 Patch ID 189
A typo has been fixed in the error message that appears in the IDE's QNX C/C++ Properties dialog when you select more than one variant for code coverage. 22961 6.3.0 SP2
We fixed a typo in an IDE error message that appears when you choose Import QNX Sources but don't select any packages. 22968 6.3.0 SP2
A typographical error has been corrected in the Launch Configuration's Tool tab in the IDE. 22974 6.3.0 SP2
In the IDE, removing projects from a container project's configuration no longer corrupts the container project. 22995 6.3.0 SP2
The IDE no longer locks up when you delete a large number of open files from the workspace. 22997 6.3.0 SP2
The SMP kernel no longer locks up while in clock_slock. 23001 6.3.0 SP2
The IDE System Builder's Console View is now forced-front when you're building an image. 23012 6.3.0 SP2
In the IDE, Check Dependencies now works properly when Share all project properties is off. 23023 6.3.0 SP2
If you import an existing project, the IDE now preserves the Check Dependencies On status in the right-click menu. 23025 6.3.0 SP2
The Photon libraries and PxLoadImage() now support all BMP formats. 23057 6.3.0 SP2
Packet processing now occurs only after the devn-pcnet.so driver has fully registered with io-net, in order to prevent an assertion with the debug version of io-net. 23068 Patch ID 153
Signal handlers that process interrupts no longer corrupt the Freescale MPC8540 CPU's count (CTR) register. 23089 6.3.0 SP2
fs-nfs3 no longer (depending on the server implementation) causes an application calling readdir() for a NFS-mounted directory to loop forever. 23092 Patch ID 234
Some USB devices don't handle string descriptors properly, so libusbdi.so now checks to see if the string index fields for Manufacture or Product are set. If they aren't, the library doesn't try to read the language table (index 0) on the string descriptor. 23097 Patch ID 189
We've added a new -o timeout=num_seconds option to fs-cifs that lets you specify the timeout to apply if the CIFS server can't be reached, or isn't responding. 23115 Patch ID 234
If you use the -N option to qcc to specify the stack size, the size is now specified correctly in applications for PPC BE targets. 23120 6.3.0 SP2
The Launch configuration dialog now properly restores saved target download directories. 23124 6.3.0 SP2
The nfsd server no longer faults when listing the contents of directories when the pathnames exceed 255 characters. 23248 Patch ID 234
The IDE's Select Source Projects dialog now scrolls properly after you've imported a BSP. 23265 6.3.0 SP2
The IDE no longer has problems copying shared libraries when you're running a debugging session on a target. 23267 6.3.0 SP2
In the IDE, for QNX Projects, the default debugger is the QNX Debugger; for Standard Make projects, it's the GDB debugger. 23277 6.3.0 SP2
Binaries that you build in the IDE now indicate the architecture they were built for. 23287 6.3.0 SP2
As of 6.3.0, Neutrino supports 256 priorities. If you're logged in as root, nice now lets you set the priority to any value in the new range. 23294 6.3.0 SP2
If you try to mount a corrupt filesystem that has a bad mode for its root directory, the mount fails with an EBADFSYS error instead of crashing fs-ext2.so. 23302 Patch ID 245
fs-ext2.so no longer runs ready if it encounters invalid (0-length) directory records; it now flags them as being EBADFSYS. 23303, 23304 Patch ID 245
Drag-and-drop from the IDE's Target File System Navigator now works properly. 23309 6.3.0 SP2
The Optimize button in the IDE's System Builder now works correctly. 23319 6.3.0 SP2
In the IDE, after you disable a breakpoint (by right-clicking on it or via the Breakpoints view), it no longer flickers between being enabled and disabled. 23321 6.3.0 SP2
The IDE's System Builder editor with 2 or more images now displays the contents of an embedded filesystem correctly. 23324 6.3.0 SP2
npm-tcpip-v4.so by default uses sequential IP header IDs. You can now enable random IP header IDs, by using the sysctl utility or the sysctl() function. 23328 Patch ID 234
npm-tcpip-v4.so would always respond to the ICMP timestamp request. You can now turn this feature off with the sysctl utility or the sysctl() function. 23329 Patch ID 234
npm-qnet-l4_lite.so's priority inheritance now works correctly for messages being sent with a priority greater than 63. 23352 Patch ID 234
The usage message for fs-nfs3 now correctly says that the -s option, which specifies to use a soft mount, is a mountpoint option, not a global option. 23381 Patch ID 234
The IDE's System Builder now supports the prefix attribute in buildfiles. 23394 6.3.0 SP2
asyncmsg_put() and asyncmsg_get() now work properly when you put multiple messages and get them later. 23406 6.3.0 SP2
The IDE's System Builder now lets you select the compression method to use for an OS image. 23416 6.3.0 SP2
phs-to-ps no longer drops elements such as text at the end of a file. 23418 6.3.0 SP2
If you use the DPI setting to increase the print quality, polygons are no longer printed with some extra stray lines. 23420 6.3.0 SP2
When implementing asynchronous write (write caching), fs-nfs3 now correctly submits cached NFS write operations with the user ID of the application performing the write instead of root. 23425 Patch ID 234
io-blk.so now locks a vnode when it's created, to prevent a crash that could occur if a high-priority sync tried to use the vnode before it was initialized. 23462 Patch ID 245
usemsg now properly embeds inline usage messages when building source. 23495 6.3.0 SP2
The IDE's Application Profiler no longer crashes on the Renesas Biscayne. 23560 6.3.0 SP2
A certain pattern of read(), seek(), and ftruncate() no longer potentially returns corrupt data when you call read() with fs-nfs2. 23581 Patch ID 234
A certain pattern of read(), seek(), and ftruncate() no longer potentially returns corrupt data when you call read() with fs-nfs3. 23582 Patch ID 234
qconfig.mk now defines CP_HOST as qnx_cp -vfpc (i.e. without -u). 23592 6.3.0 SP2
In the IDE, “Save all modified resources automatically prior to manual build” now works correctly with container projects when the build is done from the container project's build configuration. 23617 6.3.0 SP2
For io-blk.so, if you don't specify a full path for the device in the automount option, io-blk.so uses the value of its devdir option as a prefix. 23626 6.3.0 SP2
All MirrorBit flash drivers now implement a 4-us delay after sending a suspend/resume command to the board. 23629 6.3.0 SP2
tracelogger now works correctly when you add it to an image for PPCBE targets. 23657 6.3.0 SP2
The AC97 mixer now works properly on playback on the Freescale Total5200. 23698 6.3.0 SP2
If you're using fs-cifs to rename a file in the same directory, while changing only the case of letters in the filename (e.g. file to FILE) and the server is Windows, the file is no longer deleted. 23706 Patch ID 234
On fs-ext2.so, dt no longer reports data errors with large files on a full disk. 23718 Patch ID 245
When fs-cifs has a connection to the network server, and the server is rebooted, or some kind of temporary network failure occurs, fs-cifs tries to reestablish the connection and resume the operation it might have been doing. If that operation is a readdir(), fs-cifs no longer loses its place in the directory. 23729 Patch ID 234
You can now change the kernel in the Properties view in the IDE's System Builder. 23734 6.3.0 SP2
In the IDE's Debug perspective, when you disconnect from a process, you no longer get an error message: The target is not suspended. 23786 6.3.0 SP2
fs-ext2.so no longer deadlocks during a truncate() on a full disk. 23791 Patch ID 245
You no longer get a SIGSEGV if you call asyncmsg_put() after calling asyncmsg_connect_detach(). 23798 6.3.0 SP2
Bulk/interrupt transfers now correctly set the direction for zero-length transfers; if you're using the OHCI controller, and you print to a USB printer, the printer no longer blocks. 23802 Patch ID 189
The usemsg utility no longer leaves temporary files behind. 23803 6.3.0 SP2
The IDE's Application Profiler no longer reports that some functions have been called when they haven't been. 23815 6.3.0 SP2
gcc 2.95.3 no longer has a problem with template declarations that are nested within structs. 23823 6.3.0 SP2
The inline Assembly functions in the MIPS, PPC, and SH versions of <sys/cache.h> no longer cause problems with the C++ preprocessor. 23843 (Ticket ID 68460) 6.3.0 SP2
We've added the max_tx_bufs=num option to npm-qnet-l4_lite.so. This option specifies the number of tx buffers that Qnet holds in reserve before allocating more. 23852 Patch ID 234
The IDE's Application Profiler no longer hangs occasionally. 23859 6.3.0 SP2
When you use the fastforward option to npm-tcpip-v4.so or npm-tcpip-v6.so, the TCP/IP stack now correctly marks a route as being down and sends an ICMP-unreachable packet back to the source if the next hop gateway isn't responding to an ARP request. 23864 Patch ID 234
MsgReadv(), MsgWritev(), and devctl() commands with very little transport data (512bytes) now take less time on SH4A targets. 23866 6.3.0 SP2
npm-tcpip-v4.so now returns a ICMP_UNREACH_NET code if a packet is forwarded, and there's no route specified on the gateway. 23900 Patch ID 234
If you start devc-sersci with two interfaces, /dev/ser2 now works correctly. 23993 6.3.0 SP2
The public header files no longer contain //-style C++ comments. 24049, 24474 6.3.0 SP2
devu-ohci.so now correctly handles zero-length packets for the Philips ISP1562 USB PCI chipset. 24062 Patch ID 189
devu-ehci.so now correctly handles large transfers for the Philips ISP1562 USB PCI chipset. 24062 Patch ID 189
The io-graphics initialization sequence no longer breaks some graphics drivers, such as devg-smi7xx. 24084 Patch ID 290
mkxfs now correctly parses for the ETFS buildfile attributes. 24147 6.3.0 SP2
We corrected a problem with the DCMD_FSYS_DIRECTIO command to devctl() that caused data-transfer errors when the filesystem's block size wasn't the same as the device-sector size. 24149 Patch ID 189
We corrected a problem with the DCMD_FSYS_DIRECTIO command to devctl() that caused data-transfer errors when the filesystem's block size wasn't the same as the device-sector size. 24149 Patch ID 245
The IDE's System Builder no longer creates the wrong directory structure when you switch build variants for a BSP. 24175 6.3.0 SP2
The ETFS filesystem no longer faults in io_fdinfo(). 24213 6.3.0 SP2
fs-cifs no longer faults when you use a password longer than 32 characters. 24252 Patch ID 234
fs-cifs now supports mmap() properly. 24255 Patch ID 234
The devn-rtl.so driver now works on MIPSBE targets. 24259 Patch ID 153
A certain pattern of read(), seek() and ftruncate() no longer returns corrupt data when you call read() with fs-cifs. 24275, 23583 Patch ID 234
A problem with dependency-checking has been fixed in the IDE. 24365 6.3.0 SP2
In the IDE, if you delete a project, the container project it belonged to is now automatically updated so that it no longer refers to the project in its build configurations. 24421 6.3.0 SP2
Large executables (larger than 11 MB) no longer fail with an EBADFD error when loaded from either a DOS or QNX 4 filesystem on SH7770. 24434 6.3.0 SP2
A conflict between kernel calls and the timer tick's interrupt that caused sporadic scheduling not to work properly has been corrected. 24456 6.3.0 SP2
In the IDE, adding a usage message to a binary in a C/C++ project no longer fails when the message is located in the C file. 24468 6.3.0 SP2
Client drivers are now prevented from attaching to USB hubs. 24552 (Ticket ID 69035) Patch ID 189
In the IDE, standard make projects now use the QNX Binary Parser by default. 24564 6.3.0 SP2
The Windows-hosted version of the addvariant script no longer relies on xargs (which isn't included on Windows hosts). 24569 (Ticket ID 69055) 6.3.0 SP2
The PCI server on SH4A now supports legacy I/O devices. 24611 6.3.0 SP2
The IDE's Debugger no longer displays Not Responding instead of the value of some local variables. 24644 6.3.0 SP2
qcc -V now correctly reports which targets are available. 24753 6.3.0 SP2
The IDE's Variables view now correctly displays arguments that were passed by reference. 24871 6.3.0 SP2
When multiple threads at the same priority send data on a stream socket, the data is no longer sometimes intermixed in a nonintuitive way when received at the peer. 24873 Patch ID 234
The system uptime is now computed correctly in the IDE's System Profiler, so it's no longer reported as being greater than 100%. 24878 6.3.0 SP2
We've changed the possible values for the periodic_ticks option to npm-qnet-l4_lite.so from 1, 2, 5, or 10 to any value from 1 to 1000. 24893 Patch ID 234
npm-tcpip-v4.so no longer causes io-net to run READY when using the SO_BINDTODEVICE socket option. 25036 Patch ID 234
New! We updated /etc/system/enum/graphics so that the graphics enumerator on x86 systems now detects the Fujitsu Coral-PA reference card. 25057 Patch ID 381
The IDE now correctly generates target names when you switch the debug and release variants on and off. 25157 6.3.0 SP2
npm-tcpip-v4.so no longer faults when you use the ioctl() SIOCGIFALIAS to get information on an address that doesn't exist. 25166 Patch ID 234
The Dinkum <new.h>, <iomanip.h>, <iostream.h>, and <fstream.h> are now correctly in usr/include/cpp/embedded. 25167 6.3.0 SP2
Using the -w size=num and -w number=num options to fs-nfs3 to change the size of the cache for asynchronous write operations no longer causes internal cache corruption. 25186 Patch ID 234
The IDE now builds a project properly after you've used Compile Selected on one of its files. 25238 6.3.0 SP2
cpp0, the preprocessor for gcc 2.95.3, can now handle long filenames when searching the paths for include files. 25322 Patch ID 280
When the number of interfaces is greater than 8, the npm-tcpip-v4.so stack no longer incorrectly assigns two interfaces with the same interface index. 25359 Patch ID 234
NFS requests always have a unique identifier (xid) value. If a NFS server stops responding (for example because of a temporary network failure) fs-nfs2 and fs-nfs3 try to remount the server and resend the request. We've found that some servers refuse to reply to a request if the request's xid hasn't been changed after a remount, which is against the NFS specification. We've added an -x option to work around this problem; it causes the client to change the xid of the request after a remount. 25402 Patch ID 234
When using fs-cifs on PPCBE targets, fs-cifs no longer returns an unexpected errno back to applications that are trying to connect to resource-manager processes, but resolve the manager pathname via the CIFS mountpoint rather than the manager process if that process isn't running. 25447 Patch ID 234
The IDE's Memory Analysis now correctly displays allocation data for SH targets. 25470 6.3.0 SP2
In the IDE, if you add subfolders to a project and create them as links to existing folders, and then edit the project properties and add extra source paths and extra include paths that point to folders inside the previously added (linked ) folders, and then click Apply, you no longer get an exception. EXTRA_INCVPATH and EXTRA_SRCVPATH items no longer show up inside the project. 25606 6.3.0 SP2
The IDE no longer omits the lines for the postbuild target when it generates common.mk. 25609 6.3.0 SP1
The timestamp of created files is no longer incorrect when the server or client (fs-cifs) system has its time zone set to something other than GMT. 25619 Patch ID 234
If two drivers attempt to abort an endpoint at the same time, the devu-ehci.so driver no longer loops while disabling and enabling the schedule. The client drivers no longer remain blocked forever waiting for the abort operation to complete. 25647 Patch ID 189
io-graphics now supports the WXGA (1280x800), WXGA+ (1440x900), WSXGA+ (1680x1050), and WUXGA (1920x1200) wide-screen video modes. 25744 Patch ID 290
fs-nfs2 and fs-nfs3 now recover properly if the NFS server terminates and is restarted while the client is actively exchanging data with the server. Attempts to access files over the NFS link used to result in errors, with errno set to EPERM. 25765 Patch ID 234
mketfs now correctly embeds IFS image files on Windows hosts. 25770 6.3.0 SP2
npm-qnet-l4_lite.so no longer has a calculation issue when determining whether to retry during a node resolution. 25781 Patch ID 234
The line .set PPC_UTIL_AH_INCLUDED,1 has been corrected in /usr/include/ppc/util.ah. 25835 6.3.0 SP2
sendnto once again supports RAW images. 25850 6.3.0 SP2
npm-tcpip-v4.so no longer sometimes generates a double reply in response to sin fd queries. 25856 Patch ID 234
The io-graphics server no longer locks up Amanda PCI, MGT5200 and other boards. 25861 Patch ID 290
In the IDE, libraries are no longer included in the building dependencies by default. 25868 6.3.0 SP2
We've included a qaudit.sh script that lists the QNX products that you've installed on your system. 26136 Patch ID 338
In the IDE, if you choose Check out as.... and then QNX C Project, the .cdtproject file is now created properly. 26147 (Ticket ID 69975) 6.3.0 SP2
If the export in the /etc/exports file is a link to another directory, showmount now correctly displays the link pathname instead of the target pathname. 26149 Patch ID 234
When you import a file into a project in the IDE, the list items are now aligned properly. 26208 6.3.0 SP2
The default versions of gcov are now set correctly. 26213 6.3.0 SP2
gunzip, uncompress, and zcat are all links to gzip on Neutrino, Linux, and Solaris hosts, and copies of gzip on Windows hosts. 26222 6.3.0 SP2
In the IDE, including from other projects work again when gcc 3.3.5 is selected. 26442 6.3.0 SP2
In the IDE, if you create a QNX application or library project for one platform, create a folder named .abc in the variant directory, open the properties for this project, and then press OK, the IDE no longer creates a new variant, abc. 26474 6.3.0 SP2
When npm-tcpip-v4.so runs out of threads, the situation is logged to sloginfo. 26556 Patch ID 234
We've changed the source to npm-tcpip-v4.so to be compatible with gcc 3.4.4. 26682 Patch ID 234
chkdosfs no longer causes devb-eide to run READY in some cases. 26855 Patch ID 245
The power is now turned on for at least one port for USB hubs that have ganged power controls. 27117 Patch ID 189
If there's been a successful mount of an fs-cifs share, and then the share is umounted, subsequent mounts of that same share no longer succeed if the user and password credentials specified are incorrect or missing. 27151 Patch ID 234
We added code to check PCI capabilities for power-management features and power-up USB devices if they're powered down. 27273 Patch ID 189
The procmgr_event_notify() function has a new flag, PROCMGR_EVENT_PATHSPACE, that you can use to ask for notification when a resource manager adds or removes an entry (i.e. mountpoint) to or from the pathname space. 27379 6.3.0 SP2
The enumeration code no longer retries or delays if a USB device has been removed. 27409 Patch ID 189
The debug malloc library for SHLE no longer passes in a special flag when it needs to allocate memory from the kernel using mmap(). 27639 Patch ID 155
The devn-pegasus.so driver now works with newer 8513-based chips. 27727 Patch ID 153
We fixed a toggle problem for USB transfers that span multiple TDs. An URB transfer spanning more than one memory page with an odd number of packets would have the expected data toggle set incorrectly. 27856 Patch ID 189
fs-cifs no longer faults if an empty password ("") is passed on the command line. 27957 Patch ID 234
io-blk.so now delays the completion of the lock mount option if no CD is currently installed. 28037 Patch ID 245
io-net no longer fails with a SIGBUS on startup with the devn-pcnet.so network driver on the MIPSLE Malta boards using QNX Neutrino 6.3.2. 28177 Patch ID 153
If a USB device has multiple interfaces and alternate settings on the second interface, selecting one of alternate settings no longer causes errors when enqueuing transactions on the first interface. 28313 Patch ID 189
Errors are now correctly reported for isochronous USB transfers when the buffer size is larger than MPS. 28315 Patch ID 189
Neutrino now correctly reads the realtime clock on machines with the ATI IXP200 chipset. 28363 Patch ID 311
Fetching and storing multiple configurations for a USB device now works correctly. 28449 Patch ID 189
The devn-pcnet.so driver now includes the probe_phy option. 28634 Patch ID 153
The devn-rtl.so driver now includes the probe_phy option. 28637 Patch ID 153
The devn-pegasus.so driver now includes the probe_phy option. 28647 Patch ID 153
npm-qnet-l4_lite.so no longer potentially faults or corrupts the memory of the io-net process if your network contains a large number of Qnet nodes, or nodes with long hostnames and domains. 28765 Patch ID 234
devu-uhci.so now clears an interrupt before processing completed transactions (TDs). This fixes a problem where a completed transaction was done but the interrupt was missed and the client driver waited indefinitely or until some other completed transactions occurred. 28771 Patch ID 189
We've corrected libAp so that local exploitation of a stack-based buffer overflow vulnerability no longer allows local attackers to gain root privileges. 28807 (iDefense Security Advisory 02.07.06) Patch ID 232
fs-dos.so now correct handles a FAT-hosted OS/2 filesystem. 28811 Patch ID 245
We now provide packagebsp and setupbsp utilities that support a new, simplified way of packaging and installing Board Support Packages. 28858 Patch ID 283
npm-tcpip-v4.so no longer corrupts an internal packet cache. 28896 Patch ID 234
The default interrupt threshold for devu-ehci.so is now 1. This increases the allowable interrupt frequency and improves the “out-of-box” mass storage performance. 28952 Patch ID 189
The io-usb server no longer crashes with a SIGSEGV on startup when bad arguments are passed to it. 29082 Patch ID 189
devn-pcnet.so no longer loops forever when processing a list of packets. 29128 Patch ID 153
Multicast and broadcast statistics for the devn-pegasus.so driver are now correctly displayed with nicinfo. 29130 Patch ID 153
Multiple split interrupt transactions no longer fail on EHCI chipsets. 29230 Patch ID 189
We've updated the qconfig utility so that it provides more information about the QNX software on your system. 29317 Patch ID 205
We've fixed some inconsistencies and oddities in how io-blk.so handles the blk automount= option in some unusual cases. 29351 Patch ID 245
Promiscuous and multicast support for the devn-pcnet.so driver is controlled via command-line options rather than by devctl() due to observed NIC-reset problems when the modes are switched in the hardware. 29378 Patch ID 153
We now install zip and unzip on Windows and Solaris hosts; they're already included on QNX Neutrino and Linux hosts. 29419 Patch ID 228
We've corrected fontsleuth so that local exploitation of a format string vulnerability no longer allows attackers to gain root privileges. 29447 (iDefense Security Advisory 02.07.06) Patch ID 232
We've corrected libph so that local exploitation of a stack-based buffer overflow vulnerability no longer allows local attackers to gain root privileges. 29448 (iDefense Security Advisory 02.07.06) Patch ID 232
su and passwd no longer allow a buffer overrun to occur. 29454 Patch ID 270
Issuing a umount /dev/io-net/en1 no longer causes io-net to crash with devn-rtl.so. 29470 Patch ID 153
You can now start a second instance of io-net using the devn-rtl.so driver. 29488 Patch ID 153
nicinfo now reports the correct speed and duplex setting when they're specified for the devn-rtl.so driver. 29489 Patch ID 153
USB client drivers are no longer notified of HUB insertions when the client driver is first started. 29527 Patch ID 189
devb-umass now correctly detects a Y-E Data floppy drive. 29552 Patch ID 189
The devu-ehci.so driver no longer has an endian bug when aborting endpoints. 29553 Patch ID 189
The devu-ohci.so driver now works on platforms that have PCI bus master translation. 29556 Patch ID 189
The devu-ohci.so driver no longer has an endian bug that caused io-usb to crash on big-endian platforms. 29558 Patch ID 189
Starting a devb-umass driver no longer causes other drivers' URBs for nonmass-storage devices to be aborted. 29562 Patch ID 189
If a driver attempts to attach to a device that's already controlled by another driver (i.e. usbd_attach() returns EBUSY), io-usb no longer aborts the endpoints for that device after the attach fails. 29562 Patch ID 189
Bad directory contents no longer cause fs-cd.so to run READY. 29577 Patch ID 245
devb-umass now handles devices that return invalid sense data (NO_MEDIA). 29600 Patch ID 189
We now install certain Photon binaries and header files on Windows hosts. 29640 Patch ID 209
devu-ohci no longer runs out of Endpoint Descriptors. 29661 Patch ID 189
The devn-rtl.so driver no longer loses packets during a receive on PPCBE targets. 29680 Patch ID 153
devn-rtl.so now scans and automatically detects Dlink DFE-528Tx Rev E1 with vendor ID 0x1186 and device ID 0x1300, with NIC labeled DL10038D. 29729 Patch ID 153
io-usb no longer aborts endpoints for devices on bus 0 for devices attached to other USB buses. 29747 Patch ID 189
We changed enum-pnpbios so that it works properly on systems that have a partial PNP BIOS. 29768 Patch ID 278
Calling usbd_reset_pipe() to clear a stalled bulk endpoint no longer makes the driver run out of EDs. 29773 Patch ID 189
devu-uhci.so now correctly aborts a timed-out control transfer, so it doesn't make the system lock up. 29883 Patch ID 189
io-usb with UHCI/EHCI chipsets no longer misses port changes when client drivers call usbd_reset_device(). 29884 Patch ID 189
io-usb with a UHCI or EHCI chipset no longer misses port changes when the client drivers call usbd_reset_device(). 29884 Patch ID 189
qnxactivate now lets you add new license keys. 30028 Patch ID 282
The EHCI controller no longer halts on big-endian platforms with PCI bus mastering translation. 30029 Patch ID 189
The devu-uhci.so driver now works on platforms that have PCI bus master translation. 30033 Patch ID 189
io-usb no longer crashes with a SIGSEGV when transactions time out. 30054 Patch ID 189
Network drivers are no longer mounted before io-net has fully started. This was a problem mainly on multicore systems. 38185 Patch ID 278
fs-cifs now supports more modern dialects. This improves compatibility with later Windows OS releases. 38233 Patch ID 234
We now correctly install the 3.3.5 versions of the ARMLE, ARMBE, and SHLE gcc C++ libraries on Windows hosts. 38243 Patch ID 238
npm-qnet-l4_lite.so now supports a vtag=tag_number option that causes Qnet to insert a 4-byte vlan tag into the packet. 38260 Patch ID 234
We've add a new Qnet IOMSG, _NETMGR_QOS_FLUSH. This message lets an application force a retransmission instead of waiting for Qnet to activate its own timeout. 38260 Patch ID 234
On machines running the QNX Neutrino Core OS 6.3.2, if a screensaver is configured to require a password and Cancel is pressed at the screensaver's password prompt, the screensaver no longer exits. 38266 Patch ID 241
npm-qnet-l4_lite.so now loads the resolver file at the proper time in its initialization. 38267 Patch ID 234
fs-qnx4.so no longer crashes when it zero-fills preallocated blocks and the write() operation to the end of file is interrupted by a signal in some cases. 38414 (Ticket ID 72461) Patch ID 245
We've installed new versions of the sys/platform.h and sys/target_nto.h header files that define some macros that we use to determine the version ID of the source code used in the executables on the system. 38433 Patch ID 373
nfsd no longer faults if it accesses a directory pathname that's longer than 256 characters to service a NFS version 2 request. 38441 Patch ID 234
When unlinking Unix Domain Name pathnames, and binding new pathnames, the npm-tcpip-v4.so stack no longer maintains a reference to freed memory. 38470 Patch ID 234
fs-cifs now implements the file access modes O_APPEND and O_TRUNC correctly. It formerly could potentially result in file corruption. 38567 Patch ID 234
When using fs-cifs, pread() no causes the file pointer to be changed. 38575 Patch ID 234
fs-ext2.so now enforces the maximum length of a symbolic link to be the value specified by SYMLINK_MAX. 38601 Patch ID 245
The -c option to qnx_cp now works correctly on Solaris hosts. 38615 Patch ID 251
fs-ext2.so no longer doubly frees groups' descriptors following an EBADFSYS mount failure. 38632 Patch ID 245
When deleting a directory, fs-nfs2 and fs-nfs3 now use only a directory operation. 38671, 38672 Patch ID 234
npm-qnet-l4_lite.so no longer potentially leaks a small amount of memory during name resolution if a network error occurs. 38674, 28814, 25949 Patch ID 234
qnxactivate's Manual Activation dialog now has a button that you can use to save the prompt key in a file, and another to load the response key from a file. This eliminates the need to retype the keys, which can be error-prone. 38690 Patch ID 282
nfsd allows you to access files only up to 16 subdirectory levels deep within the directory exported in the /etc/exports file. It now returns an error of NFS_ENAMETOOLONG to the client instead of faulting. 38838 Patch ID 234
qnxactivate now uses a clearer font that should be easier to read. 38842 Patch ID 282
We've removed a blanket condition for enumerating PCI serial devices, so that we don't start devc-ser8250 for all of them. The new enumeration is based entirely on the vendor and device IDs, so the correct driver is started for the specific card. 38968 Patch ID 278
The IDE's System Builder now finds the components installed in the prebuilt directory for Board Support Packages. 39121 Patch ID 277
npm-qnet-l4_lite.so now has an enforce_crc option that makes it accept only packets with a valid CRC. 39171 Patch ID 234
We've improved the way that you install and boot a self-hosted QNX Neutrino system. The improvements include support for USB keyboards and mice, and the ability to update the drivers on your system. 39555 Patch ID 291
If fs-cifs failed to authenticate with the server using an encrypted password, it would then attempt to authenticate with the server using an older method while sending the password unencrypted. This behavior has been changed to only send the password encrypted, unless you specify the option -o plainpwd. You might need the -o plainpwd option when mounting shares on older versions of Windows. 39865 Patch ID 234
The enumerator now detects the Intel 82562 network interface on the XTX conga-XEVAL baseboard with the conga-X945 processor board. 39895 Patch ID 278
We added support for the x86 NX (no-execute) page table bit. On processors that support it (AMD64, IA-32e), mmap()'d memory no longer lets you execute instructions in that memory unless you've specified the PROT_EXEC permission flag. If not specified, a SIGSEGV occurs. 40162 Patch ID 311
pci-bios runs on the Intel Wallowa board. 40373 Patch ID 311
pci-bios now correctly enumerates all PCI buses, and it leaves the bus numbering as configured by the BIOS. 40583 Patch ID 326
The pci utility wouldn't display base address registers if they contained an address of zero, so we've changed the utility to check the size of the register, rather than the address. 40613 Patch ID 326
pci-bios now correctly enumerates the buses on the Intel Marble Canyon board. 40795 Patch ID 326
pci-bios now correctly detects all devices on the Acer Travelmate 8100. 40974 Patch ID 326
The PCI server now does some additional checks on the class code and header type because some boards misreport their bridge type. 41331 Patch ID 326
The pci-bios server no longer loops on a CardBus device on bus 0. 41665 Patch ID 388

Documentation fixes

Change Ref # Fixed in
The documentation for sin now includes more details about the output of the command. 7358 6.3.0 SP2
The procnto docs now list all supported SMP platforms. 9879 6.3.0 SP1
The documentation for cvs now mentions that CVS requires the HOME environment variable be defined. 10101 6.3.0
The did option for devb-ncr8 is now documented. 12152 6.3.0 SP1
devc-ser8250 is a priority-float server, so it matches the priority of its highest send-blocked client. 12170 6.3.0 SP2
Valid characters for a hostname are now documented. 12176 6.3.0 SP1
We've updated the Photon in Embedded Systems appendix in the Photon Programmer's Guide. 12451 6.3.0
The munlockall() function is implemented, but currently does nothing. 13048 6.3.0 SP2
The documentation for the Renesas SystemH BSP now advises you to avoid using initialized global variables in the IPL; use automatic variables instead and pass them by value or reference. 13059 6.3.0
The times() function returns the elapsed real time, in clock ticks, of kernel uptime. 14240 6.3.0 SP2
The documentation for calloc(), free(), malloc(), and realloc() now tell you to include <stdlib.h>. 14268 6.3.0
The ERESTART note in the MsgError() docs have been clarified. 14298 6.3.0 SP1
We've updated the entry for the usbd_hcd_info_t structure in the USB DDK documentation to include some new members. 14380 6.3.0
The documentation in the IDE's help system and in the Photon helpviewer (/usr/help/product) are now in sync. 14479 6.3.0
The documentation for tar now explains that this is a GNU utility and is incompatible with POSIX. 14590 6.3.0
We've corrected many errors in Sandpoint BSP documentation. 14792 6.3.0
We've added a technical note on choosing the correct MTD routine for flash filesystems. 14884 6.3.0
The description of sigwaitinfo() has been improved in the Neutrino Library Reference. 14892 6.3.0 SP1
The documentation for sem_open() now explains that if the message-queue server isn't running, the function sets errno to ENOENT. 14911 6.3.0
ApGetImageRes() returns a pointer into the widget database; don't close the database while still using the image. If you must close the widget database, create a copy of the image (see the Photon Library Reference). 14927 6.3.0 SP2
The startup-* entries in the Utilities Reference now include the -j and -r options. 15019 6.3.0 SP2
The documentation for strrchr() now says that this function returns a const char*. 15034 6.3.0
The MsgReply*() docs now indicate that the status argument to shouldn't be a negative number. 15074 6.3.0 SP1
The snd_ctl_mixer_*() functions are now documented. 15196 6.3.0 SP1
The documentation for inputtrap now says that it prints out the devi-hirun command line only if you specify the query option. 15198 6.3.0
The procmgr_daemon() docs now indicate that the parent process' SIGCHLD siginfo_t information isn't useful. 15228 6.3.0 SP1
The font name in the PfDynamicLoad() example has been corrected. 15247 6.3.0 SP1
The entries for kernel calls in the Neutrino Library Reference now refer to the covering POSIX function. 15282 6.3.0 SP2
The documentation for getdomainname() now states that it can return a truncated name. 15333 6.3.0 SP1
The documentation for devn-pcnet.so now lists the valid values for “receive” and “transmit.” 15400 6.3.0
We've corrected some minor errors in the documentation for the Big Sur and Aspen BSPs. 15438 6.3.0
We clarified the documentation for the iofunc_*_default() functions. 15466 6.3.0 SP1
We've corrected a DMON command in the Camelot/Biscayne BSP documentation. 15529 6.3.0
SHMCTL_LAZYWRITE is now documented. 15549 6.3.0 SP1
dumpefs is now documented. 15794 6.3.0 SP1
The FSF copyright for tic, infocmp, and clear has been added to the documentation. 15988 6.3.0 SP1
The documentation for devf-generic no longer wrongly claims that the driver works only on 16-bit devices. 15995 6.3.0
The timeslice for round-robin scheduling (SCHED_RR) is now documented as 4 times the clock period. 16028 6.3.0 SP1
The examples in the entry for pthread_sleepon_timedwait() in the Neutrino Library Reference have been corrected. 16031 6.3.0 SP2
We've removed references to the obsolete meminfo section from the startup* documentation. 16091 6.3.0
The documentation for the Renesas SystemH-ASB BSP now explains how to start devu-ohci-amanda 16266 6.3.0
The mq_notify() docs no longer suggest using SIGEV_INTR as a notification type. 16298 6.3.0 SP1
If you're copying to removable media, such as a floppy or removable disk, and the media becomes full, cp tells you that it ran out of space, and then exits. The documentation has been corrected. 16358 (Ticket ID 62581) 6.3.0 SP2
The summary in the sysctl utility's documentation has been updated. 16366 6.3.0 SP1
The Returns section in the docs for freeifaddrs() has been corrected. 16396, 20446 6.3.0 SP1
The shutdown docs have been clarified. 16517 (Ticket ID 62743) 6.3.0 SP1
The Utilities Reference now includes entries for the devg-rotate90.so and devg-rotate270.so rotation drivers. The entry for io-graphics now includes the -T option. 16683 6.3.0
The IDE User's Guide now documents problems associated with multiple developers using the System Profiler perspective on a shared target system. 16697 6.3.0 SP1
We've added the -h and -H options to the documentation for devc-sersci. 16835 6.3.0
The documentation for pppd now explains why a signal sent to it can terminate the parent process. 16848 6.3.0 SP1
We've corrected the documentation for nanospin_ns() and nanospin(); these functions return an error code instead of setting errno. 16849 6.3.0
The documentation for devu-ohci.so, devu-uhci.so, and devu-ehci.so now includes all the options. 16924 6.3.0
The documentation for devn-fd.so now says that it doesn't support multicast addresses. 17015 6.3.0
We clarified the documentation for pthread_spin_lock(). 17090 6.3.0 SP1
We've corrected the type of the info argument to layer_query() in the Graphics DDK documentation and added a description of the disp_layer_query_t structure. 17115 6.3.0
The Utilities Reference now includes an entry for devg-i830.so. 17209 6.3.0
The documentation for devi-microtouch now includes the usbtouch option. 17257 6.3.0
We corrected the name of the board in the Walnut BSP documentation. 17282 6.3.0
The docs for mallopt() now describe the MALLOC_FILLAREA, MALLOC_CKCHAIN, and MALLOC_VERIFY options. 17434 6.3.0 SP1
The gcov, gprof, and mksbp utilities are now documented. 17542 6.3.0 SP1
The documentation for setenv() now has a caveat that suggests using putenv() to avoid a memory leak. 17628 6.3.0 SP1
The documentation for pthread_getspecific() and pthread_setspecific() now states that you must call these functions with a key that you got from pthread_key_create(). You can't use a key after destroying it with pthread_key_delete(). 17644 6.3.0
The description of the regmatch_t structure is now correct in the documentation for regexec(). 17704 6.3.0 SP1
We've added an entry for devn-dm9102.so to the Utilities Reference. 17705 6.3.0
The documentation for mknod() now correctly says to set the mode argument to S_IFIFO to create a FIFO. 17807 6.3.0
The -c option for io-net and the cache= option for the full TCP/IP stack (npm-tcpip.so) are now documented. 17814 6.3.0 SP1
The documentation for io-blk has more information about the effect of setting the commit option. 17857 (Ticket ID 64005) 6.3.0
The documentation for io-blk now has more information about the different levels of the commit option. 17857 (Ticket ID 64005) 6.3.0 SP1
The documentation for mkifs now includes the -n option. 17869 6.3.0
The documentation for dumper now includes the -s and -w options. 17927 6.3.0 SP1
The documentation for the spawn*() functions has been updated to indicate that the child process can examine the environment passed to it, not its parent's environment. 17932 6.3.0 SP1
The documentation for spawn() and spawnp() now includes descriptions for the SPAWN_EXEC and SPAWN_NOZOMBIE bits in inherit.flags. 17933 6.3.0 SP1
The Utilities Reference now has entries for mmplay and qnxplayer. 17969, 17970 6.3.0
The examples in the “Handling Interrupts” section in the Writing a Resource Manager chapter of the Neutrino Programmer's Guide now use the dispatch callouts instead of the resmgr ones. 18151 6.3.0 SP1
The documentation for devu-prn now gives the correct default device name (/dev/usbpar0). 18208 6.3.0
The options for shutdown have been updated. 18228 6.3.0 SP1
The Neutrino User's Guide now mentions that NCFTP is third-party software. 18238 6.3.0
Building Embedded Systems now describes the ppc405_set_clock_freqs() function. 18254 6.3.0
The documentation for SchedGet() and SchedSet() now describe SCHED_ADJTOHEAD and SCHED_ADJTOTAIL. 18421 6.3.0 SP1
The entry for ado_pcm_cap_t in the Audio DDK documentation now describes the max_frag member. 18590 6.3.0
The documentation for pause() now says that it suspends the calling thread, not the process. 18625 6.3.0 SP1
The documentation for ApCreateWidget() now warns you not to close the database until you're done with the image (if it contains image resources). 18663 6.3.0
The shm_ctl_special() function, which you can use to set process-specific flags for a shared memory object, is now documented. 18667 6.3.0 SP1
The documentation for phrelay in the Utilities Reference now includes information about limits on the draw buffer. 18670 6.3.0 SP2
The documentation for devc-sersci now describes the sh7760scif# serial port. 18803 6.3.0
The description of the SELECT_FLAG_SRVEXCEPT flag has been corrected in the entry for select_attach() in the Neutrino Library Reference. 18867 6.3.0 SP2
The description of Interrupt Service Routines in the Neutrino Programmer's Guide has been clarified. It now mentions that the kernel implements an ISR if you use InterruptAttachEvent(). 18887 6.3.0 SP1
Formatting errors in the sample code have been fixed in the Writing a Resource Manager chapter of the Neutrino Programmer's Guide. 19178 6.3.0 SP1
We've corrected the example for PhAppAddInput() in the Photon Library Reference. 19217 (Ticket ID 64955) 6.3.0
There's now an entry for bindres in the Utilities Reference. 19237 6.3.0 SP2
The documentation now includes a guide to help you port applications from QNX Neutrino 6.2.1 to 6.3. 19385 6.3.0
The instructions in the IP Tunneling (Generic Routing Encapsulation) technote for creating GRE interfaces have been updated. 19400 6.3.0 SP1
The documentation for the Dinkum libraries now appears in the IDE's help system. 19411, 19807 6.3.0
The entries for PfFractionalExtentText(), PfExtentText(), PfExtent(), and PfExtentCx() in the Photon Library Reference now explain how the functions determine the height of the text. 19417 6.3.0
If you're using widgets in a Photon application, you don't need to call PgSetFillColor() or PgSetStrokeColor(). 19444 6.3.0 SP2
The Utilities Reference now includes an entry for devi-tahoe. 19513 6.3.0 SP2
The changes (except for the language selection) that you make with phlocale go into effect when you click on the Apply or OK button. Any language change takes effect the next time you log into the system. 19550 6.3.0 SP2
The entry for ClockCycles() in the Neutrino Library Reference now includes a warning about wrapping the cycle counter. 19573 6.3.0 SP2
The documentation for ConnectFlags() now describes what an errno value of EBADF means. 19576 6.3.0 SP1
Serial debugging via pdebug doesn't work in some versions of Linux, including Red Hat 8 and 9. Red Hat and Suse (and probably most of the distros) run mgetty on the available serial ports by default, probably to facilitate modems and serial terminals. The IDE User's Guide now says to stop mgetty to make serial debugging work. 19718 6.3.0 SP2
All subtypes of the Ph_EV_BOUNDARY event are now described in the documentation for PhEvent_t in the Photon Library Reference. 19781 6.3.0 SP1
The documentation for PdCreateOffscreenContext() now explains that you can set the flags to 0. 19791 6.3.0
In the IDE help system on Linux hosts, the banners in the documentation now appear in the correct positions. 19817 6.3.0 SP1
The documentation for PtNumericFloat and PtNumericInteger now states that the Pt_CB_NUMERIC_CHANGED callbacks are invoked if you've set Pt_CALLBACKS_ACTIVE for the widget and you then use PtSetResource() or PtSetResources() to change the widget's value. 19824 6.3.0
The entries for setconf and getconf in the Utilities Reference now list the variables that you can set and get. 19848 6.3.0 SP1
The example in the documentation for getsubopt() now compiles cleanly. 19849 6.3.0 SP1
The documentation for dhcp.client describes the RELAYAGENT, SERVERNAME, DOMAIN, SIADDR, and SERVER environment variables. 19861 6.3.0 SP1
PtImageArea is now documented in the Photon Widget Reference. 19961 6.3.0 SP1
We don't provide a Printer DDK, so we've removed the documentation for it. 19968 6.3.0
The information from the Global Name Service technote has been incorporated in the entry for gns in the Utilities Reference. 19984 6.3.0 SP1
The names of the members of the PgHWCaps_t structure have been corrected in the entry for PgGetGraphicsHWCaps() in the Photon Library Reference. 20068 6.3.0
The Pt_LIST_INACTIVE flag no longer exists. 20083 6.3.0
We've updated the description of PhKeyEvent_t in the Photon Library Reference. 20170 6.3.0
Pt_BASIC_PREVENT_FILL is now described in the entry for PtBasic in the Photon Widget Reference. 20171 6.3.0 SP1
The entry for PhEvent_t in the Photon Library Reference now includes the Ph_OFFSCREEN_INVALID event subtype of Ph_EV_INFO. 20172 6.3.0
The QNX 4 to QNX Neutrino Migration Guide now says that gns supports global names. 20178 6.3.0 SP1
We corrected an example of PdReleaseDirectContext() in the Raw Drawing and Animation chapter of the Photon Programmer's Guide. 20193 6.3.0
cbinfo->event is NULL for the Pt_CB_APP_EXIT and Pt_CB_APP_WCLASS_CREATED callbacks; the entry for PtAppSetResources() has been corrected in the Photon Library Reference. 20201 6.3.0 SP1
We've documented the new Photon clipboard API: PhClipboardWrite(), PhClipboardRead(), PhClipboardCopyString(), and PhClipboardPasteString(). 20230 6.3.0
We've added a section on using custom TrueType fonts in PhAB for Windows in the Using PhAB under Microsoft Windows appendix of the Photon Programmer's Guide. 20232 6.3.0
PtTerminal and pterm now let you paste more than 64 KB from the clipboard; we've updated the documentation. 20258 6.3.0
The name_attach() example in the Neutrino Library Reference has been corrected. 20285 6.3.0 SP1
PtFlash supports Flash 4, not 5. We've corrected the documentation. 20377 6.3.0
With FFS3, the flash drivers no longer have a .cmp mountpoint; the documentation for the devf-* drivers has been updated. 20413 6.3.0 SP1
PtInvokeCallbackType() is now documented in Building Custom Widgets. 20486 6.3.0 SP1
The Photon in Embedded Systems appendix in the Photon Programmer's Guide now includes more information about Photon font-system binaries and how to reduce the number of binaries for font rendering. 20510 6.3.0 SP1
The example for pthread_cond_timedwait() has been corrected in the Neutrino Library Reference. 20532 6.3.0 SP2
The maximum size for one-part message-pass via MsgSend(), MsgSendnc(), MsgReply(), or MsgReceive() is 232 - 1 (SSIZE_MAX). 20553 6.3.0 SP2
The entry for qnxgl_buffers_create() in the Photon Library Reference includes more details about qnxgl_attrib_set_force_hw() and qnxgl_attrib_set_hint_fullscreen(). 20585 6.3.0 SP2
The class-creation example for PtComboBox in the Anatomy of a Widget chapter of the Building Custom Widgets guide has been updated. 20591 6.3.0 SP1
flock() isn't a standard Unix function; its entry in the Neutrino Library Reference has been updated. 20648 6.3.0 SP2
The dhcp.client command has new features: -T and the /etc/dhcp/dhcp-options file. 20650 6.3.0 SP1
The cl-installer utility has been deprecated; use qnxinstall instead. 20681 6.3.0 SP1
qnxinstall doesn't exist on Windows hosts; the documentation has been corrected. 20681 6.3.0 SP2
The Using the Photon microGUI chapter of the Neutrino User's Guide now describes how to permanently remove the shelf. 20710 6.3.0 SP1
The IDE User's Guide now explains what to do if you get an “IPL file does not exist” message while building an OS image. 20718 6.3.0 SP1
The documentation for npm-tcpip-v6.so now describes the pfil_ipsec option. 20793 6.3.0 SP1
The description of Pg_IMAGE_DIRECT_8888 image format is clearer in the documentation for PhImage_t in the Photon Library Reference. 20820 6.3.0 SP1
The documentation for spawn() now mentions that a child process inherits the effective user ID of its parent process. 20873 6.3.0 SP1
The entry for name_attach() in the Neutrino Library Reference now says that the gns must be running before you can call name_attach(). 20890 6.3.0 SP2
The documentation for devn-ne2000 now includes the did, pci, and vid options. 20914 6.3.0 SP2
The descriptions of the arguments to rename() have been improved. 20929 6.3.0 SP2
The instructions in “Custom widget development and PhAB” and “Photon Hook DLLs” in the Using PhAB Under Microsoft Windows appendix of the Photon Programmer's Guide have been corrected. 20948 6.3.0 SP2
The Neutrino User's Guide now states that IP Filter is in the Extended Networking TDK, not the third-party repository; some instructions have been updated. 21019 6.3.0 SP1
The documentation for the Pt_CB_WEB_SSL_CERTNONTRUSTED callback of the PtWebClient widget refers to the PtWebClient2SSLResponse_t structure instead of to PtWebClientSSLResponse_t. The response codes for this callback have also been corrected. 21027 6.3.0 SP1
From within the IDE, you can attach the Application Profiler to a program that's already executing on your target. 21051 6.3.0 SP1
The indexes that AlGetEntry() returns for list items in translation files start at 0, not 1. We corrected the documentation for this function in the Photon Library Reference. 21060 6.3.0 SP1
The sin reg docs have been updated to list the registers that are currently displayed. 21065 6.3.0 SP1
The description and examples of inputtrap have been corrected in the Utilities Reference. 21072 6.3.0 SP2
The entry for PtAppAddInput() in the Photon Library Reference now describes the size argument to an input procedure. 21100 6.3.0 SP2
.bld files and their handling (e.g. the IDE's System Builder, mksbp) are now documented. 21143 6.3.0 SP1
The documentation for io-net now states that the /dev/io-net directory doesn't appear until a driver or protocol module adds an entry to it. 21145 6.3.0 SP1
The return values for pthread_mutex_lock() have been corrected in the Neutrino Library Reference. 21146 6.3.0 SP2
The IDE's System Builder now correctly handles paths that contain spaces. 21206 6.3.0 SP1
The Code Coverage tab for the IDE's launch configuration now includes an Enable GCC3 Coverage metrics collection check box. 21209 6.3.0 SP1
The RSRCDBMGR_FLAG_NOREMOVE flag for rsrcdbmgr_create() is now documented. 21245 6.3.0 SP1
When creating a compound widget, you should set Pt_ARG_DATA before setting the Pt_PROCREATED flag; the example of the Defaults method for compound widgets has been corrected in the Anatomy of a Widget chapter of Building Custom Widgets. 21265 6.3.0 SP1
The documentation for npm-qnet-l4_lite.so now recommends that you use this module with its default settings. 21298 6.3.0 SP1
The error codes for resmgr_unbind() have been corrected in the Neutrino Library Reference. 21314 6.3.0 SP2
The Conventions for Makefiles and Directories appendix of the Neutrino Programmer's Guide now describes the LIBPREF_*, LIBPOST_*, OBJPREF_*, and OBJPOST_* macros. 21337 6.3.0 SP2
The docs now explain why nanospin_ns_to_count() can return EINTR. 21341 6.3.0 SP1
There are now entries for zip and unzip in the Utilities Reference. 21501 6.3.0 SP1
The shm_ctl_special() function is now documented. 21565 6.3.0 SP1
The System Design Considerations appendix of Building Embedded Systems now has more information about Non-Maskable Interrupts (NMIs). 21610 6.3.0 SP2
The entries for PpLoadDefaultPrinter() and PpLoadPrinter() in the Photon Library Reference now state the correct location ($HOME/.ph/printers/default) of the default printer settings. 21658 6.3.0 SP2
PhAB no longer generates ABW_LIcon and ABW_SIcon manifests for application icons. We updated the Photon Programmer's Guide. 21754 6.3.0 SP1
Some images were missing from the IDE User's Guide; they now appear. 21779 6.3.0 SP1
The _cmdname() function returns a pointer to the pathname used to load the process, or NULL if an error occurred. 21809 6.3.0 SP2
We added documentation for mq, the server for message queues that use asynchronous messages. We made related updates to the following: the documentation for procnto (it now manages named semaphores, which mqueue used to do) in the Utilities Reference; the mq_* functions, sem_close(), sem_open(), and sem_unlink() in the Neutrino Library Reference; QNX Neutrino Microkernel chapter of the System Architecture guide; Transparent Distributed Processing Using Qnet and Writing a Resource Manager chapters of the Neutrino Programmer's Guide; Working with Files, Controlling How Neutrino Starts, and Understanding System Limits chapters of the Neutrino User's Guide. 21823 6.3.0 SP2
The entry for phlogin in the Utilities Reference now describes a race condition that can occur if you use the -U option. 21874 (Ticket ID 66831) 6.3.0 SP2
Updated the information about the number of search hits in the Analyzing Your System with Kernel Tracing chapter of the IDE User's Guide. 21922 6.3.0 SP1
The documentation for IDE's System Profiler no longer says that hovering works only on childless elements (i.e. interrupts and threads). 21925 6.3.0 SP1
The IDE Concepts chapter of the IDE User's Guide has a new section, “Starting the IDE after an update.” 21934, 22970 6.3.0 SP2
The IDE Concepts chapter of the IDE User's Guide has been updated. 21935 6.3.0 SP1
The Developing C/C++ Programs chapter of the IDE User's Guide has been updated. 21942 6.3.0 SP1
The Preparing Your Target chapter of the IDE User's Guide has been updated. 21950 6.3.0 SP1
The Finding Memory Errors chapter of the IDE User's Guide has been updated. 21955 6.3.0 SP1
The Common Wizards Reference chapter of the IDE User's Guide has been updated. 21959 6.3.0 SP1
The Managing Source Code chapter of the IDE User's Guide has been updated. 21963 6.3.0 SP1
The Debugging Programs chapter of the IDE User's Guide has been updated. 21974 6.3.0 SP1
The Getting System Information chapter of the IDE User's Guide has been updated. 21980 6.3.0 SP1
The tutorials in the IDE User's Guide have been updated. 21983 6.3.0 SP1
The Profiling an Application chapter of the IDE User's Guide has been updated. 21987 6.3.0 SP1
A snapshot in the Migrating to the 6.3 Release appendix of the IDE User's Guide has been updated. 21988 6.3.0 SP1
The Using Code Coverage chapter of the IDE User's Guide has been updated. 22019 6.3.0 SP1
The documentation for the IDE's System Information view now explains which session IDs are used for application and server processes. 22025 6.3.0 SP1
The snapshots of cpim have been updated. 22032 6.3.0 SP2
The Building OS and Flash Images chapter of the IDE User's Guide has been updated. 22040 6.3.0 SP2
The Working With Files chapter of the Neutrino User's Guide now describes the socket file type. 22041 6.3.0 SP2
The instructions for defining a template have been updated in the Photon Programmer's Guide. 22049, 22071 6.3.0 SP2
The Test button for a PhAB module is no longer at the right end of the module's title bar; the Photon Programmer's Guide has been updated. 22061 6.3.0 SP2
The snapshot of the File menu has been updated in the tutorials in the Photon Programmer's Guide. 22066 6.3.0 SP2
The entries for ar, gcc, gcov, gdb, gprof, ld, nm, objcopy, objdump, size, strings, and strip in the Utilities Reference now include all target-specific variants (e.g. ntoarm-ar, ntox86-ar). 22135 6.3.0 SP2
The titles in the online documentation for cpim have been corrected. 22204 6.3.0 SP2
The entries for npm-qnet-l4_lite.so, npm-tcpip-v4.so, and npm-tcpip-v6.so in the Utilities Reference now state that you can't unmount these io-net modules. 22231 6.3.0 SP2
The description of daemon() in the Neutrino Library Reference has been improved. 22244 6.3.0 SP2
The description of the ioflag member of the _io_connect structure has been corrected in the Neutrino Library Reference. 22298 6.3.0 SP2
devu-kbd-amanda and devu-mouse-amanda have been removed from the documentation. 22326 6.3.0 SP2
The resource types for PtScrollArea have been corrected. 22420 6.3.0 SP2
The “Downloading via a serial link” section in the Building OS and Flash Images chapter of the IDE User's Guide now lists the control sequences that you can use in the Terminal view. 22430, 22929 6.3.0 SP2
The DDK documentation now includes a link to the general “Managing source code” section of the IDE User's Guide. 22443 6.3.0 SP2
The DDK documentation now says that you need to run bash on Windows before running . ./setenv when you're building the drivers. 22444 6.3.0 SP2
The entries for the devg-* drivers in the Utilities Reference now describe the mode_opts option. 22499 6.3.0 SP2
The Utilities Reference now has entries for devu-kbd and devu-mouse. 22528 6.3.0 SP2
The value of PHOTON_PATH has been corrected in the Photon in Embedded Systems appendix of the Photon Programmer's Guide. 22529 6.3.0 SP1
The Utilities References now has an entry for mkxfs that redirects you to the entries for mkefs, mketfs, and mkifs. 22561 6.3.0 SP2
We removed some undefined weak symbols from libgcc.a for gcc 2.95.3 that were being set to 0, causing a SIGSEGV when they were called. 22666 (Ticket ID 67274) 6.3.0 SP2
The description for the -o option to ipfstat has been corrected in the Utilities Reference. 22675 6.3.0 SP2
The Application Profiling chapter of the IDE User's Guide now says that you need to run as root to collect full profiling information. 22692 6.3.0 SP2
The documentation for pci_find_class() now refers you to <hw/pci.h> for a list of the class codes. 22742 6.3.0 SP2
The PCI_* macros are defined in <hw/pci.h>; the documentation for pci_attach_device() has been corrected. 22743 6.3.0 SP2
The entries for spawn() and spawnp() in the Neutrino Library Reference now explain how to use a node descriptor to spawn a process on a remote node. 22751 6.3.0 SP2
The example of “backup server” mode in the entry for gns in the Utilities Reference has been corrected. 22756 6.3.0 SP2
The entry for pci_attach_device() in the Neutrino Library Reference now identifies the Busnumber and Devfunc members of the pci_dev_info structure as being input/output. 22771 6.3.0 SP2
We removed some x86-specific details from the documentation for pci_map_irq() in the Neutrino Library Reference. 22789 6.3.0 SP2
The pci_irq_routing_options() function is for x86 only. 22790 6.3.0 SP2
The documentation for tftpd in the Utilities Reference now includes the -p option. 22798 6.3.0 SP2
Added a missing “from” to the caveats for pppd in the Utilities Reference. 22811 6.3.0 SP2
The entry for fdisk in the Utilities Reference now describes fdisk's interactive mode. 22829 6.3.0 SP2
The Neutrino Library Reference now includes entries for cache_fini(), cache_init(), CACHE_FLUSH(), and CACHE_INVAL(). 22845 6.3.0 SP2
The documentation for sendnto now describes the -b option for setting the baud rate. 22900 6.3.0 SP2
The entry for PtText in the Widget Reference now describes the Pt_TEXT_BLINKING_CURSOR flag. 22919 6.3.0 SP2
The IDE User's Guide now warns you that, on Solaris hosts, the serial terminal view's device menu may contain duplicate entries. 22926 6.3.0 SP2
The Developing C/C++ Programs chapter of the IDE User's Guide now explains how to use common.mk to set up an application's usage message. 23000 6.3.0 SP2
The caveats in the documentation for npm-qnet-l4_lite.so concerning the bind option have been corrected. 23018 6.3.0 SP2
The documentation for the asyncmsg_* functions now includes a link to the technote on asynchronous messaging. 23073 6.3.0 SP2
The documentation for qcc now includes more details about the -w option. 23126 6.3.0 SP2
The entry for PtFSAllItems() in the Widget Reference now says who needs to free the buffer. 23209 6.3.0 SP2
The documentation for devh-usb.so in the Utilities Reference now says that you need to run io-usb. 23231 6.3.0 SP2
We corrected the name of the LOG_FTP facility in the entry for openlog() in the Neutrino Library Reference. 23301 6.3.0 SP2
The System Architecture guide now explains why Qnet works better on physically separate networks. 23334 6.3.0 SP2
The Neutrino Programmer's Guide now explains why you can run out of interrupt events. 23335 6.3.0 SP2
There's now an entry for devn-rlan2.so in the Utilities Reference. 23558 6.3.0 SP2
In the IDE's System Profiler, when you're setting up the logging configuration for kernel event tracing for a target running 6.2.1, you must change the setting of the Trace Statistics File combobox. The default, Generate only on the target, causes an error because it isn't supported in 6.2.1. The IDE User's Guide now tells you to change the setting to Do not generate. 23589 6.3.0 SP2
pthread_join() and pthread_timedjoin() don't return EINTR; their entries in the Neutrino Library Reference have been corrected. 23594 6.3.0 SP2
The embedded shells (esh, uesh, and fesh) have two new built-in commands: emount and ewaitfor. 23627 6.3.0 SP2
The Customizing Image Startup Programs chapter of the Building Embedded Systems guide now includes more information about callouts. 23792 6.3.0 SP2
The documentation for malloc() in the Neutrino Library Reference has more information about calling malloc() with a size of 0. 23827 6.3.0 SP2
The example in the documentation for procmgr_event_notify() no longer leaks memory. 23861 6.3.0 SP2
The examples in the Writing a Resource Manager chapter of the Neutrino Programmer's Guide now properly call ThreadCtl(). Several other errors have also been corrected. 23892 6.3.0 SP2
The documentation for ham in the High Availability Toolkit Developer's Guide now describes the -d and -t options. 24023 6.3.0 SP2
You don't need to have the IPFILTER_LOG option turned on in your kernel in order for ipmon to properly work. The entry for ipmon in the Utilities Reference has been corrected. 24032 6.3.0 SP2
The entry for mprobe() in the Neutrino Library Reference now warns you that calling mprobe() on a pointer already deallocated by a call to free() or realloc() could corrupt the memory allocator's data structures and result in undefined behavior. 24044 6.3.0 SP2
The entry for mcheck() in the Neutrino Library Reference now states that a program can call mcheck() only once. 24045 6.3.0 SP2
The description of the otime argument to timer_timeout() has been corrected in the Neutrino User's Guide. 24060 6.3.0 SP2
The Neutrino User's Guide now correctly refers to UHCI instead of UCHI in the section on connecting USB hardware. 24078 6.3.0 SP2
“Version coexistence” in the IDE Concepts chapter of the IDE User's Guide now includes a section on PhAB and coexistence. 24298 6.3.0 SP2
The example of endian-ness in the Freedom from Hardware and Platform Dependencies appendix of the Neutrino Programmer's Guide has been corrected. 24355 6.3.0 SP2
The entry for netmgr_ndtostr() in the Neutrino Library Reference now includes the values that the function can set errno to. 24627 6.3.0 SP2
The documentation now correctly states that the primary QNX partition type is 79. 24806 6.3.0 SP2
The Utilities Reference now includes an entry for addr2line. 25018 6.3.0 SP2
The -vmargs option to qde is for Linux, Solaris, and Windows hosts only. 25082 6.3.0 SP2
The Migration appendix of the IDE User's Guide now suggests you enable the Clean option in your projects' properties after importing old projects into the SP2 version of the IDE. 25119 6.3.0 SP2
The usage of the %1> and %2> patterns have been corrected in the entry for usemsg in the Utilities Reference. 25178 (Ticket ID 68784) 6.3.0 SP2
The IDE User's Guide now suggests that you reset the C/C++ perspective so that the context menu displays the new launch options. 25252 6.3.0 SP2
The IDE Concepts chapter of the IDE User's Guide now explains how to specify the browser to use for the Help system on Red Hat Enterprise Linux 4. 25654 6.3.0 SP2
The IDE Concepts chapter of the IDE User's Guide now explains how to start the IDE on Solaris hosts. 25658 6.3.0 SP2
The Conventions for Makefiles and Directories appendix of the Neutrino Programmer's Guide now describes the dll variant. 25705 6.3.0 SP2
The entries for ClockTime() and clock_settime() in the Neutrino Library Reference now state that you can't set the monotonic clock. 25923 6.3.0 SP2
The IDE User's Guide and the entry for qconn in the Utilities Reference now explain how to adjust qconn's priority if it gets starved of CPU. 25991 6.3.0 SP2
The "File owenership and permissions" section in the Working with Files chapter of the Neutrino User's Guide says that if you set the sticky bit (t or T) on a binary, the OS keeps the binary in memory for “a while.” It now also explains that the exact length of time depends on what else is happening in the system. 26245 6.3.0 SP2
In the IDE's System Builder, the autobuild feature no longer disables (grays out) the context menu options to build your project. 26481 6.3.0 SP2
The Building OS and Flash Images chapter of the IDE User's Guide now describes the Filesystem Type item in the system properties for .efs images. 26495 6.3.0 SP2
The entry for devg-coral in the Utilities Reference now includes information about dual-head support. 26683 6.3.0 SP2
We've updated the Working with BSPs chapter of the Building Embedded Systems guide to describe how to work with the new simplified packaging of Board Support Packages. 38711 Patch ID 313