Developer Resources
Technical Articles

QNX Technical Articles

QNX Software Development Platform 6.5.0: Release Notes

Date of this edition: December 05, 2017

Note: Changes to these notes since July 13, 2010 are highlighted below with this icon: New:

Target OS: This development platform produces software that's compatible with targets that are running QNX® Neutrino® 6.5.0.

Host OS: You can install this package:

  • as a self-hosted QNX Neutrino development system
  • or on one of the following development hosts:
    • Microsoft Windows 7 Professional 32- and 64-bit, Vista Business 32- and 64-bit, XP Professional SP3, or 2000 SP4
    • Linux Red Hat Enterprise Linux 5.4 Desktop 32- and 64-bit, Red Hat Fedora 12, Ubuntu Workstation 9.10 32- and 64-bit, or openSUSE 11.2

You can also install the QNX Neutrino RTOS as a virtual machine on VMware Workstation 6.5 or 7.0, VMware Player 3.0, and Microsoft VirtualPC 2007. We provide a VMware image of a runtime installation of QNX Neutrino; for more information, see Using the VMware image of a QNX Neutrino runtime system,” below.

If you intend to use the QNX SDP on VMware, to ensure that VMware is supported for your host, search the compatibility guide located at http://www.vmware.com/resources/compatibility/search.php.

If you find problems with any virtualization environment, please post your findings in one of the forums on our Foundry27 community website.

  • New: In a future release of QNX SDP, mmap() will start enforcing the POSIX requirement that you specify either MAP_PRIVATE or MAP_SHARED. If you specify neither, mmap() will return MAP_FAILED and set errno to EINVAL; if you try to use the mapped-in object, you'll get a SIGSEGV.
  • If you installed an alpha version of this software, uninstall it before installing the production version.
  • If you downloaded QNX SDP 6.5.0 from our website between June 28, 2010 and July 12, 2010, please read the following:

    Build 201006230248 of 6.5.0 contained a filesystem error. If you installed that version, uninstall it, and then install build 201007091524. To determine which version you have, check the build number in the archive name or in base_dir/install/qnxsdp/6.5.0/version. On self-hosted QNX Neutrino systems, you can also use the uname -v command to get a version timestamp that identifies the build:

    Build Timestamp
    201006230248 2010/06/23-02:11:33EDT
    201007091524 2010/07/09-14:44:03EDT

  • We no longer include the IDE on self-hosted QNX Neutrino systems.
  • For information about using BSPs with QNX SDP 6.5.0, see the BSP Migration Guide in the BSPs and Drivers project on Foundry27.
  • For the most up-to-date version of these notes, go to our website, www.qnx.com, log in to your myQNX account, and then go to the Download area.


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.

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

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

What's new in QNX Neutrino 6.5.0?

The key improvements in 6.5.0 include:

  • kernel changes to support the ARM Cortex A9

    Note: You need to rebuild BSPs and QNX Aviage middleware to use the ARM Cortex A9 variant.

  • Persistent Publish/Subscribe (PPS), a simple method of disseminating information to interested processes

For more details, see the following sections:

Migrating from earlier releases

  • Binaries created with QNX Momentics 6.3 should be compatible with QNX SDP 6.4.* or 6.5.0, but note the following:
    • The same C++ ABI change between gcc 2.95.3 and 3.3.5 exists between 2.95.3 and 4.2.4. Older C++ binaries linked against libcpp.so.3 and libstc++.so.5 will still work because we are shipping those legacy C++ libraries in 6.5.0. You can't link old C++ libraries into new C++ programs.
  • The QNX Momentics Tool Suite on Windows and Linux includes version 4.5 of the IDE. For information about migrating to the latest IDE, see the Migrating from Earlier Releases appendix of the IDE User's Guide.
  • You can now get Board Support Packages from our website. For information about building BSPs from earlier releases, see the http://community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/PRE640BSP_migrationDoc on our Foundry27 community website.
  • All 6.3.x driver binaries should be compatible with 6.4.* and 6.5.0, except audio (deva-*), block I/O (devb-*), and graphics (devg-*) drivers. The audio and block I/O drivers should compile on 6.5.0 with minor code changes. The 6.5.0 graphics drivers run on top of io-display instead of on Photon.
  • You need to recompile ATAPI drivers that are BSP-specific for 6.5.0 (the driver, io-blk, and the filesystems need to be in sync).
  • Serial drivers are statically linked, so there's no issue running binaries from 6.5.0 on 6.3.x. If you want to compile a 6.5.0 serial driver on 6.3.x, you'll need the 6.5.0 versions of libio-char.a, <io-char.h>, and dcmd_chr.h.
  • 6.3.x USB drivers should be compatible with 6.5.0.

APIC-enabled devices

This release provides better support for Advanced Programmable Interrupt Controller (APIC) chipsets. Some newer systems contain APIC chipsets and may not run with the provided release package. If you are using a computer that supports APIC chipsets, you should download and install the APIC-enabled Neutrino ISO from the QNX Software Development Platform 6.5.X folder in download center located at: http://www.qnx.com/download/group.html?programid=20905

The APIC-enabled CD is known to work on x86 ICH4/5/7/8/9/10-based systems as well as VMware Workstation (6.5.4 Windows host), and Fusion (3.x). We are currently in the process of testing and providing support for additional platforms.

Note: This ISO image boots using startup-apic and pci-bios-v2 and will install a new boot image called qnxbasesmp-apic.ifs. This is the default image for normal booting.

If you've installed the SDP from the x86-only CD, or if you've installed using the APIC-enabled version of the x86-only CD from the download center and you want to target non-X86 platforms for development, you must manually install the non-x86 targets. To install the non-x86 targets:

  1. After you have installed Neutrino, you can retrieve the non-x86 packages from the download center. If you installed from the CD, but your system has a DVD drive (for example, you require APIC support), then you can insert the DVD.

    Note: Use /fs/cd0/repository as the source path below; otherwise you must manually transfer the packages from the DVD. Place the files in a location on your local file system. This is your source path.

  2. Change to /usr/qnx650.
  3. For each of the following files: qnx6-host.tarx, qnx6-target.tarx, and qnx6-target-gpl.tarx, run the following:
    qinst d /fs/cd0/repository/FN | tar -zx -f-

    where FN is a qnx6xxx.tarx file above.

What's new: Kernel

  • The kernel was updated to include performance improvements under heavy memory utilization. (Ref# 69139, 69785)
  • The kernel now reaps zombies, even if you run a foreground process that doesn't exit in your OS image's startup script. However, running a foreground process that never exits still prevents the rest of the script from being executed. (Ref# 29186, 73179)
  • If you call ClockTime() to set the time of day, the kernel now checks to see if the SYSPAGE_ENTRY(qtime)->boot_time field is zero. If it is, the kernel sets it to the appropriate value.

    There's a new -T option for all startup programs that prevents the setting of this field, so that the kernel will set it the first time you call ClockTime() to change the time of day. This is useful if the RTC hardware isn't in UTC. (Ref# 67285)

  • Since we can't individually mask the PPC decrementer on the 600 family, it's possible that overly long timer tick processing, or having interrupts disabled for a long period of time, might cause the kernel to get a nested timer tick.

    The kernel now uses a variable to tell if it's still handling a previous decrementer interrupt when a new one comes in. If this happens, the kernel just skips the processing of this interrupt.

    Note: If you use the interrupt_id_dec(), interrupt_id_dec_smp(), or interrupt_eoi_dec() callouts, you must now specify the INTR_GENFLAG_LOAD_SYSPAGE flag in the genflags field of the intrinfo_entry structure in the board-specific code.

    (Ref# 69528)

  • The kernel now supports address space randomization, and procnto has new -mr and -m~r options that enable and disable this feature. Address space randomization is off by default; if you enable it, the kernel places certain items (e.g. the stack, libc) at different addresses every time you run a process. This can help prevent someone from hacking into a program. The QNX Neutrino RTOS Safe Kernel 1.0 doesn't support address space randomization. (Ref# 76302, 76770)
  • We now support up to 32 processors in a multicore system. (Ref# 70878, 73860)

    Note: If you plan to use more than 8 CPUs on an x86 platform, you must use the 6.5 version of procnto-smp and startup-bios or startup-apic. (Ref# 75180)

  • On SMP systems, the functions that lock mutexes — such as pthread_mutex_lock(), and pthread_cond_wait() (when the thread is woken up by a pthread_cond_signal() or pthread_cond_broadcast() — no longer unblock threads in the wrong order. (Ref# 24522)
You can now set the tracing mode to fast or wide for specific events in the _NTO_TRACE_THREAD class. You can also do this for events in the _NTO_TRACE_PROCESS and _NTO_TRACE_VTHREAD classes, but there's currently no difference between the data for fast and wide mode for these classes. (Ref# 69613)
If this bit is set in the flags member of the system page's cpuinfo table, the processor supports Power ISA 2.06 External Process ID Registers, which the kernel uses to optimize the passing of messages between different address spaces.

Note: The Freescale e500mc is currently the only PPC to implement these features; it's the only processor for which you should set this flag. Setting it on other processors will have unpredictable results.

QNX Neutrino for ARMv7 Cortex A-9 Processors
You can now set up QNX Neutrino for boards that support ARMv7 Cortex A-9 processors. Although the ARMv7 generic support was included in QNX SDP 6.4.1 when the initial Cortex A-8 support was released, the CPU implementations for both Cortex A-8 and Cortex A-9 are included in the QNX SDP 6.5.0 release.

For more information, see the QNX Neutrino for ARMv7 Cortex A-8 and A-9 Processors technote in the online documentation.

Persistent Publish/Subscribe (PPS)

Persistent Publish/Subscribe (PPS) is a resource manager that takes control of part of the file namespace to make information available to interested processes:

  • A process that has the information (the publisher) opens a path in the PPS part of the namespace.
  • Processes that are interested in the information (the subscribers) sign up for it by opening the same path and waiting for updates to it. Subscribers read() the information as if it were in a file.
  • The PPS system stores the information in memory, and saves it in files to make the information persistent across reboots.

For more information, see the PPS Developer's Guide in the online documentation.

What's new: Licensing

QNX SDP 6.5.0 introduces a new licensing scheme:

  • There are several QNX Development License streams that govern how the QNX Software Development Platform can be used in different situations. The key on your license certificate will cause the appropriate license agreement to be displayed when you install QNX SDP; that development license governs your use of the product.
  • 6.5.0 doesn't accept license keys from earlier versions of QNX SDP.
  • If you have a support plan for an earlier version of QNX SDP, you can get a license key for 6.5.0 from our website; go to http://www.qnx.com, log in to your myQNX account, and click Upgrade to QNX SDP 6.5.
  • Some licensing is now for a specific user. If your license key indicates that you have a “named user” license, the activation requires that you provide an email address.

Once you've installed the QNX Software Development Platform, you can find all the license agreements in base_dir/install/qnxsdp/6.5.0, where base_dir is where you installed SDP (see the output from the qconfig command).

For more information about license agreements, see the Licensing area of http://www.qnx.com, or email .

What's new: Installing and booting

  • The installer now recommends that you use the QNX 4 filesystem if you install QNX SDP 6.5.0 directly on a USB drive. (Ref# 61707)
  • The installer for self-hosted Neutrino systems now creates an /x86 symbolic link to the / directory. (Ref# 68593)

What's new: Startup

New utilities include:

Provide support for the PCI BIOS and Message Signaled Interrupts (MSI). (Ref# 69146, 74069)
Startup for Intel Advanced Programmable Interrupt Controller (APIC) systems (Ref# 69146, 74069)

  • If you plan to use more than 8 CPUs on an x86 platform, you must use the 6.5 version of procnto-smp and startup-bios or startup-apic. (Ref# 75180)
  • If you're running startup-apic, you must use pci-bios-v2 instead of pci-bios, but it must still be called pci-bios in order for the enumerators to work correctly. In your buildfile, add pci-bios-v2 like this:

What's new: Core networking

As part of the update to BIND 9.6.1-P2 (see What's new: Security,” below), we now support:

DNSSEC Delegation Signer resource record generation tool
DNSSEC key generation tool

Other changes include the following:

  • This utility now declines addresses if they fail an ARP probe (see RFC 2131 and RFC 5227). You can use the new -A option to set the number of consecutive ARP probe tests of the assigned address that can fail before dhcp.client gives up. (Ref# 72254, 72379)
  • There's a new -R option that prevents the DHCP-supplied default route from being applied. (Ref# 74446, 74449)
The behavior of pwrite() is now consistent with that on other Neutrino filesystems. If you open a file with O_APPEND, pwrite() now writes the data at the offset supplied, instead of at the end of the file. (Ref# 38576)
io-pkt-v4, io-pkt-v4-hc, io-pkt-v6-hc
There's a new TCP/IP pkt_typed_mem option that you can use to specify a typed memory object to allocate packet buffers from. (Ref# 73666, 74355)
New: NTP clients now stay synchronized with the server. (Ref# 74509)
SSH suite
  • Issues have been found with the version of OpenSSH that ships with NetBSD 3.x, NetBSD 4.x, and NetBSD-current. The two known security issues include X11 session hijacking (CVE-2008-1483) and a bypass of the ForceCommand directive (CVE-2008-1657). We now use OpenSSH 5.2, which contains the appropriate fixes. (Ref# 62889)
  • The /var/chroot/sshd directory is now correctly owned by root:root with permissions of 0755. (Ref# 68628, 68640)
We now use OpenSSL version 0.9.8m. For more information, see http://www.openssl.org/. (Ref# 74597)
If you use pppd with a serial port, io-pkt no longer becomes reply-blocked. (Ref# 50977, 68456)

What's new: Filesystems

io-blk.so redesign

We've redesigned the buffer cache subsystem of io-blk.so, in order to improve performance. The main changes include:

  • replacing the 1:1 correspondence of device sector to cache buffer with a 4 KB “I/O clustering” scheme; this attempts to perform physical I/O in larger units, has less internal hash/management CPU overheads, and uses less memory for control structures
  • using raw 4 KB buffers, resulting in more frequent virtual and physical contiguousness (compared to the previous scheme where LRUing would tend to shuffle neighboring sector buffers), which reduces composition overheads in filesystems that support large logical blocks and scatter-gather load in the drivers
  • segmenting the cache into Most Frequently Used (MFU) and Most Recently Used (MRU) regions to balance sequential read wiping with metadata storage (the default is a 50:50 split)
  • using 64-bit statistics (to avoid 32-bit maximums and wrapping) and providing new fields; the old DCMD_FSYS_STATISTICS devctl() command is supported/emulated as best possible
  • using a time-based watermark in the “slab” allocation system aimed to reduce mmap() thrashing during bursty delwri or fsync() operations
  • adjusting the read-ahead system to allow larger limits with fewer stalls
  • support for nested sector reads, as could happen when mounting images formatted on one device are copied to another with a different sector size (previously this would result in an EDEADLK)
  • support for typed-memory pools for cache buffers (partial workaround on 4 GB systems via blk memory=sysram&below4G to give 32-bit paddrs)
  • cross-endian Qnet support

Performance gains were measured on all platforms: on desktop x86 systems, where the bottleneck was the device, the same throughput is observed but using less CPU load (e.g. 10-25%); on low-end ARM systems, where the bottleneck was OS and memory overheads, the same CPU load achieves greater filesystem throughput (e.g. 2-10 MB/s). Larger cache granularity may require more cache to be allocated at the lower-end (reduced hit density during random operations) although this is mitigated by lower control/overheads (same overall usage).

As a result of this redesign, the following options to io-blk.so are no longer supported:

  • bufsz — this is now hard-coded, with 512 bytes as the minimum device sector size, and 4096 as the maximum (i.e. bufsz=512:4096)
  • hash — now part of the cache option
  • postpone — now part of the delwri option
  • noaiod
  • protect — replaced by the mfu option
  • wipe — replaced by the mfu option

The following options are new:

  • memory
  • mfu

Other changes include:

  • You can specify a suffix of g (gigabytes) for memory arguments.
  • The default delay time for delayed writes for fixed media (delay1 for the delwri option) is now 3 seconds.
  • You can now specify the sector size for the ramdisk option; the sector size was formerly 4 KB.
  • You can now specify a hash size to use for the map and ncache options.
  • The default minimum for the ra option is the system page size; the default maximum is 64 times the system page size.
  • The rmvto option can take a value of none, which disables removable media relearning.
  • You can now specify a maximum value for the vnode option.
  • The default disk buffer cache is still 15% of system RAM, but the minimum is 512 KB, and the maximum is 512 MB. If you specify an explicit size, bounds of 512 KB and 3 GB are applied.
  • By default, io-blk.so now allocates the filesystem buffer cache (blk cache=) on affected ARM platforms from a global memory region (SHMCTL_ANON | SHMCTL_GLOBAL) to avoid the per-process 32 MB limitation. To override this and make the allocation from the normal devb-* process heap, specify blk memory=sysram.

(Ref# 69116, 69788, 72369, 74621, 75622)

Other filesystem changes

Other changes to the filesystems include:

This utility has several new options:
  • -l len — the length for which to erase or read.
  • -o offset — the offset at which to start erasing, reading, or writing.
  • -p — operate in software-update mode.
(Ref# 68671, 68705, 68911, 69178, 70467)
The fatchk option is no longer supported. (Ref# 69116, 74719)
We've changed the ignore value for the sync option to none, in order to make its meaning clearer. If you specify sync=none, the filesystem never issues a synchronization command to the disk, and doesn't drain dirty blocks from the filesystem cache (until an explicit umount). The filesystem still supports the ignore value too. (Ref# 54873, 72991)
New options include:
  • charset — specify a non-standard character set mapping for ISO 9660:1988 Primary Volumes and ISO 96660:1999 Supplementary Volumes.
  • raw (replaces vcd) — set the number of raw CDDA/CDXA 2352-byte buffers and optionally the number of blocks to read with one raw I/O operation.

The blacklist for the verify option now includes some bad ISO9660:1999 SVD-mastering utilities.

What's new: Graphics

Advanced Graphics

New features include:

There's a new -g option that lets you specify the GFI input group to attach to. (Ref# 70808, 74360)
The flags member of this structure now supports a bit called GF_DEV_FLUSHRECT_DRVR. If this bit is set, the device driver uses a flushrect callout for modifying the framebuffer before presenting it to the display. (Ref# 68743)
Get the handle of the graphics device currently targeted by a surface (Ref# 69915)

Other changes include:

gf_draw_finish(), gf_draw_flush()
Improvements have been made to these functions with respect to drivers that don't require layer_flushrect() updates. If your applications is linked statically against libgf.a, we strongly recommend that you relink your application. (Ref# 68760)

Composition Manager

After 6.5.0, the current version of QNX Composition Manager will be deprecated. A replacement subsystem tentatively called QNX Screen will be provided as part of a future SDP release.

gles1-egl-gears, gles1-kd-gears
These demos no longer support the rotation option. (Ref# 73537)

Photon microGUI

New features include:

Rotating the display
Display rotation is again available in the Photon environment. Available rotations are 90, 180, and 270 degrees. You can rotate the display by using a “phook” module (DLL) loaded by io-graphics. You can add a phook statement to the display.conf configuration file, in the appropriate driver's photon section, as follows:

where * is 90, 180, or 270.

There's a new -C command-line option for io-graphics that causes all client-side surfaces to be allocated for CPU Fast Access. This is important in a system that will use a rotation module, since access to the framebuffer is required, and without this option, access will be made over the bus, introducing serious latency.

There's also a new -L option for io-graphics that forces a PHOOK module to initialize, even if the GPU driver was written with non-linear framebuffer access.

If you're using the ph script to start Photon, you can easily apply this option before Photon is started, by overriding the PHGFX environment variable like this:

  export PHGFX="/usr/photon/bin/io-graphics -C"

To load a hook module “on the fly”, use the new PgPHookRegister() function. No surface or layer data is lost during the installation of a hook module. (Ref# 57091, 72066)

Rotate an image by 90, 180, or 270 degrees. (Ref# 37475, 69235)

Other changes include:

The Using the Photon microGUI chapter of the Neutrino User's Guide and the entry for pwmopts in the Utilities Reference now correctly refer to wframe_updated.so, instead of wframe_update.so. (Ref# 65310)
Arcs, Bézier curves, and ellipses
The plotting of these curves is more precise, resulting in smoother lines. (Ref# 58277)
There's a new -a option that enables anti-aliasing on polylines (currently only for diagonal lines of width 1). This anti-aliasing is only for CRT or LCD (video) targets, not printer targets. (Ref# 72316, 72540; Ticket ID 89891)
  • The correct Pg_LAYER_FORMAT_XXXX is now returned in the PgLayerCaps_t format member.
  • The following format types are new:
  • The new format_flags member specifies the packing or byte order of the format member; it can be 0, or one of the following:
    • Pg_LAYER_FORMAT_PKLE — 16-bit little endian packed
    • Pg_LAYER_FORMAT_PKBE — 16-bit big endian packed
    • Pg_LAYER_FORMAT_PACK — 16-bit, packing is indeterminate
    • Pg_LAYER_FORMAT_BO_BGRA — 32-bit, BGRA byte-order
    • Pg_LAYER_FORMAT_BO_ARGB — 32-bit, ARGB byte-order

(Ref# 69322, 69235)

In earlier versions of PhAB, the image-loading library converted all JPEGs to palettized image formats. All 24-bits-per-pixel images without a palette were converted to 8-bits-per-pixel images with a 256-color palette.

As of QNX SDP 6.5.0, the PhAB image library no longer converts JPEGS to palettized images. If you wish to edit a JPEG using PhAB, you must first convert it to a palettized image (such as a GIF) using an external image-editing utility. (Ref# 68393, 68427; Ticket ID 88275)

What's new: Libraries and header files

New functions include:

getpagesizes(), getpagesizes64()
Get the available page sizes (Ref# 71950, 72363)
Get the effective credentials of a UNIX-domain peer (Ref# 69495, 71214)
GLOB_QUOTE is now the default for this function, as specified by POSIX. To revert to the former behavior, specify the POSIX GLOB_NOESCAPE flag.

This function also supports the following flags, which are NetBSD extensions:


(Ref# 74975, 75625)

pthread_mutex_timedlock_monotonic(), pthread_timedjoin_monotonic(), sem_timedwait_monotonic()
These functions are similar to pthread_mutex_timedlock(), pthread_timedjoin(), and sem_timedwait(), but they use CLOCK_MONOTONIC, so the timeout isn't affected by changes to the system time. (Ref# 65150, 71587; Ticket ID 86978)
pthread_mutex_wakeup_np(), pthread_mutexattr_getwakeup_np(), pthread_mutexattr_setwakeup_np()
These functions make it possible for you to unblock threads that are waiting on a mutex. The “np” in these functions' names stands for “non-POSIX.”

In order to make it possible to do this, we've appropriated the list field of iofunc_attr_t. Since it was marked as being reserved, this should be no problem, but if you were using this for your own semantics, then you'll have to make sure that you install your own attribute-locking routines. (Ref# 48722, 71135, 71244)

Other changes include:

We've corrected various bugs in asynchronous messaging (although it remains experimental, is deprecated, and will be removed in a future release).

Note: If your application uses the .a versions of the libasyncmsg library, you must relink it, or else it will hang when used with the new kernel. If your application uses the .so versions of the library, you don't have to relink it.

This function and the callback that it registers now both have an extra argument that points to arbitrary data that you want to pass to the callback. (Ref# 52348, 69784)

Note: You'll need to update and recompile any code that calls this function.

The High Availability Manager now automatically switches to monitoring the new process that daemon() creates, if the original process was a self-attached entity. (Ref# 52131, 71920; Ticket ID 80845)
This function, which is similar to devctl() but uses I/O vectors, is now documented and supported. (Ref# 38751)
RTLD_LAZY is now implemented. For details about it, see “Lazy loading” in the Compiling and Debugging chapter of the QNX Neutrino Programmer's Guide. (Ref# 69098, 69752)
InterruptMask(), InterruptUnmask()
These functions now give an error of ESRCH if the ID parameter isn't something returned by InterruptAttach() or InterruptAttachEvent() respectively, or -1. (Ref# 67694)
ioctl(), ioctl_socket()
We've made ioctl() compatible with other UNIX-based systems by enabling support for embedded pointers. This means that you no longer have to change calls to ioctl() into calls to ioctl_socket() in networking applications, although ioctl_socket() does provide optimized handling for some socket commands.

As a result of this change, ioctl() can now indicate an error of ENOBUFS if there isn't enough memory available to copy the data that the embedded pointers refer to. (Ref# 59556, 71066)

This structure now has a tid_name entry that you can use to specify a name to use for the threads in the pool. For more information, see the entry for thread_pool_create() in the QNX Neutrino Library Reference. (Ref# 73635, 73823)

What's new: Drivers

What's new: Audio device drivers (deva-*)

The audio libraries now support:

  • voice conversion via a voice matrix (Ref# 70084)
  • sw mixer subchannel labeling (Ref# 71269)
  • Asynchronous Sample Rate Converter (Ref# 71071)

For more information, see the Audio Developer's Guide.

What's new: Block-oriented drivers (devb-*)

New drivers:

A pseudo block driver that provides a mapping between an arbitrary file descriptor and the block API, allowing any resource manager to be used to host a disk filesystem.

Other changes:

  • Because of updates to io-blk.so, the minimum disk buffer cache is now 512 KB. (Ref# 69116, 69788, 72369)
  • Many systems no longer have a floppy drive, so the device enumerator no longer starts devb-fdc by default. If your system has a floppy drive, you can start the driver manually or uncomment the devb-fdc lines in the /etc/system/enum/devices/block file. (Ref# 74383)
devb-fdc, devb-ram
Because of updates to io-blk.so, the minimum disk buffer cache is now 512 KB. (Ref# 69116, 69788, 72369)

What's new: Character drivers (devc-*)

The pseudo-tty manager can now support up to 256 ptys, using the naming scheme:
  • pty[p-zP-T][0-9a-f] for the master device
  • tty[p-zP-T][0-9a-f] for the slave device

(Ref# 73847, 75536)

What's new: Graphics drivers (devg-*)

The new drivers include:

Graphics driver for Intel GMA HD graphics (Ref# 76277, 77353)

Other changes include:

The memopts option now specifies the name of the configuration file for this driver. This file includes the options that you formerly set with the memopts option, along with a bigendian option that tells the driver that the memory is byte-swapped. (Ref# 70110, 75643)
If you use direct mode with the devg-i830.so driver, images now all appear correctly on the display. (Ref# 61008, 63977)

What's new: Human interface device drivers (devh-*)

The new drivers include:

Driver for Microtouch EXII USB touch devices (Ref# 47435, 75402)

Other changes include:

The following options are new:
  • device — specify a device ID
  • info — send information about the controller to slogger
  • noinit — don't initialize the controller

    Note: Don't use this option unless you're certain that the default protocol your controller is using is the Egalax protocol.

  • vendor — specify a vendor ID

If you're using this driver with the USB (devh-usb.so) module, you must specify the igndev option to devh-usb.so, specifying the Egalax vendor and device IDs. (Ref# 74940, 75400)

What's new: Network drivers (devn-*, devnp-*)

The new drivers include:

Driver for Broadcom BCM440x 10/100 Ethernet controllers (Ref# 72462, 76017)
Driver for Intel Tolapai 80579 Gigabit Ethernet controllers (Ref# 72206, 75462)

We've also addressed the following:

  • This driver now supports the AX88178 chip. (Ref# 70621)
  • If you use devn-asix.so with devu-uhci.so in a VMware session, and you remove the USB dongle, io-usb no longer fails with a segmentation fault. (Ref# 61765)
The documentation now points out that this driver supports only PCI versions of the Micrel 8841 (1 port) or 8842 (2 port) Ethernet controllers. (Ref# 67333)
devnp-bcm1250.so, devnp-e1000.so, devnp-mpc85xx.so, devnp-rtl8169.so, devnp-speedo.so
These drivers no longer accept the promiscuous option because promiscuous mode is controlled by the stack itself. To enable promiscuous mode, use a BIOCPROMISC ioctl() command; there's currently no way to do this from the command line. (Ref# 71463)

What's new: USB drivers (devu-*)

  • New: When you remove a USB device, an error message of the form:

    Unable to find remove id ###

    no longer appears on the console. (Ref# 61971)

What's new: Documentation

System Analysis Toolkit
We've updated and expanded the System Analysis Toolkit User's Guide. It now includes more information about events and their classes, controlling tracing via tracelogger and TraceEvent(), interpreting the trace data, and lists the data for all events in both fast and wide modes. (Ref# 25473, 29638, 29639, 38156, 44463, 68988)
QNX Neutrino Technotes
We've added the following technotes:
  • Reloadable Image Filesystems — how to quickly restore an IFS when you restart a system
  • Filesystems and Power Failures — information about maintaining hard-disk integrity during power failures (Ref# 37167)
  • Customizing language sort orders for libqdb_cldr.so — how to create custom language sort orders to use with the libqdb_cldr.so DLL

The What Time is It? technote is now part of the Tick, Tock: Understanding the Neutrino Microkernel's Concept of Time chapter of the QNX Neutrino Programmer's Guide. (Ref# 71500)

QNX Neutrino Programmer's Guide
There's now an appendix that explains how QNX Neutrino conforms to POSIX. It also includes a list of non-POSIX functions with POSIX-sounding names. (Ref# 69783)
Building Embedded Systems
The documentation now mentions that if you're creating a buildfile for a MIPS target, you need to create this symbolic link for the runtime linker:
procmgr_symlink ../../proc/boot/libc.so.3 /usr/lib/ldqnx.so.3

instead of this:

procmgr_symlink ../../proc/boot/libc.so.3 /usr/lib/ldqnx.so.2

That is, you should name the link ldqnx.so.3 instead of ldqnx.so.2. (Ref# 71087)

QNX Neutrino User's Guide
The “Video cards” section of the Connecting Hardware chapter contains updated information about configuring multiple displays and about manually configuring your video card. (Ref# 63064)
QNX Neutrino Library Reference
The changes include:
We've added some sample code that you can use to check for stale _PULSE_CODE_COIDDEATH pulses. (Ref# 18264)
We've documented the flags field of the _server_info structure.

If the info argument is NULL, ConnectServerInfo() ignores connections with dead servers and skips to the next coid. If info is non-NULL, the function fills in the _server_info structure; for connections with dead servers, it turns on the _NTO_COF_DEAD bit in the flags field of the structure. (Ref# 18264)

inbe16(), inle16(), inbe32(), inle32()
Note that these macros access the specified port more than once if endian conversion is necessary. This could be a problem on some hardware. (Ref# 73879)
This function gives an error of EBUSY when you're trying to name a thread other than the calling thread, and another program already has write access to the process's entry in the /proc filesystem. For more information, see the entry for pthread_setname_np() in the QNX Neutrino Library Reference. (Ref# 73930)
spawn(), spawnp()
We've added more details about working with the fd_count and fd_map arguments to set up the file descriptors in the child process; see “Mapping file descriptors” in the entry for spawn() in the QNX Neutrino Library Reference. (Ref# 25715, 69655)
You can use this function to shut down the system, customizing the function by providing your own callouts:
  • shutdown_classify()
  • shutdown_display()
  • shutdown_done()
  • shutdown_error()
  • shutdown_process()
  • shutdown_progress()
  • shutdown_prompt()

(as the shutdown and phshutdown utilities do) to override the default behavior. (Ref# 67819)

trace_func_enter(), trace_func_exit(), trace_here(), trace_logb(), trace_logbc(), trace_logf(), trace_logi(), trace_nlogf(), trace_vnlogf()
The QNX Neutrino Library Reference now includes entries for these functions, which provide convenient ways for you to insert trace events into the data collected by the instrumented kernel. (Ref# 69991)

See also the “What's New” appendix in the QNX Neutrino Library Reference.

Utilities Reference
The changes include:
The entry in the Utilities Reference now has the correct instructions for invoking this command. (Ref# 68568)
We've documented the phys_align attribute, which you can use to specify the physical alignment of objects. This attribute overrides the new big_pages attribute (see What's new: Compiler, tools, and utilities). (Ref# 52435, 71815)
We've described the generic and architecture-specific options for startup programs. (Ref# 74069)

Note: Individual startup programs can override these options and may support additional board-specific options. The order of precedence is as follows:
  1. board-specific options
  2. architecture-specific options
  3. generic options

See also the “What's New” appendix in the Utilities Reference.

What's new: I/O devices

  • The io-usb subsystem now correctly detects USB mice and keyboards on HP XW6600 workstations. (Ref# 61680)

What's new: Security

This release addresses the following security concerns:

  • We've updated BIND to version 9.6.1-P2 to address the following issues:
    • The receipt of a specially-crafted dynamic update message to a zone for which the server is the master could cause BIND 9 servers to exit. (Ref# 70243; VU#725188; CVE-2009-0696)
    • A denial-of-service vulnerability existed that affected any system using ntpd from xntp2 (1989), such as high CPU usage, excessive disk use due to logging, and significantly increased network traffic. (Ref# 72603; CERT VU#568372; CVE-2009-3563)
    • A vulnerability was reported in ISC BIND, where a validating recursive nameserver might have incorrectly cached records from the additional section of a query response. If the nameserver is authoritative-only this wouldn't occur. The vulnerability was caused by BIND caching records from the data section of a response without proper DNSSEC verification when resolving recursive client requests with checking disabled (CD), but asking for DNSSEC records (DO). (Ref# 73038; CERT VU#418861; CVE-2009-4022)
  • We've addressed a denial of service vulnerability affecting any system using ntpd from xntp2 (1989), such as high CPU usage, excessive disk use due to logging, and significantly increased network traffic. (Ref# 72503; CERT VU#568372; CVE-2009-3563)
  • We've updated to OpenSSL version 0.9.8m, which addresses an issue with the SSL 3.0+ and TLS 1.0+ protocols that made them vulnerable to a set of related attacks that allow a man-in-the-middle (MITM) operating at or below the TCP layer to inject a chosen plain-text prefix into the encrypted data stream, often without detection by either end of the connection. (Ref# 74597; VU#120154)
  • We now use OpenSSH 5.2, which addresses these issues:
    • X11 session hijacking (CVE-2008-1483)
    • bypass of the ForceCommand directive (CVE-2008-1657)

    (Ref# 62889)

Using the VMware image of a QNX Neutrino runtime system

We provide a VMware image of a QNX Neutrino runtime system in target/QNX_Eval_RT.zip on the installation DVD; it's also available in the Download area of our website.

Caution: The folder and image file in the zip file on the QNX SDP 6.5.0 DVD erroneously have “641” in their names, but the image really is of 6.5.0. If you already have a 6.4.1 image, be careful not to overwrite it. We've corrected the names in the zip file on our website. (Ref# 78170)

To install this image, do the following:

  1. Extract the VMware target from the DVD. For example, on Windows, open a Windows Explorer window, double-click on the target\QNX_Eval_RT.zip file, and then extract the Neutrino641Target folder to some location on your hard drive (e.g. My Documents).
  2. New: Correct the name of the folder by changing it to Neutrino650Target. You can also change the names of the files inside the folder, but you'll then have to reselect them when you start the virtual machine.
  3. To launch, either:
    • Start VMware Player, browse to where you saved the Neutrino650Target folder, and then choose Neutrino641Target.vmx.


    • Navigate to where you saved the Neutrino650Target folder, and then double-click the VMware configuration file, Neutrino641Target.vmx.
  4. If VMware Player displays a dialog saying that the virtual machine was moved, select Create and click OK.

If you find problems with any virtualization environment, please post your findings in one of the forums on our Foundry27 community website.

What's new in the QNX Momentics Tool Suite?

The changes to the QNX Momentics Tool Suite include the following:

  • Command-line tools:
    • GCC 4.4 tool chain
    • New: GDB 6.8
    • New: Binutils 2.19.1
  • Integrated Development Environment:
    • Eclipse 3.5.2
    • C Development Tools 6.0
  • Support for ARMv7 targets — there's an armle-v7 directory under $QNX_TARGET

For more details, see the following sections:

What's new: Compiler, tools, and utilities

The QNX Momentics Tool Suite 6.5.0 includes the following versions of the compiler and tools:

  • GCC 4.4 tool chain
  • GDB 6.8
  • Binutils 2.19.1

We've also implemented lazy binding, RTLD_LAZY, and lazy loading; For more information, see the Compiling and Debugging chapter of the QNX Neutrino Programmer's Guide. (Ref# 69098, 69752)

New utilities include:

This utility converts standard CLDR (Common Locale Data Repository) language collation (or sort order) tables into a format usable by the libqdb_cldr.so DLL. For more information, see the entry for mkcldr in the Utilities Reference, as well as Customizing language sort orders for libqdb_cldr.so in the QNX Neutrino Technotes.
A script that QNX Technical Support might ask you to use to gather system information for troubleshooting purposes (Ref# 69320, 75634)
Display the length of time that the system has been running (Ref# 76091, 76240)

Other changes include:

By default, applypatch now installs the host-side files only for the current host OS. There's a new -H option that makes applypatch install the host-side files for all host OSs. (Ref# 69926, 72362)
We've upgraded to version 1.0.5. This version removes a security vulnerability and supports large files. (Ref# 76380)

Note: This update changes the name of the bz2cat command to bzcat, but the documentation doesn't yet reflect this change. (Ref# 77634)

We've renamed the -n option to be -u, to be consistent with other platforms. The -n option is still recognized. (Ref# 57828, 74887; Ticket ID 83753)
This utility now supports the POSIX -b and -n options. (Ref# 71737, 71738)
If you start it from the command line on a self-hosted QNX Neutrino system, gdb sets LD_BIND_NOW to 1 to force the loading of all lazy-load dependencies. (Ref# 75695)
In order to conform to POSIX, we've changed the -n option so that it always specifies the number of lines to copy. The -c option now takes an argument that specifies the number of bytes to copy. Note that the -c and -l options are QNX Neutrino extensions. (Ref# 65661, 65662)
We've brought in some bug fixes from NetBSD:
  • There's better escaping of control characters.
  • Some memory leaks have been eliminated.
  • The default for Tab is now complete-list, as it is on other platforms. To return to the old behavior, add this line:
    bind ^i=complete

    to your ksh profile.

  • The pattern .* now matches the . and .. directories.

    Caution: This change might cause problems with existing scripts that assume the old behavior still occurs.

(Ref# 72014)

We now ship only the POSIX version of this utility, which creates a hard link instead of a symbolic one. (Ref# 75830, 75831)
mkefs, mketfs
These utilities now support a mountperms attribute that you can use in a buildfile to specify the permissions to use for mountpoints. The default permissions are 0777 for mkefs, and 0755 for mketfs. (Ref# 64471, 71487)
This utility supports the following new attributes:
  • +|-big_pages — attempt to align binaries and shared libraries at the appropriate address, based on the size of the UIP text.
  • pagesizes=size[,size]... — define the page sizes that the underlying hardware supports, for use with the big_pages attribute.

You can specify these attributes in the buildfile or in the bootfile. (Ref 71850, 71961)

We've updated the bootfiles for ARM targets to include the big_pages and pagesizes attributes. (Ref# 71962)

Other changes include:

  • The bios.boot file now contains a test to determine whether or not it should behave like bios_nokbd.boot; it should work for the majority of platforms that previously required bios_nokbd.boot. (Ref# 76237)
This utility has a new -n option that you can use to adjust the debugged program's priority to be lower than pdebug's. Doing this can keep pdebug from becoming unresponsive if the debugged process misbehaves (e.g. looping in a tight loop taking lots of CPU time).

The usage message and documentation now include the following options:

(“One”) Exit pdebug after the debugging session is done.
Run pdebug as a foreground process.

(Ref# 69794, 69803)

By default, pdebug sets LD_BIND_NOW to 1 to force the loading of all lazy-load dependencies. You can prevent pdebug from setting LD_BIND_NOW by specifying the -l (“el”) option. (Ref# 75695)

New: This utility now recognizes .HPP, .h++, .hpp, and .hxx (in addition to .H, .h, and .hh) as extensions to parse to create precompiled headers. The -x option also now supports an argument of c++-header. (Ref# 76601)
As a QNX Neutrino extension, the time argument can be a floating point number, so you can specify fractions of seconds. For POSIX conformance, time must be an integer. (Ref# 71599, 73908)
unzip, unzip
We've updated zip to Info-Zip version 3.0, and unzip to version 6.0. These versions provide large file support. (Ref# 70772, 76915; Ticket ID 89505)

What's new: Integrated Development Environment

The QNX Momentics Tool Suite 6.5.0 includes version 4.7 of the IDE, which includes the following new features:

  • Eclipse 3.5.2
  • C Development Tools 6.0

The website for updates and maintenance releases — which you access via Help-->Check for Updates in the IDE — is https://www.qnx.com/account/updates/ide/4.7/.

Other changes include:

  • New: We've improved the System Profiler's ability to repair trace files in the following ways:
    • The repair algorithm now recognizes trace files that can't be repaired and informs you when you attempt to open one.
    • For traces that can be repaired, the repair time has been reduced.
    • We've merged the “Would you like to repair?” and “Would you like to repair in place?” dialogs, to provide a smooth user experience.

    (Ref# 69934)

  • New: The Application Profiler's sampling information now shows the correct function names for MIPSLE and MIPSBE targets. (Ref# 24510)

For more information about changes to the IDE, see the What's New in the IDE appendix of the IDE User's Guide.

Debugging information for shipped binaries

We generate the QNX SDP binaries with debugging information (-g) and map files. With few exceptions, all binaries are available with debugging information, but this data as well as the .ident information are stripped and stored in a separate binaryName.sym file. These files are linked together, so gdb understands where to find the symbol data.

There's now no need for a separate debug version of all the binaries. There's a separate tar file containing all the .sym files that will be untarred alongside each binary. This file is available in the Download area of our website, as well as in the debugging_info directory on the QNX SDP DVD.

What it means to you:

  • The target binaries are now stripped.
  • The target binaries don't have any SRCVERSION information in them (i.e. use -s won't work).
  • All Neutrino binaries are built with -g (i.e. full debug).
  • We now produce linker map files for all Neutrino binaries.
  • The full debug symbols for a binary called some_binary (along with the SRCVERSION information) are stored in a file called some_binary-buildid.sym.
  • The binary and its associated symbol file are “linked” so gdb knows how to find the symbols.

These *-buildid.sym files are in CPU-specific tar files. The usage of these tar files is straightforward. Suppose you want to debug the ls command for x86. You could just add the entire set of debug files to your target (you need to be root, of course):

  1. Get the target-x86-debug-date.tgz file.
  2. cd $QNX_TARGET
  3. tar -zxf path/target-x86-debug-date.tgz

Then ntox86-gdb $QNX_TARGET/bin/ls would load the debugging symbols from the .sym file automatically. Since this is the full debugging information, you can point gdb at the location of source for ls.

You don't have to extract the entire tar file. In fact all that matters is that the .sym file be in the same directory as the binary. So you could simply copy $QNX_TARGET/x86/bin/ls and the x86/bin/ls-*.sym file (from the debug tar file) to your current directory, and then run gdb there.

In order to get a list of the source files used to build a binary (e.g. to determine the associated licensing), use the .sym file instead of the binary. So continuing with the example above, to get a list of the source files used in building ls, type:

use -s $QNX_TARGET/x86/bin/ls-*.sym

Discontinued items

  • New: We've deprecated fs-cd.so and will remove it in a future release. Use fs-udf.so instead.
  • New: We plan to deprecate the DCMD_F3S_LOCKDOWN and DCMD_F3S_ULOCKDOWN devctl commands.
  • New: We plan to deprecate libmalloc and libmalloc_g in a future release, in favor of librcheck.
  • We no longer support the PowerPC 900 series of processors, so we've deprecated procnto-900 and procnto-900-smp. (Ref# 68225, 68230)
  • We no longer ship the Neutrino-hosted version of the IDE. (Ref# 60706, 61193)
  • New: As explained in the LGPL License Agreement appendix of the Audio Developer's Guide, the asound library is licensed under the Library GNU Public License (LGPL). This means that any changes to the library must be open-sourced, but proprietary code can link to the library without becoming open-source.

    Because of this, QNX Neutrino was supposed to include the asound library only as a shared library (libasound.so), but some releases also included libasound.a. We've corrected this and no longer ship libasound.a. (Ref# 75638)

  • We no longer ship the following binaries:
    • deva-ctrl-cs46xx.so (Ref# 75426, 75972)
    • devn-rtl8169.so — use devnp-rtl8169.so instead. (Ref# 67108, 67238)
    • rftp, rtelnet (Ref# 61851, 61852)
    • sin — use pidin instead. (Ref# 66906, 66908)

The following items will be removed from the next release of QNX SDP and will become part of a separate product:

  • Web Browser Engine (based on the WebKit open-source web browser engine)

Note: The Web Browser Engine in 6.5.0 doesn't include any ARMv7 binaries.

New: After 6.5.0, the current version of QNX Composition Manager will be deprecated. A replacement subsystem tentatively called QNX Screen will be provided as part of a future SDP release.

We've deprecated the CMU version of SNMP that's currently included in QNX SDP, and we'll remove it from the next release. We recommend that you use NuDesign's SNMP instead. For more information, see the Partners area of our website. (Ref# 70524)

Starting with this release, graphics drivers for chipsets that have been out of production for five years will be deprecated. Where possible, the source code for these graphics drivers will be posted on Foundry27.

The following graphics drivers have been deprecated and will be removed from the next release (Ref# 77562):

  • devg-ati_rage128.so
  • devg-chips.so
  • devg-i810.so
  • devg-rage.so
  • devg-sis630.so
  • devg-tnt.so
  • devg-coral.so (armle)
  • devg-radeon.so (ppcbe)
  • devg-smi5xx.so (armle, shle)
  • devg-smi7xx.so (armle, shle)

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.5.0 are:

  • asynchronous messaging

    Note: We've deprecated asynchronous messaging and will discontinue it in a future release. (Ref# 69138, 69784)

    Nevertheless, we've corrected various bugs in this software. If your application uses the .a versions of the libasyncmsg library, you must relink it, or else it will hang when used with the new kernel. If your application uses the .so versions of the library, you don't have to relink it.

The memory manager's backward-compatibility mode


The memory manager supports a backward-compatibility mode that you can control with the b and ~b settings for procnto's -m option. The current behavior is as follows:

Enable backward-compatibility mode. If you call mmap() and don't specify MAP_PRIVATE or MAP_SHARED, the memory manager treats the mapping as MAP_PRIVATE.
Disable backward-compatibility mode. If you call mmap() and don't specify MAP_PRIVATE or MAP_SHARED, mmap() returns MAP_FAILED and sets errno to EINVAL. This is the behavior specified by POSIX.

The default is b (enabled).

Known issues

QNX SDP 6.5.0 contains known issues in these areas:

Note: We're actively investigating all known issues.

Known issues: Installing and uninstalling

  • It's possible to have more than one version of the QNX Software Development Platform installed on your system, and it's possible to install QNX Aviage products for each version of QNX SDP. However, due to a limitation in InstallShield, you have to take some extra steps installing QNX Aviage products on Linux hosts; for details, see the installation notes for the specific QNX Aviage product. (Ref# 73411)
  • Because of the changes to the head utility (see What's new: Compiler, tools, and utilities), if you're installing a QNX Aviage product on QNX Neutrino 6.5.0, you need to start the Aviage installer like this:

    HEAD_LEGACY=1 ./aviage_installer.sh

  • If you install 6.5.0 on some Linux systems (e.g. Ubuntu 8.10) and you already have more than one version of QNX SDP installed, your PATH environment variable might contain the value of $QNX_HOST/usr/bin for an earlier version of QNX SDP. (Ref# 70745)

    Workaround: Manually update your PATH, so that it contains only the 6.5.0 version of $QNX_HOST/usr/bin.

  • In order to run the installer and the IDE on Ubuntu 64-bit, you need to install the 32-bit libraries:
    sudo apt-get install ia32-libs

    Answer “yes” to all the questions. (Ref# 70567)

  • In order to install QNX SDP on Linux or Windows, the QNX license file must be writable by everyone. If the installer stops and warns you that this file isn't writable, you can make it so as follows:
    • On Windows, right-click on C:\Program Files\QNX Software Systems\license and choose Properties. Make sure that the “Read-only” attribute isn't checked, click Apply, and then click OK.
    • On Linux, type the following:
      chmod a+rw /etc/qnx/license/licenses

    (Ref# 62419)

  • On some Linux distributions, the QNX SDP installer incorrectly displays accented “e” characters as a square box in the French text of the “Language” section of the license agreements. (Ref# 61721)

    Workaround: To display the text correctly, open a web browser and view the license agreement .txt files located in base_dir/install/qnxsdp/6.5.0, where base_dir is where you installed SDP.

  • If you install SDP 6.5.0 on a Windows or Linux system that already has QNX Momentics 6.3.2, the installer tells you that it's modifying 6.3.2 to support coexistence with 6.5.0. Here are the details:
    The 6.5.0 installer checks to see if the cleanup utility, QNXWinCleanup.exe, is present under the 6.3.2 host directory (typically C:\QNX632\host) and moves it to C:\Program Files.

    If you uninstall 6.5.0, the uninstaller checks to see if 6.3.2 is present. If so, it moves the cleanup utility back to its original location.

    The 6.5.0 installer replaces uninstaller.bin in 632_base_dir with a script that launches the 6.3.2 uninstaller with a special option:
    ./uninstaller.bin -W beanDeleteConfigDir.active="False"

    If you uninstall 6.5.0, the uninstaller checks to see if 6.3.2 is present. If so, it restores uninstaller.bin.

    (Ref# 58784, 60037)

  • If you've installed both QNX Momentics 6.3.2 and the QNX Software Development Platform 6.5.0 on Linux or Windows, and you then uninstall 6.3.2, the value of the QNX_CONFIGURATION environment variable will be incorrect, and you won't be able to use 6.5.0. (Ref# 58784)

    Workaround: Remove the extra qconfig string from the value of QNX_CONFIGURATION.

  • If you install 6.5.0, and you then install 6.3.2, you need to do the following:
    • On Windows, after installing 6.3.2 over 6.5.0, make sure to move the cleanup utility QNXWinCleanup.exe from $QNX_HOST to C:\WINDOWS.
    • On Linux, when you run the 6.3.2 uninstaller, use the following command-line arguments to leave the 6.5.0 installation unaffected:

      qnx632_base_dir/_uninstall/qnx632/uninstaller.bin -W beanDeleteConfigDir.active="False"

    (Ref# 56879)

  • VMware ESX (or a VMware workstation using SCSI disks) doesn't present an EIDE interface to the guest OS. It offers only a default of an LSI Logic SCSI 320 device (which we don't support) and a second selectable option of a BusLogic 946C device as a PCI device.

    It does let you boot off an IDE CDROM, but won't let you install to an IDE disk; even if the real physical storage is an IDE device, VMware presents it virtually as one of the two aforementioned devices. (Ref# 51509)

    Workaround: In order to install Neutrino on a VMware VM using the BusLogic SCSI controller emulation, you must first apply a driver update. We've included this update on the installation media:

    1. Boot from the installation DVD.
    2. On seeing the initial “Press space for options” message, press the space bar.
    3. Choose to apply the driver update.
    4. Follow the instructions on the screen using /fs/cd0 (i.e. the installation media) as the source.

    For more information on installing driver updates, see “Updating disk drivers” in the Controlling How Neutrino Starts chapter of the QNX Neutrino User's Guide.

  • If you install QNX Software Development Platform 6.5.0 on Windows using a third-party windows explorer (e.g. Total Commander), the installer doesn't display the Activation window once the installation is complete. (Ref# 59359)

    Workaround: Open the QNX SDP Activation dialog by selecting Programs-->QNX Software Development Platform 6.5.0-->License Management-->Activate License from the Start menu, or by entering the following at the command prompt:

      drive:\Program Files\QNX Software Systems\bin\qnxactivate -a

Known issues: Kernel

  • New: User-specified band configurations in the standard memory allocator may corrupt your application's memory, and may cause the application to crash. (Ref# 77776, 77811)

    Workaround: If you specify the band configuration, make sure that the bands are 4080 bytes or smaller, and that all band sizes are multiples of 8 bytes.

  • When an application blocks as a result of a receive on an asynchronous or global channel, the transition to STATE_RECEIVE isn't logged. This causes some problems in the IDE. (Ref# 76574)
  • If there's a continuously-running, regular, high-frequency hardware interrupt, it's possible for a kernel call to be continually interrupted and restarted. The precise definitions of “continuously-running” and “high-frequency” are application-specific, but any regular interrupt with an interval less than the clock interrupt interval, that persists for an extended period should be carefully analysed to ensure that it doesn't affect the operation of the application. One case where this continual restart can occur is when very large (e.g., 100 MB) messages are passed on slow processors. (Ref# 56741, 62212, 75921)
  • If you debug a statically linked executable on MIPS targets, the kernel might crash. (Ref# 76318)

    Workaround: Start procnto with the -mL option.

  • A priority inversion can occur as a result of creating a thread; the procnto thread tasked with allocating the stack can become blocked on a condvar that's waiting for a lower-priority (e.g. fs-nfs3) operation to finish. (Ref# 47811, 71196, 74700; Ticket ID 47811; Case# 00100888)
  • New: Some single-threaded resource managers—such as io-pkt, fs-qnx6.so (which becomes single-threaded when it's sychronizing), and QDB—may become WAITPAGE-deadlocked if the system uses lazy page faulting.

    For example, the problem could occur when io-pkt replies to a client and becomes WAITPAGE-blocked because the client's memory isn't faulted in. The procnto thread that's dispatched to handle it then gets blocked waiting on the address space lock of the client process, which is currently owned by a procnto thread that was already trying to satisfy a page fault request that involved talking to NFS, which can't finish because io-pkt is blocked waiting for the lock to be released. (Ref# 62483)

    Workaround: Disable lazy page faulting by specifying the -mL option to procnto.

  • If you create a shared memory object, mmap() it with MAP_SHARED, create a synchronization object (e.g. a mutex) in it, and then mmap() with MAP_PRIVATE to the same offset in the shared object, then the application and some some programs such as pidin and shutdown may hang. (Ref# 63369)
  • We've observed some memory corruption for uncacheable memory with the Renesas BigSur (SH7751) board. It might be a problem with the hardware. (Ref# 27741)
  • Some calls to mmap() with MAP_ANON or MAP_LAZY may be slower with QNX SDP 6.5.0 than with earlier releases on certain platforms. The difference is more pronounced for small sizes (e.g. 4 KB). For larger sizes (more than 32 KB), performance may be the same or better with 6.5.0. It might take longer to start applications and create threads. In part, this is due to the virtual memory manager's more complete data structures. (Ref# 27831)
  • If you're in a directory on a remote machine, and you pipe the output of a command to xargs, and you redirect the output to a file, you get a “cannot fork” error. For example:
    cd /net/remote_machine/tmp
    find . -type f | xargs grep FAIL > report.txt
    /bin/sh: cannot fork - try again

    It seems to be a problem with permissions. Piping the output of xargs to less works. (Ref# 29834)

    Workaround: Log in as root.

  • If you have multiple memory mappings to files that use the same underlying resource manager, and these mappings are first referenced simultaneously (e.g. the first reference in a program), there is the potential for a deadlock if the number of simultaneous first references exceeds the number of threads in the underlying resource manager. (Ref# 29440, 30045, 62483)
  • Some older versions of VMware may show signs of instability. For example, you might get kernel faults that don't occur on real machines or with VMware 6.5. You might also see messages such as “The CPU has been disabled by the guest operating system.” (Ref# 57058)
  • procnto and the underlying filesystem may become deadlocked when you use read/write memory-mapped files with multiple threads, under the following circumstances:
    • If you have multiple mappings to files that use the same underlying resource manager, and these mappings are first referenced simultaneously (e.g. the first reference in a program), there is the potential for a deadlock if the number of simultaneous first references exceeds the number of threads in the underlying resource manager.

    (Ref# 29440, 29380)

  • When you use fork() to create a child process, the kernel clones the floating point register context from the parent to the child, but it doesn't clone contexts other than the CPU or FPU register sets. This isn't likely to affect your programs. (Ref# 71327)
Some multiprocessor systems, such as the Power Book E and the ARM Cortex-A9 MPCORE, have an interrupt controller on each processor, but QNX Neutrino currently assumes there's only one controller. Unmasking an interrupt on one processor may leave it masked on other processors. (Ref# 60301)

Workaround: Bind all threads that mask and unmask interrupts so that the threads run only on CPU 0.

Known issues: Libraries and header files

New: It isn't safe to call attexit() from a shared object that's meant to be dynamically opened using dlopen(). If you do this, your application might crash when you call dlclose(). (Ref# J521222)
brk(), sbrk()
New: These functions don't do anything useful under QNX Neutrino; don't use them. (Ref# J166490, J191638, J743268)
fdatasync(), fsync()
New: Calls to these functions on a PPS file always fail with errno set to 22 (invalid argument). (Ref# 77943)
Unnamed semaphores aren't inherited across a fork() (Ref# 59947, 73710)
This library causes some problems on x86 targets if it's compiled with gcc 4 with optimization above -O0. To avoid these problems, we've compiled the DLL with -O0 optimization for x86. (Ref# 55883)
This library is a Neutrino interface to version 1.1 of the Expat XML Parser, but it isn't documented. For information about this library, see <xmlparse.h> and <xmltok.h> in $QNX_TARGET/usr/include. (Ref# 56140)
MsgKeyData(), MsgKeyData_r()
New: These kernel calls don't work properly over Qnet; if the client and server are on different nodes, the verification step fails, even if the data is correct. (Ref# J418418)
New: POSIX says that this function should return 0 or an error code, but it currently returns 0 or -1, setting errno if an error occurs. (Ref# J1279909)
New: POSIX requires that this function return an error code on failure, but the implementation returns -1 and sets errno. (Ref# 174563)
In the current implementation, posix_spawn() can indicate an error of EMSGSIZE. This is most likely the result of attempting to operate on too many file descriptors in the posix_spawn_file_actions_t object passed to posix_spawn() or posix_spawnp() and/or an overly large environment variable list (either through inheritance by passing NULL for the envp parameter to posix_spawn() or posix_spawnp() or by explicitly providing an overly large envp parameter). (Ref# 75606)

Workaround: Reduce the number and size of the environment variables and/or number of file descriptors being manipulated with the posix_spawn_file_actions_t object.

New: This function isn't fully implemented. It currently doesn't do anything, but the return code indicates success. (Ref# J701207)
shm_ctl(), shm_ctl_special()
If an error occurs, these functions set errno to ENOSYS (not EINVAL as documented). They should provide better diagnostics. (Ref# 26440)
New: The ProcessInfo_t structure includes a field called class, so you can't use this header in a C++ program because class is a keyword. (Ref# J175596)
This function doesn't check the priority range when PTHREAD_EXPLICIT_SCHED is set. For example, if you use the on command while logged in as a non-root user, and you specify a priority greater than 64, on still executes the command but at the priority of the calling shell. It should give an error saying you don't have permission to create at that priority. (Ref# 28763)
Time zones
QNX Neutrino uses a nonstandard method of defining time zones that's difficult to keep up to date. We plan to replace it in a later release. (Ref# 44425)

Known issues: Filesystems

On ARM platforms, you can't use an io-fs-media share to store a directory structure with more than 16 MB of data. (Ref# 56601)
If you send a SIGTERM or SIGKILL signal to a devb-* driver, chkfsys might subsequently find errors on the filesystem. (Ref# 48741, 48764, 48765)
New: If you try to delete a linked file or directory in a Linux Ext2 filesystem, you get a “Corrupted file system detected” error. Note that we support only read access to this type of filesystem. (Ref# 50264)
The io-blk manager lets you mount a filesystem in a file. To do this, you basically create a normal file on a disk, and then format it (via dinit, mkqnx6fs, mkdosfs, etc.), as a filesystem. You can then run a command, such as:
mount -tqnx4 /home/myfs.img /fs/test

and you'll get a mountpoint called /fs/test, which is the size of the file and is formatted as a QNX 4 filesystem.

If you used fs-qnx6.so as the real filesystem on the hardware, and then created a QNX 4 or DOS filesystem inside a file residing on the Power-Safe filesystem, the host filesystem formerly could become damaged by the modifications to the hosted filesystem. We've fixed that, but the host filesystem might not be able to confer full power-loss safety to the (by design) not power-loss-safe QNX 4 or DOS filesystem. (Ref# 74580)

If you specify a flag such as noatime on a block filesystem, and then you remount the filesystem (mount -u), the flag is ignored. The absence of the flag is interpreted as your asking for access time updates to be turned on. There's no way for the code in io-blk to determine if you wanted to use the default, and therefore didn't specify anything, or really did want access time updates to be turned on, and therefore didn't specify anything. (Ref# 77323)

Workaround: Specify the flags again using the -o option for the mount command. For example:

mount -u -o noatime ...

Known issues: Startup

  • If you load an uncompressed OS image that's larger than 3 MB on an x86 target, some binaries (e.g. ftp) may crash. (Ref# 45838)

    Workaround: Specify this attribute in the mkifs buildfile:

  • If you have a PC-compatible system with a BIOS, and the system has 4 GB or more of memory, you should specify the -x option to startup-bios. This option enables extended addressing, which lets you access physical addresses above 4 GB. We'll turn this option on by default in a future release. (Ref# 61758)
  • A situation exists on PowerPC-based boards with less than 256 MB of RAM whereby a machine check can be received. This is due to a speculative load (for a branch not taken) from a memory address beyond the extent of physical RAM but within the first 256 MB window. This condition has been detected only on a Freescale MGT5200 Lite with 64 MB of memory and only during the execution of a specific sequence of regression and benchmark tests on the kernel. The possibility of occurrence has existed in all previous Neutrino releases; however, to best of our knowledge, no such failures have been reported. (Ref# 28335)

    Workaround: A requirement of startup code for PowerPC-based boards is to configure the DBAT0 register. The register is currently configured for a minimum size of 256 MB. Initializing DBAT0U[BL] to the exact (power of 2) size of physical memory will eliminate this situation from producing a machine check exception. Alternatively, if possible on the particular board, disabling the assertion of TEA will also prevent the errant (speculative load for a branch not taken) machine check when this specific situation occurs. This option should be considered in the context of the entire system. Please contact QNX for specific questions about these and other workarounds.

Known issues: Adaptive partitioning

  • New: Overloads aren't reported to users. The Adaptive Partition scheduler detects overload and acts to limit some partitions to guarantee the percentage shares of others, but it doesn't inform anything outside of the kernel that an overload was detected. The problem is that an overload might occur (or might not occur) on every scheduling operation, which can occur at the rate of 50000 per second on a 200mhz machine (an older, slower machine).
  • SCHED_RR threads might not round robin in partitions whose portion of the averaging window is smaller then one timeslice. For example, when the timeslice is 4 ms (the default) and the adaptive partitioning scheduler's window size is 100 ms (the default), then SCHED_RR threads in a 4% partition may not round-robin correctly. (Ref# 28035)
  • If you use adaptive partitioning and bound multiprocessing (BMP), some combinations of budgets might not be met. (Ref# 29408)
  • Threads in a zero-budget partition should run only when all other nonzero-budget partitions are idle. However, on SMP machines, zero-budget partitions may incorrectly run when some other partitions are demanding time. However, at all times, all partitions' minimum budgets are still guaranteed, and zero-budget partitions will not run if all nonzero-budget partitions are ready to run. (Ref# 29434)
  • The product P × W × N must be less than 2,147,483,648, where:
    • P is the processor clock rate (in Hz)
    • W is the APS window size (in seconds)
    • N is the number of processors on the SMP device

    The default value of W is 0.1 (100 millisecs) and, given this value, the following constraints apply:

    • 1 processor: maximum clock rate 21.5 GHz
    • 2 processors: maximum clock rate 10.7 GHz
    • 4 processors: maximum clock rate 5.4 GHz
    • 8 processors: maximum clock rate 2.7 GHz

    (Ref# 74128)

  • On ARM targets, the 10 window and 100 window averages, as reported by the aps show -v command, are sometimes garbled. However, these have no effect on scheduling. (Ref# 27552)

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.

  • If you install QNX Neutrino on a system that uses the Intel Express Q35 chipset, the OS won't boot. The ITE EIDE interface on this board isn't supported. (Ref# 61188)

    Workaround: Run the driver in PIO mode.

  • Fujitsu Coral cards don't support text mode, so on x86 systems, you need two video cards: one to use in text mode, and one for 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: Use the -R command-line option to diskboot (if you're booting from a CD, press Space when the “Hit space...” appears, and then press F3). Using this option 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.

  • 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.

  • On some Intel 3.2GHz D945G systems, the USB bus is reset by the host after rebooting, while the host is addressing the device. (Ref# 51935)

    Workaround: Disable legacy USB support in the BIOS.

  • The Dell Latitude D830 fails to boot QNX Neutrino 6.5.0 from USB mass-storage devices. (Ref# 61688)
  • The bootable version of QNX Neutrino on the DVD doesn't include the documentation, in order to reduce the space requirements.

Known issues: BSPs and DDKs

  • If you're building a pre-6.5.0 BSP, you may need to remove some files for the BSP to compile (and work) properly. If you have problems building a pre-6.5.0 BSP, refer to the “Building 6.4.x BSPs with QNX SDP 6.5.0” section of the BSP 6.5.0 information wiki, http://community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/SDP_6.5.0_BSP_Info.
  • Changing the variant of a BSP to ARMv7 isn't supported, because any prebuilt libraries in the BSP are not compatible with ARMv7. For more information, see the BSP 6.5.0 information wiki, http://community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/SDP_6.5.0_BSP_Info.
  • 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.

Known issues: Compiler, tools, and utilities

ksh, pipe
There's a problem with interactions between pipe and ksh on SH targets. If you use multiple pipes in a command line under ksh, all output can be lost. For example:
# uname -a
QNX renesas_sh7785 6.5.0 2008/09/26-04:27:12EDT SDK_7785 shle
# uname -a | grep renesas
QNX renesas_sh7785 6.5.0 2008/09/26-04:27:12EDT SDK_7785 shle
# uname -a | grep shle
QNX renesas_sh7785 6.5.0 2008/09/26-04:27:12EDT SDK_7785 shle
# uname -a | grep renesas | grep shle

(Ref# 62242)

  • 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 or later.

    Workaround: Rebuild the startup binary using QNX SDP 6.5.0. The resulting startup will work with 6.2.1 or later.

New: On Windows 7, you must run mkbuild as an administrator. (Ref# J331476)
  • If the first page of a memory-mapped object is written to, pidin might display /dev/zero instead of the object's name. (Ref# 43050)
  • New: The -M option doesn't work unless you specify the c, d, or m format in the -f or -F option. (Ref# 93157)
When a kernel call fails, the instrumentation records the errno value. However, if you use traceprinter on the .kev file in a cross-endian environment (e.g. the .kev file was generated on big-endian, and you're running traceprinter on little), the errno value that gets printed isn't swapped before being displayed. For example, an EFAULT is displayed as 0xe0000000 rather than 0xe. (Ref# 76429)

Known issues: Device drivers

  • You might see a message such as “Range check failed (MEM) - Dev 1b - Vend 168c - Class 20000 - Addr 0 - Size 10000” in the system log, but you can ignore it.

    The PCI server code allocates one byte low of PCI memory and one byte high of PCI memory and keeps these values as the range of low and high PCI memory. It does the same for I/O space. The server then scans all devices in PCI space and checks the I/O and memory ranges for each device against the stored range values to see whether they're valid or not. If a range check fails, the device is placed in the disabled state and is initialized when an application calls pci_attach_device(). The PCI server code is standard across all platforms and only the low-level, hardware specific portion changes, so there is a generic portion to all the drivers. (Ref# 50790)

  • We haven't fully tested the following drivers:
    • deva-ctrl-ess1938.so
    • deva-ctrl-geode.so
    • deva-ctrl-nmg6.so
    • deva-ctrl-sb.so
    • deva-ctrl-via8233.so
    • devc-serzscc
    • devg-flat.so
    • devg-geode.so
    • devg-sis630.so
    • devh-touchintl.so
    • devi-dyna
    • devi-semtech
    • devn-el509.so
    • devn-pegasus.so
    • devn-rtl8150.so
    • devn-smc9000.so
    • devp-pccard

    (Ref# 61821)

Audio device drivers (deva-*)

  • The audio driver isn't initialized after you boot the target with QNX SDP 6.5.0 from the hard disk on a Kontron MicroETXexpress-PC module. (Ref# 74882)
  • Audio drivers included in BSPs that were released before QNX SDP 6.4.1 are incompatible with 6.4.1 and later. If you try to start them, you'll get some errors about unresolved symbols. If you have the source code, and you try to recompile it using gcc 4.2, you'll get some compile errors. (Ref# 59692)

    Workaround: Relink the driver binaries on Neutrino 6.5.0. For updated source code, see Foundry 27 on our website, or contact Technical Support.

Block-oriented drivers (devb-*)

Reading DVD-RAM causes devb-adpu320 to become blocked on a CONDVAR. (Ref# 19772)
You can't restart this driver on IBM PPC405 boards. (Ref# 16018)
  • 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 devg-smi5xx.so driver faults or deadlocks in multicard setups. (Ref# 59790, 60369, 76945)
  • The flash-ph player (part of the QNX Aviage HMI Suite) doesn't work with video cards that don't provide a linearly accessible frame buffer; this includes the Fujitsu Carmine graphics card. (Ref# 61783)
  • The devg-radeon.so driver doesn't work properly on DVI-equipped monitors. If you're using an ATI Radeon PCI-Express Vendor ID 0x1002, and device ID 0x5B60, you may experience GUI failure during mode switching. (Ref# 41905)

    Workaround: Use the devg-svga.so or devg-vesabios.so graphics driver instead, or manually edit /etc/system/config/display.conf to find a display mode that works with devg-radeon.so.

  • If you use devg-vesabios.so on a Dell 830, the system won't reset when you shut it down while in graphics mode. (Ref# 57168)

    Workaround: Use phgrafx to change the driver to devg-i830.so. You can also avoid the problem by exiting to text mode, and then typing shutdown at the command prompt.

  • 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)

Human interface device drivers (devh-*)

  • New: Autorepeat doesn't currently work on USB keyboards that are connected to the system via a Avocent KVM 4SVPUA20 switch. (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-*, devnp-*)

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).

The devnp-axe.so USB-Ethernet dongle sometimes drops packets when used on slow systems or with UHCI. (Ref# 62088)

Workaround: If you encounter problems with this driver, use the io-net driver devn-asix.so instead.

devnp-ath.so, devnp-bcm43xx.so, devnp-ral.so, devnp-rum.so
The documentation should say that you must use io-pkt-v4-hc or io-pkt-v6-hc with these drivers (io-pkt-v4 doesn't support Wi-Fi). (Ref# 77970)
The io-pkt driver for the Intel i82544 doesn't support dual-port cards (did=0x1010). (Ref# 44299)

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)

Flash filesystems & embedding

  • New: The tar utility fails when you try to create an archive on a NOR flash filesystem. (Ref# 77866)
  • In previous versions of this software, a program that called umount() without the _MOUNT_FORCE flag would behave as if the flag was provided (i.e. the flash filesystem would be unconditionally unmounted regardless of any operations either pending or in progress on the filesystem).

    In this release, umount() sets errno to EBUSY if any pending or in-progress flash filesystem operations exist on the filesystem unless you specify _MOUNT_FORCE. The same applies for scripts that call the umount utility without the -f option. This has implications for applications that expect _MOUNT_FORCE behavior but don't specify it.

  • libfs-flash3 loses blocks with ftruncate(). (Ref# 25132)
  • There's a memory leak of approximately 1 KB when you unmount a raw flash filesystem partition (e.g. dev/fsxpy). (Ref# 23643)
  • New: When you create a file in an embedded transaction filesystem (ETFS), the parent directory's times aren't updated as POSIX requires. (Ref# 23243)
  • There's currently no flash probe utility. (Ref# 23136)
  • fs-flash3 doesn't have an iofdinfo() handler for mtree tests. (Ref# 18432)
  • If you create a 255-character filename using the 1.1.0 flash library (libfs-flash3) and the flash filesystem is subsequently mounted using an earlier version of libfs-flash3, the filename won't appear in the filesystem, but it is still present (i.e. if the filesystem is subsequently mounted again with the 1.1.0 libfs-flash3, the filename will reappear). This behavior applies only to forward compatibility whereby an older flash filesystem library is used to mount a newer filesystem. Backward compatibility (the ability of the new filesystem library to mount older filesystems) isn't affected.
  • During a power failure, the flash filesystem can be corrupted if the NOR device's power supply is in the indeterminate state. The solution is to design the hardware so that the NOR flash device enters RESET the moment the power supply drops below the proper operating range. (Ref# 24679)

Known issues: IDE

The IDE contains the following known issues:

See also the list of host-specific issues, later in these notes.

Known issues: General

  • We pre-index our documentation, but the first time you search for anything in the IDE's Help system, it has to combine the indexes (and index any Eclipse documents that haven't been indexed). This should take less than a minute.
  • New: If you use Help-->Search, links that go to the IDE User's Guide don't work. Links that go to other documents work. (Ref# 77552, J331149)

    Workaround: Use the search in Help-->Contents.

  • If you change the name of a library project name in the IDE, references to the library in application projects that use the library aren't automatically updated. (Ref# 45758; Ticket ID 75995)
  • You might see a message like this when you start the IDE:
    Subscription License Expired - Your QNX License could not be obtained, some QNX functionality will be disabled.

    This message appears only if QNX Software Systems has a contract with you to support server-based licenses. It indicates one of the following:

    • You need to configure your license server.
    • More users are trying to use the IDE at the same time than there are available licenses for.

    (Ref# 51688)

  • If you choose Help-->QNX Software Updates-->Qconn Updates, and you already have the latest version of qconn, the updater simply exits without telling you that your qconn is up to date. (Ref# 50207)
  • 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 Eclipse editor doesn't behave correctly on very long lines (more than 4500 characters). At the end of a long line, the cursor doesn't position itself properly between characters, selections and changes are very slow, and the column number is reported incorrectly. (Ref# 29586, 21053; Eclipse-CDT PR 68116)
  • Pressing F1 for context-sensitive help doesn't always give you much information. (Ref# 21034)
  • When you're setting up a Run or Debug launch configuration, you can't use pathnames that are relative to the workspace for the local path to shared libraries. (Ref# 41476)
  • The progress bar in the Target Filesystem Navigator gives inaccurate status information when performing a large task, such as copying a large file from your target to your workspace. (Ref# 45567)
  • If the IDE can't open the browser to display the documentation, it may give you an error message of:
    An exception occurred while launching help. Refer to the log for more details.

    The problem could be that the IDE couldn't find your default browser. Check the web browser listed in your preferences (see Window-->Preferences-->General-->Web browser) to make sure it's a browser that's installed on your system.

    If this doesn't fix the problem, check the log file; see Help-->About QNX Momentics IDE-->Configuration Details-->View Error Log. If you've installed the Eclipse SDK, use the Error Log view. (Ref# 29971)

Known issues: Application Profiler perspective

  • If you're using Sampling and Call Count Instrumentation, the Application Profiler checks the samples only for processor 0 on a multiprocessor system. (Ref# 77220)

    Workaround: If you're profiling an application on a multiprocessor system, bind all the threads so that they run on processor 0.

  • If you use Mudflap, disable it, and then enable application profiling, the output might still go to mudflap.output. (Ref# 67197)

    Workaround: When you disable Mudflap and enable Application Profiling in the Launch configuration, click Apply, then Close, and then run the application.

  • The Application Profiler can allocate CPU time to the wrong line if you're profiling code that has profiling and debugging information, and if 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.

Known issues: System Profiler perspective

  • When an application blocks as a result of a receive on an asynchronous or global channel, the transition to STATE_RECEIVE isn't logged. This causes some problems in the IDE. (Ref# 76574)
  • The System Profiler requires a minimum color depth of 16 bits; otherwise, the timelines might appear to be blank. (Ref# 23763)
  • The System Profiler can take a very long time to load and parse a .kev generated by a target system that's running Neutrino 6.3.0 SP1. The parsing is much faster for .kev files from a system with a later version of Neutrino. (Ref# 27221)
  • In the System Profiler's Timeline view, toggling the priority and event labels has no effect. (Ref# 42076)

    Workaround: For priority labels, you need to generate the log file in wide mode.

  • The text at top of the Summary page isn't displayed. (Ref# 45814)

    Workaround: Close and then reopen the System Profiler perspective to restore the summary information.

Known issues: Memory Analysis perspective

  • When you request the termination of the Memory Analysis service, it might take longer than expected. (Ref# 46228)
  • In the Memory Analysis perspective, if a function causes a buffer overflow, memory leaks aren't detected correctly. (Ref# 42312)
  • You might see some allocations take place before your application's main() function starts. This is normal; some of the system libraries allocate space as they're initialized. (Ref# 29698)
  • If a process is not running as the root on the target machine, the Attach mode will not function properly. (Ref# 44762)

    Workaround: Run the process as the root. If the process is launched using qconn, then qconn should be run as root.

  • The Memory Analysis Tool does not work properly when more than one IDE client connects to it. (Ref# 21819)

    Workaround: Use a unique file for MAT output (device or filesystem).

  • The Memory Analysis Tool changes the behavior of a program that uses fork. (Ref# 29032)

    Workaround: If your program uses fork, you must disable the control thread of the Memory Analysis Tool (from the Launch Configuration, select Memory Analysis-->Target Settings and disable Create control thread).

    In addition, it is not possible to attach to this type of process because the Memory Analysis Tool needs to run a control thread.

Known issues: System Information perspective

  • In the System Information perspective, if you use continuous logging and the currently selected process ends, the IDE loses focus. (Ref# 41630)
  • Occasionally, in the System Information perspective for the APS (adaptive partitioning scheduler) view, the Partition Child Process and Threads information aren't available if the target is slow, or if you're using QNX Momentics 6.3.0 SP3 or the SP2 to SP3 upgrade. (Ref# 40651)
  • The APS view in the System Information perspective doesn't show all of the bankruptcy information, such as when the last bankruptcy occurred. (Ref# 40057)
  • In the APS view's CPU Usage and Critical Time Usage panes, newly added partitions display with the same color as some of the existing ones, and partitions aren't cleared when you switch targets. (Ref# 40626)

Known issues: System Builder perspective

  • The System Builder doesn't currently have a way for you to enable the kernel dumper. (Ref# 56269)
  • In the System Builder, having the same binary and directory name in the overrides can result in an incorrect path for the binary. (Ref# 40287)
  • For a System Builder project, if you select the Clean Project option, the make clean defined in the makefile isn't properly invoked. (Ref# 45628)

Known issues: C/C++ development

  • If the Makefile for a regular C++ make project uses implicit rules such as the following:
    all : cc2
    cc2 : cc2.o
    cc2.o : cc2.cpp

    then the link stage doesn't work properly. (Ref# 62006)

    Workaround: To avoid this, use an explicit rule for linking:

    cc2 : cc2.o
            $(CXX) -o cc2 cc2.o -lang-c++
  • 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 bug 99193 at http://www.eclipse.org. (Ref# 25616)
  • The IDE sometimes ignores an explicit build request for a project, such as those invoked by using the Build Project entry in the C/C++ Project view's right-click menu, if the project uses an externally built library. (Ref# 20966)

    Workaround: Use an explicit target in the make command.

Known issues: Team/CVS

  • 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). (Ref# 18405)


    To check out an existing PhAB project from CVS:

    1. Select an import source from CVS-->Projects.
    2. Click Next.
    3. In the Checkout Project from CVS Repository window, select an existing repository location, or create a new location.

      If you choose an existing location, select Use existing repository location.

    4. Click Next.
    5. In the Select Module window, enter a module name, or choose an existing module by selecting Use an existing module, and then browse the modules in the repository.
    6. Click Next.
    7. In the Check Out As window, select Check out as a project in the workspace.
    8. Click Next.
    9. In the Check Out As window, if not already checked, select Use default workspace location.
    10. Click Next.
    11. In the Select tag window, click Finish.
  • 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, while the project is being checked out, a message displays indicating “The file has been changed on the file system, do you want to load the changes?”, but it doesn't indicate which file was changed. (Ref# 25422, Eclipse ref# 102659)

Known issues: Debugging

  • Breakpoints set in .gdbinit don't show up in the user interface. (Ref# 55810)

Known issues: Documentation

  • New: The entry for usbd_free_urb() in the USB DDK documentation says that this function returns EOK, but it actually returns a pointer to the next URB in the chain (if any). (Ref# J177149)
  • New: Note that isalnum(), isalpha(), iscntrl(), isdigit(), isgraph(), islower(), isprint(), ispunct(), isspace(), isupper(), isxdigit(), tolower(), and toupper() take an integer argument, but the value must be representable as an unsigned char or be EOF; the behavior for other values is undefined. (Ref# 120364, J174062)
  • New: Note that iswalnum(), iswalpha(), iswcntrl(), iswdigit(), iswgraph(), iswlower(), iswprint(), iswpunct(), iswspace(), iswupper(), iswxdigit(), towlower(), and towupper() take a wint_t argument, but the value must be a wide-character code that corresponds to a valid character in the current locale, or must be WEOF; the behavior for other values is undefined. (Ref# 120364, J174062)
  • New: The ability to munmap() just a part of an area mapped with mmap() was introduced in QNX Neutrino 6.3.2, but the entry for munmap() in the Neutrino Library Reference says it isn't supported. (Ref# 80441)
  • With the upgrade to version 1.0.5 of bzip2, the bz2cat command is now called bzcat, but the documentation doesn't yet reflect this change. (Ref# 77634)
  • The documentation for mq_open() and sem_open() doesn't mention that if you want to use O_CREAT, O_EXCL, or O_NONBLOCK when you call these functions, you need to include <fcntl.h>. (Ref# 77620)
  • Additional documentation is required to complete the topics for the following areas in the IDE User's Guide:
    • the fast method of launching a debug session
    • debugging a DLL/shared library
    • attaching to a running process with the debugger

    (Ref# 42437)

Known issues: Instant Device Activation

  • The default startup [image=] memory location as specified in buildfiles for Biscayne boards causes a memory error when using a minidriver. You get a “cannot remove all sysram” error message. (Ref# 23632)

    Workaround: Change the memory location to 8c004000 from 8c002000 (e.g. [image=0x8c004000]).

  • We've provided a mini serial port driver for the Freescale Lite5200B, but not for the Freescale Media5200b. (Ref# 40572)

    Workaround: If you need a mini serial port driver for the Media5200b, you can modify the one for the Lite5200B. You need to change the interrupt number to 68 and use PSC6, GPIO6.

  • The test-case code for the mini serial port drivers on the Renesas Biscayne and TI OSK5912 boards have the baud rate set to 14400. (Ref# 40570)

    Workaround: You need change the baud rate to the correct one below:

    Renesas Biscayne
    int baud=57600;
    TI OSK5912
    int baud=115200;
  • In the current mini serial port driver test case for the Renesas Biscayne, when the real serial driver attaches to the interrupt, it disables Rx and Tx interrupts. It might lose some data between these two stages. (Ref# 40514)

    Workaround: Change the following code so that it doesn't disable Rx (SH_SCIF_SCSCR_RE).

    In mini_serial.c:

    if (state == MDRIVER_INTR_ATTACH) {
       set_port16(mdata->port + SH_SCIF_SCSCR_OFF,
                  SH_SCIF_SCSCR_RE|SH_SCIF_SCSCR_RIE, 0);
       return 1;

    In minidriver-serscif.c, change this:


    to this:

    out16(port + SH_SCIF_SCSCR_OFF, in16(port +

    The baud rate and clock for Biscayne should be 57600 and 33333333.

Known issues: I/O devices

  • 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; Ticket ID 77965)
  • 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: Multimedia

Multimedia TDK 1.0.1
QNX SDP 6.4.1 and later don't support Multimedia v1.x. Applications that depend on Multimedia v1.x will no longer resolve symbols or execute under 6.4 or later. For multimedia support, you need to install the QNX Aviage Multimedia Suite. (Ref# 55967)

Known issues: Networking

When using the m_pkthdr_csum_data member in network driver code, make sure that you use only the bottom 16 bits. The top 16 bits may contain undefined data. (Ref# 44622)
New: There's no way in the dhcp-options file to send options that require additional data. (Ref# J169953)
The commands:

ifconfig iface_name up
ifconfig iface_name scan

don't work individually for Wi-Fi drivers. (Ref# 61246)

Workaround: Combine the commands:

ifconfig iface_name up scan

New: Contrary to what the documentation says, io-pkt-* doesn't determine which version of this module to load, so you need to specify it:
Use: With:
lsm-pf-v4.so io-pkt-v4 or io-pkt-v4-hc
lsm-pf-v6.so io-pkt-v6-hc

(Ref# 78737)

  • Qnet might append the domain name to entries under /net, even for nodes in the same domain. (Ref# 75539)

    Workaround: Use the setconf _CS_DOMAIN command to change the domain name to something else, and then change it back to its original value.

  • The only supported bind= options for Qnet are bind=ethernet_interface and bind=ip. Other values for bind=X are still accepted (that is, no error is given), but Qnet may not work with them if the specified ethernet_interface doesn't appear. (Ref# 58234)
  • Qnet currently expects all packets to be received and sent as a single contiguous buffer. This can be a problem if you're using jumbo packets. (Ref# 47828)

    Workaround: When you're using Qnet with an Ethernet driver that's enabled to use jumbo packets, you should set the cluster size (the mclbytes option to io-pkt*) to be the same as the packet size (the ifconfig if_name mtu command for the driver). This ensures that the packet buffers that Qnet uses are contiguous in memory.

    If you specify a jumbo packet size larger than 4 KB (the default page size), you must additionally specify the pagesize=X option to io-pkt, with the same value as the mclbytes=X option. For example, to use 8100-byte packets with devnp-i82544.so, do the following:

    io-pkt-v4 -d i82544 -p tcpip pagesize=8192,mclbytes=8192
    ifconfig wm0 mtu 8100
    mount -T io-pkt lsm-qnet.so

    Note: Be sure to mount Qnet after you change the MTU of the interface with ifconfig.

    If you now type:

    cat /proc/qnetstats

    you can see that the Qnet L4 has an MTU of 8096, which it learned from the driver (remember the 4 bytes for the trailing CRC).

    Note: All the Qnets on your LAN must have exactly the same MTU.

    You can specify a particular MTU to Qnet (which can be the same or less than the driver-advertised value) with the mtu_en=X option.

  • 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)
  • Qnet doesn't fully support communication between a big-endian machine and a little-endian machine. However, it does work between machines of different processor types (e.g. ARMLE, x86) that are of the same endian-ness. For more information, see the Advanced Qnet Topics chapter of the QNX Neutrino Programmer's Guide.
  • New: If you try to remount a CIFS filesystem, either with:

    mount -u cifs_mountpoint

    or by calling mount() with the _MOUNT_REMOUNT flag, the filesystem is unmounted. (Ref# 77893)

  • If you unlink() a file on a CIFS mount point, any open file descriptors for that file become invalid. (Ref# 38574)
  • 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)
  • 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, fs-nfs3
  • 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)
  • New: If a path ends in a slash, it must be a directory. When you access a link that has a trailing slash, fs-nfs2 and fs-nfs3 immediately return 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, and it's consistent with the behavior on other OSs. (Ref# 20877, J473236)
  • fs-nfs2 doesn't support a -B option greater than 8096. (Ref# 39022)
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)
  • 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.

  • New: There's a memory leak in gns; a message buffer is allocated but is never freed. (Ref# 78242, 142156)
  • 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.

The stack might send zero-length mbufs to a driver for transmission. (Ref# 44621)

Workaround: Drivers must accommodate for this by checking the length of the data in the mbuf and ignoring the mbuf if the length is zero.

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)
TCP/IP (part of io-pkt)
  • 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)

Known issues: Graphics

Advanced Graphics

New: The documentation incorrectly says that io-display supports PAL8 (the underlying Advanced Graphics framework doesn't support it). (Ref# 77854)
An internal structure exchanged between libimg and the image codecs changed after we released version 2.0 of the Advanced Graphics TDK. Applications compiled and linked statically against the earlier versions of imglib.a might not function properly, especially while decoding JPEG images. (Ref# 48003, 56557)

Workaround: Relink the applications against the newer version of imglib.a.

The Advanced Graphics libffb library doesn't support blitting to a PAL8 surface from a non-PAL8 surface. Therefore, Pg_IMAGE_PALETTE_BYTE offscreen contexts can be blitted to and from only offscreen contexts of the same type. (Ref# 20391)

Changing modes or stopping and then restarting graphics
When changing modes or stopping and then restarting graphics using devg-i830.so, the machine might enter a bad state and power down. (Ref# 74803)

Workaround: Do the following:

  1. Boot into safe mode (during the boot process, press Space, press F1 for Safe Mode, and then press F3 so that Photon doesn't start).
  2. Edit the file /etc/system/config/display.conf and set drivername=i830, set resolution values for xres and yres, and then set a refresh rate value for refresh.

    For more information about display.conf, see io-display in the Utilities Reference.

  3. slay and then restart io-display:
    slay io-display

    and then at the prompt type:

    io-display -dvid=0x8086,did=MypciDeviceID

    where MypciDeviceID is the PCI device ID for your specific device.

  4. Start Photon (use the ph script).

Photon microGUI

Photon isn't supported on ARMv7 targets.
Arcs, Bézier curves, and ellipses
The default line joint is a miter, which doesn't produce good results for these curves, and — contrary to what the documentation says — the setting of the line joint is ignored if you use stroked arcs or stroked ellipses. Using PgSetStrokeJoin(Pg_BEVEL_JOIN) may give smoother results once this issue is resolved. (Ref# 58185)
Dual-head displays
On systems with a dual-head display and screens set up to display different portions of the logical desktop, some convenience functions — such as PtFileSelection() and PtNotice() — are always constrained to the first screen. (Ref# 59614)
PgBlitCx(), PgContextBlitAreaCx(), PgContextBlitCx(), PgMultiBlitCx()
New: The documentation says you can use these functions with any form of draw context, but they support only PhDrawContext_t and PdOffscreenContext_t draw contexts. (Ref# 181238)
We don't currently ship phs-to-pcl for PPCBE; it will be provided in a forthcoming release. (Ref# 61378)
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)
  • If you can't find the icon for a minimized module, use the Show Module Tree item from the Window menu to locate it. (Ref# 60529)
  • 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)
PhAB for Windows
  • Applications created by one user can't be built by another user. (Ref# 61333)

    Workaround: Use Windows Security Properties to set the file permissions to give other users access.

  • If you start PhAB through the IDE on a Windows XP host, several security-alert dialogs are displayed, because the Windows XP 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)

Known issues: Persistent Publish/Subscribe

  • New: The <sys/pps.h> header file is missing. (Ref# 78433)
  • The ppsparse() function sets the attr_index member of the pps_attrib_t structure only when a line contains both an attribute name and a value. When you're reading in delta mode, PPS sends a message such as -attr\n when an attribute is deleted. Since there's no value, the code sets attr_index to -1. (Ref# 77361)

Known issues: Runtime kit

  • New: The paths in 650-complete.txt shouldn't start with a slash; they're relative to ${QNX_TARGET}. (Ref# 78566, 142157)

    Workaround: Edit a copy of the file and remove the leading slashes.

  • New: If you create a runtime using the rtinstall script provided by the technote, and you then install the runtime on a disk that already has a Power-Safe (fs-qnx6.so) filesystem partition (type 179) on it, the installation script gives the error:
    Cannot mount on /install: resource busy

    and then stops. (Ref# 78567, 142158)

    Workaround: Boot the system and run QNX Neutrino from the CD. Open a terminal, run fdisk /dev/hd0 (if that's the drive you want to install the runtime on), and then delete the type-179 partition.

For information about creating a runtime QNX Neutrino system, see the How to create a Runtime Kit from the QNX Software Development Platform technote in the installed documentation.

Known issues: System Analysis Toolkit

  • If you run tracelogger in direct map mode on an ARM LE system, you might encounter some increased latency in your tasks. (Ref# 51550)

    Workaround: Use nondirect map mode instead.

  • On a multicore system, make sure that the clocks on all processors are synchronized. If they aren't, tracelogger will produce data with inconsistent timestamps, and the IDE won't be able to load the trace file. The IDE attempts to properly order the events in the trace file, and this can go awry if the timestamp data is incorrect. (Ref# 70573)

Known issues: Host-specific

Windows hosts

Coexistence on Windows 7
Although 6.5.0 is the first version of QNX SDP that's supported on Windows 7, you should be able to install and use earlier versions. However, if you try to change the current version of the tools (via the QWinCfg utility or the Configuration menu item), QWinCfg will display a dialog that says you can't save any changes because you aren't an administrator. This is because of changes to the User Account Control (UAC) system on Windows 7. (Ref# 69243)

Workaround: Do the following:

  1. Start a command prompt.
  2. Run the ksh command.
  3. Type qconfig to get the installation name of the required configuration.
  4. Run the following command, specifying the installation name:

    eval `qconfig -n "Installation_name" -e`

    For example, to switch to 6.3.2, run this command:

    eval `qconfig -n "QNX Momentics Development Suite 6.3.2" -e`
The following issues apply to the Windows-hosted version of the IDE:
  • You can't do rename, delete, or move operations when the System Profiler editor is open. The editor maintains an open file pointer to the log file that it's working with; as long as that file is open, under Windows FAT32 filesystems, no modification can occur. (Ref# 28561)
  • If the IDE window spans two monitors, and you lock and then unlock your computer, the window is restored to be the size of one monitor. This is a general problem on Windows. (Ref# 28653)
  • When you do a build, stdout and stderr sometimes overlap, resulting in misleading error and warning messages. This is a general problem on Windows. (Ref# 15106)
Vista and Phindows or PhAB
On Vista, Phindows and PhAB seem to interfere with the gadget toolbar; the sidebar flickers and appears and disappears very rapidly and often, slowing down the system. (Ref# 62277)

Workaround: This may be related to Phindows and PhAB's use of Direct3D double buffering, which is redundant when the Vista Aero compositing is enabled. To disable double buffering:

  • For Phindows, use the Double Buffering Method menu option in the Connect dialog, or pass the -d0 command-line option.
  • For PhAB, set the PHINDOWSOPTS environment variable to -d0.
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)
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

sh, ksh
Because of the way that the MSYS versions of the shell manipulate the environment variable, PATH doesn't appear to include $QNX_HOST/usr/bin, but it does. (Ref# 59412)
User Account Control (UAC)
Windows Vista and Windows 7 include an account policy, called User Account Control (UAC), that impacts various administrative features, such as being able to create and store files in a temporary directory (tmp). This directory is used by various applications, such as CVS and the split command, and various Photon applications. To successfully run these applications on a computer running Windows Vista or Windows 7, you must have administrator privileges and disable UAC. (Ref# 44027)

In order to install or use Automated License Management, you must have logged in as an administrator and disable UAC. (Ref# 77791)

Workaround: To disable UAC on your Windows Vista configuration:

  1. Launch MSCONFIG by from the Run menu. (When you click on the launch button — the one with the windows logo commonly in the bottom left corner — the Run menu is an editable text bar with the string Start Search. Type msconfig and then press Enter.)
  2. Click on the Tools tab. Scroll down until you find Disable UAC, and then click that line.
  3. Press the Launch button.
  4. A cmd window will open. When the command is done, you can close the window.
  5. Close msconfig, and then restart your computer.

You can reenable User Account Control by selecting the Enable UAC line and then clicking the Launch button.

Caution: Disabling UAC bypasses some security features.

For Windows XP, the location that the BSP file for the IDE installs into is $QNX_CONFIGURATION/qconfig_directory, and it is write-protected for a default user. Consequently, subsequent updates to BSPs aren't permitted in this location because of permission errors under Windows Vista configurations if the user doesn't have administrative permissions. (Ref# 44668)

Workaround: Modify your user permissions. For instructions about changing these permissions, see the steps in the workaround for the problem (Ref# 44027) above.

QNX utilities
The Windows installation includes various executables that have the same name as some QNX utilities, such as find, sort, and split. By default, Windows places the path to the Windows executables at the beginning of the Windows PATH environment variable, and the QNX executables appear afterward. This means that when you run these utilities from the command line, instead of using the QNX version, the PATH variable uses the Windows version. (Ref# 44457)

Workaround: If you want to use the QNX utilities for find, sort, and split from a command prompt or shell prompt, specify a fully qualified path to any of the QNX executables.

  • The current version of ctags is 5.5.4, and the documentation included with QNX doesn't accurately describe the features for this version. (Ref# 44457)

    Workaround: See the detailed documentation at http://ctags.sourceforge.net/ctags.html.

  • For Windows Vista, you receive the following error messages two times when using ctags because the Windows sort is being used instead of the sort utility included in QNX Momentics:
    Input file specified
    ctags: cannot sort tag file : No error

    The ctags utility still generates tag files; however, they won't be sorted. (Ref# 43530)

    Workaround: Manually call the QNX sort on the tags file.

Linux hosts

The installers can't update the Gnome menu on some distributions of Linux. (Ref# 48770)
  • On some distributions, the activation dialog doesn't appear automatically. (Ref# 68599)

    Workaround: Log out and back in again, and then start the activation program manually:

    /etc/qnx/bin/qnxactivate -a
  • If you try to use the IDE on some distributions of Linux (e.g. Ubuntu) to build for QNX Neutrino 6.4.1 targets, the license check for the tools fails. (Ref# 76136)

    Workaround: Back up your 6.4.1 licensing library, and then replace it with the 6.5.0 version. For example:

    cp /opt/qnx641/host/linux/x86/usr/lib/libqnxlic.so /opt/qnx641/host/linux/x86/usr/lib/libqnxlic.so.original
    cp /opt/qnx650/host/linux/x86/usr/lib/libqnxlic.so /opt/qnx641/host/linux/x86/usr/lib/libqnxlic.so
  • You can create a PhAB project from the IDE in Linux, but since there is no PhAB editor on Linux, the project is unusable. (Ref# 77258)
  • If you use the IDE on Linux systems that run GTK, you'll notice that the order of the OK and Cancel buttons in the dialogs has changed. This is a new feature associated with Eclipse 3.5; you can change the order back by editing the GTK preference file (user_home/.gtkrc, user_home/.gtkrc-2.0, or user_home/.gtkrc-1.2-gnome2, depending on the version of GTK) and including this line:

    (Ref# 74831)

  • Icons inside menus aren't displayed if you use GTK 2.18; see bug 293720 at http://www.eclipse.org. (Ref# 75055)

    Workaround: Turn on the Show icons in menus option (for example, under System-->Preferences-->Appearance-->Interface on Ubuntu 9.10).

  • On Linux Ubuntu 9.04 64-bit, after you install, you'll notice that the QNX website doesn't open in the default browser, the Internal Web Browser view isn't functional when the IDE generates a Code Coverage report (Internal Browser-->Default System Web Browser), and you'll receive this error message:
    someUser@ubu90464bit:~$ qde
    Gtk-Message: Failed to load module "canberra-gtk-module":
    /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so: wrong ELF class: ELFCLASS64

    (Ref# 71246)

    Workaround: In the IDE, select Preferences-->General-->Web Browser, and then specify an external browser.

  • The IDE won't run on some versions of Linux, such as Open SUSE 11 and Ubuntu 8.04. This is a bug in Eclipse; see bug 213194 at http://www.eclipse.org. (Ref# 66351, 66760)

    Workaround: Do the following:

    1. On Ubuntu, type:
      sudo apt-get install xulrunner
    2. Edit $QNX_HOST/usr/qde/eclipse/qde.ini and add this line after the -vmargs line:
  • The IDE may give some “UnknownHost” exceptions when you attempt to access a network on some 64-bit versions of Linux (e.g. Ubuntu 8.0.4 64-bit). This seems to be a problem with name resolution in the JRE on such hosts. (Ref# 70757)

    Workaround: Edit /etc/nsswitch.conf. On the hosts line, move dns from the end to between files and mdns4_minimal.

Known issues: Web browsers

Bon Echo
  • For the Send Link... command in the File menu to work (and for mailto: links on web pages in general), you need to set the network.protocol-handler.app.mailto configuration string. To set this string, type about:config in the Bon Echo address bar. You should set this string to be the full path to an executable that will start the desired email program. The first parameter passed is always the mailto: URL. (Ref# 59434)
  • If you place the Bon Echo window so that the bottom is outside the lower part of the screen, and you then scroll down for example with the wheel, the page isn't refreshed correctly. (Ref# 61837)

Getting started with the documentation

After you've installed QNX SDP, you'll find an extensive set of HTML documentation:

  • On Linux and Windows development hosts, you can read it in the Integrated Development Environment's help system. On Linux, use the qde command to start the IDE; on Windows, use the desktop icon.
  • On self-hosted QNX Neutrino systems, you can read it in the Photon helpviewer, or you can use a web browser to display:


The “roadmap” page contains links to the various HTML booksets that accompany the OS. We recommend that you start with Welcome to the QNX Software Development Platform for an overview of QNX SDP. Next, see 10 Steps to Developing a QNX Program: Quickstart Guide for a short tutorial that will help you get started, and then refer to the other documents (System Architecture, QNX Neutrino Programmer's Guide, Library Reference, Utilities Reference, and so on).

You can install and work with multiple versions of QNX Neutrino. Whether you're using the command line or the IDE, you can choose which version of the OS to build programs for. For more information, see the IDE User's Guide or the QNX Neutrino Programmer's Guide.

Technical support

To obtain technical support for any QNX product, visit the Support area on our website (www.qnx.com). You'll find a wide range of support options, including community forums.

For questions about installing and using QNX SDP, see the QNX Momentics Getting Started forum on our Foundry27 site, http://community.qnx.com. There are other forums for specific topics, including the QNX Neutrino RTOS, development tools, networking, Board Support Packages, and so on.

List of fixes

The problems fixed in QNX SDP 6.5.0 include the following:

Software fixes

Change Ref#
Palette matching has improved. (Ticket ID 68240) 24289
The serial (devc-*) drivers now check to make sure that memory allocations were successful. 24309
On SMP systems, the functions that lock mutexes -- such as pthread_mutex_lock(), and pthread_cond_wait() (when the thread is woken up by a pthread_cond_signal() or pthread_cond_broadcast() -- no longer unblock threads in the wrong order. 24522
slinger can now write form variables to a dataserver. (Ticket ID 69008) 24555
The devf driver was not making use of a BSP-specific read callout, when accessing the flash by /dev/fsX, or /dev/fsXpY. It now uses the callout, if present. 27241
Flash file system performance became slow with an even spare block count. This has been fixed. 28747
gf_display_devctl(), gf_i2c_read(), gf_i2c_writeread(), and gf_i2c_write() now return GF_ERR_TOOBIG when internal limits are exceeded. 29568
A new PxRotateImage() function for rotating images 0, 90, 180, or 270 degrees has been added. PNG images containing palettes with alpha information are now processed properly by Photon image routines. 37475
We've corrected a race condition that could have occurred when the Adaptive Partitioning Scheduler detected that a partition became bankrupt on an SMP system. 38762
The netmanager utility now correctly honors the disabled parameter. 40445
You can now get and set the Pt_ARG_CWELL_SWATCH_DIM resource for a PtColorWell widget. 41596
The IDE's Text Editor now supports block selection. Press Alt-Shift-A to toggle block selection on and off, or alternatively use the Toggle Block Selection toolbar button. After that, you can use Ctrl-C to copy text in the selected rectangle. 44183
In the IDE, the Memory view as ASCII now supports 64 and 128 columns. 46977
The High Availability Manager now automatically switches to monitoring the new process that daemon() creates, if the original process was a self-attached entity. (Ticket ID 80845) 52131
The IDE's Expression view now lets you format variables as hexadecimal and other formats. 52773
When you're unmapping memory, a mutex is no longer identified as an item to destroy if the process has another mapping to the same page. (Ticket ID 82614) 55518
Previously the application of a driver update would succeed and allow an installation but the subsequent rebuild of the customized boot image would fail under certain circumstances (VMware with a SCSI adapter as an example). This has now been resolved. 56042
We've renamed the -n option for the cp command to be -u, to be consistent with other platforms. The -n option is still recognized. (Ticket ID 83753) 57828
We've fixed a race condition between kernel no-op processing and pthread_cancel(). 59261
We've suppressed an informational message concerning truncation that appears when you start an ETFS. Since this message doesn't indicate an unrecoverable error, it's now displayed only if you start the filesystem with a verbosity of one or greater. (Ticket ID 84762) 61433
Issues have been found with the version of OpenSSH that ships with NetBSD 3.x, NetBSD 4.x, and NetBSD-current. The two known security issues include X11 session hijacking (CVE-2008-1483) and a bypass of the ForceCommand directive (CVE-2008-1657). We now use OpenSSH 5.2, which contains the appropriate fixes. 62889
The same timing resolution rate that was used for io-net is now used for io-pkt. As a result, io-pkt now uses less CPU time that it used to when performing background maintenance operations. (Ticket ID 86055) 63007
If you use direct mode with the devg-i830.so driver, images now all appear correctly on the display. 63977
We've added a simple LRU buffer cache to inflator, to improve random seeking within a file. (Ticket ID 86706) 64569
We've updated the devg-vmware.so driver so that certain applications are now displayed correctly. 64787
In the IDE, the File Navigator was updated to include an address bar so that you can enter or copy a path. 65003
In previous versions of SDP, if Photon wasn't setuid, a non-root user was unable to log out of Photon. This has been fixed. 65287
The Rx and Tx counts are no longer reported as 0 after you slay pppd. 66127
The devg-matroxg.so driver no longer enables the vsync IRQ when the “wait for vsync” function is configured to poll for vsync. 66613
If a server calls ConnectClientInfo() on a disconnected coid, the function now gives an error of EINVAL instead of EFAULT. 66687
Paletted PNGs are now supported by the Advanced Graphics Imaging Library PNG codec. (Ticket ID 87663) 66799
The entry for devn-micrel8841.so in the Utilities Reference now points out that this driver supports only PCI versions of the Micrel 8841 (1 port) and 8842 (2 port) Ethernet controllers. 67333
In the PPC floating point emulation library, we've corrected the emulation of the mcrfs opcode, and we've completed the emulation of the mffs, mtfsb0, mtfsb1, mtfsfi, and mtfsf opcodes (the L, W, and Rc fields weren't handled). (Ticket ID 87996) 67553
InterruptMask() and InterruptUnmask() now give an error of ESRCH if the ID parameter isn't something returned by InterruptAttach() or InterruptAttachEvent(), or -1. 67694
The applypatch utility no longer tries to apply .tar files that aren't structured as a standard patch. 67764
The hardware cursor is now functional on some newer Intel chipsets with devg-i830.so. 68190
If both ppc variants (spe and regular) are created in the same project and at least of them enabled both would be build. 68221
For floating point emulation, faults that used to be reported in the emulator are now reported against the instruction that caused the fault. (Ticket ID 88277) 68330
The io-pkt manager no longer becomes reply-blocked when you use pppd with a serial port. 68456
If the priority of every server thread in devf-generic is boosted because of a SEND-blocked client, the original priorities are now correctly restored upon receipt of the client's message; as a result, low-priority threads no longer perform long, time-consuming tasks at a high priority. (Ticket ID 88359) 68497
In situations where a thread with sporadic scheduling policy called MsgSend() and its budget was exhausted, internal kernel data structures were left in an inconsistent state.

Note that this only happened if sporadic scheduling was used.

Photon applications no longer SIGSEGV if the font manager isn't running. 68517
We've updated our port of the HP APDK to a newer version to fix a number of bugs and add new printer support. 68586
The /var/chroot/sshd directory is now correctly owned by root:root with permissions of 0755. 68628
Line joins are now supported in Photon's dashed thick lines. Previously the joins were ignored, even if they were set. If you have erroneously set the line join with dashed thick lines, and had not intend to, you will have to change your code. 68641
The etfsctl utility can now write a file into a raw etfs partition at a specified offset. 68671
Fixed an issue where pppd used to fault when passing an environment to a /etc/ppp/ip_up script. 68688
This fix provides -o (offset) and -l (length) options on the -e (erase) option of etfsctl to permit the user to avoid erasing selected parts of the raw partition. 68705
Improvements have been made to gf_draw_finish() and gf_draw_flush() with respect to drivers that don't require layer_flushrect() updates. If your application is linked statically against libgf.a, we strongly recommend that you relink it. 68760
Mounting Qnet over IP caused an undetached thread to be listed as 'dead' in the list of active threads. This has been fixed. (Ticket ID 88501) 68794
We've corrected the options in the usage message for devi-microtouch. 68795
The make command on Windows XP now correctly parses the MAKEFLAGS. 68853
The statvfs() function now reports the correct number of free files on an ETFS when long filenames are used. 68898
The etfsctl utility can now read raw partitions at a specified offset. 68911
Threads are no longer left in the STOPPED state when a process dumps core. 68948
PpPrintWidget() no longer faults when reading a file into a stack buffer. (Ticket ID 88599) 68995
An intermittent boot problem was occurring because of an issue in the _resmgr_handle() function. This has been fixed. (Ticket ID 88503) 69005
You can now set the source viewport of a layer (for panning/scrolling) in devg-gma9xx.so. 69038
OTF (OpenType Font) types are supported now. Users should discontinue using T2K-fm and T2K-cache libraries as they have been merged into the T2K library.

The T2K_BorderFilerParams structure has changed. The R,G,B members have been renamed into Red, Green, Blue respectively.

In the IDE's System Profiler, it is now possible to have two or more editors operating independently of each other based on the filters selection. 69249
In the IDE, you can now disable a builder for a QNX Project. 69291
The correct Pg_LAYER_FORMAT_* value is now returned in the PgLayerCaps_t format member. 69322
The kernel no longer crashes when there are two threads blocked on a channel -- the first one being a local thread, the second being a remote thread -- and you destroy the channel. 69500
Board-specific startup code using the interrupt_id_dec(), interrupt_id_dec_smp(), or interrupt_eoi_dec() callouts must now have the INTR_GENFLAG_LOAD_SYSPAGE flag specified in the genflags field of the intrinfo_entry structure. 69528
The size of the read buffer was increased to 32 KB in devf to improve the file reading throughput. 69578
Signal delivery while the thread stack is unmapped will no longer cause a kernel crash. 69586
You can now set the tracing mode to fast or wide for specific events in the _NTO_TRACE_THREAD class. You can also do this for events in the _NTO_TRACE_PROCESS and _NTO_TRACE_VTHREAD classes, but there's currently no difference between the data for fast and wide mode for these classes. 69613
The devg-flat.so driver is now functional in 6.5.0 (Ticket ID 88856) 69792
We've corrected an internal function such that calling (for example) chdir( ""/"") no longer causes memory corruption in the caller's address space. 69961
The io-pkt manager no longer misses some interrupt events. 70093
The devg-flat.so driver now has a configuration file. One of the options in it lets you indicate that the memory is byte-swapped, so that the driver will run properly on a big-endian system. 70110
The wave utility now correctly checks the value returned by snd_pcm_plugin_set_disable(). We've also incorporated the updated source code in the Audio Developer's Guide. 70219
We've updated BIND to version 9.6.1-P2 to address an issue whereby the receipt of a specially-crafted dynamic update message to a zone for which the server is the master could cause BIND 9 servers to exit. (VU#725188; CVE-2009-0696) 70243
tracelogger no longer causes a kernel crash when run twice in direct mapped mode. 70265
You can find the cpu_mdriver.c and mdriver.c files (used for Instant Device Activation) in $QNX_TARGET/usr/src/archives/qnx/mdriver-base.zip. 70278
In the IDE, for a System Profiler trace, we've disabled the ability to turn off control events (the Control Events tab no longer appears). The result is that it prevents the disabling of control events, which are necessary in order for the IDE to properly read and interpret a trace. 70323
If you export the bin and band events from the IDE's Memory Analysis, the data is now sorted by event ID. (Ticket ID 89309) 70333
Slinger now provides the correct MIME types for cascading style sheets and Javascript files. 70351
The IDE's System Builder now uses relative paths (or variables) instead of absolute paths where possible in the search paths. (Ticket ID 89203) 70401
Alpha map processing for rectangles is now processed faster on non-linear access GPUs. 70526
The following integer types are now defined in <sys/types.h> for System V compatibility if Unix extensions are enabled (i.e. if __EXT_UNIX_MISC is defined):

typedef unsigned short ushort
typedef unsigned int uint;
typedef unsigned long ulong;

The io-display manager no longer leaks memory when more than two applications are running simultaneously. 70898
The io-display manager no longer constantly creates and destroys threads when more than two clients are connected. 70956
We've fixed the dial-on-demand feature so that pppd is notified to begin the connection procedure when a packet is sent on the interface and to clean up on disconnection. If the serial device resource manager returns 0 for a disconnected link, we now notify pppd so that it can see the link disconnection even if it isn't the session leader for the controlling terminal (i.e. it was started with the nodetach option). 71018
In-kernel emulation of floating point load/store operations no longer crashes the kernel when multiple load/store instructions are present and cross a page boundary, and the next page's pagetable attributes are invalid. Only the current page is now assumed to be valid; upon reaching a page boundary, the emulation is completed, which means that the next page is validated before the next instruction is emulated. 71065
Recovery code was causing partition corruption. (Ticket ID 89005) 71120
We've fixed the SERCTL devctl() to allow multi-line toggles. 71275
The IDE's Problems view no longer contains stale or inaccurate information when a project contains files that are linked to files in another project. 71277
We've addressed a race condition in pathmgr_open(), so that a double free() can no longer occur on an open_entry(). 71287
An exception at the wrong time on PowerPC SMP systems no longer causes messages to be truncated. (Ticket ID 88273) 71289
A new devctl was added to io-blk() to provide extended partition description details. 71402
Added support for getpagesizes(). This feature allows an application to optimize its usage of large pages. 71950
System Profiler statistics for process running, ready, and blocked time now display values using two calculations. The default value corresponds to the data aggregated using the process' child thread states, whereas the sum value corresponds to the sum of each individual value from its child threads. 72247
In the IDE, if you copy data from the Application Profiler's Execution Time view to a clipboard, the data for fields that contain both data and an image is now copied correctly. 72249
The io-graphics subsystem now has an -a option that enables anti-aliasing on polylines for displays (CRT/LCD).It currently applies only to diagonal lines of width 1. (Ticket ID 89891) 72316
The kernel no longer crashes while flashing targets. The error was in the interrupt code generated at run time on the SH family of processors, which led to an incorrect jump if all interrupt ID routines indicated that they didn't own the interrupt; we've corrected the generated interrupt code. 72386
The PPCBE C++ libraries no longer use lwsync instructions to work on E500 targets. (Ticket ID 90375) 72502
Partial corruption of message data no longer occurs on the PowerPC 440EP. The corruption would take the form of some message data being zeroed. This was as a result of uninitialized memory not being completely zeroed before the message pass was performed; upon first access of the memory by the process, the data would be zeroed. The full destination message area is now fully zeroed and initialized before the message pass is performed. (Ticket ID 90399) 72554
We've addressed a denial of service vulnerability affecting any system using ntpd from xntp2 (1989), such as high CPU usage, excessive disk use due to logging, and significantly increased network traffic. (CERT VU#568372, CVE-2009-3563) 72603
We corrected a function, which the kernel uses internally to get information about a particular virtual address, so that it works correctly if the address space used in the request is something other than the active address space. 72699
The fs-udfs filesystem now converts invalid filename characters to underscore characters. In addition, we've added the charset= option to allow the overriding of this behavior by specifying a character set mapping of 8-bit characters to Unicode. (Ticket ID 90422) 72722
You can now successfully run the devg-poulsbo.so driver with a resolution of 640x480. 72768
When a PPP link is shut down, the close() of the TTY is now done in the context of the main io-pkt thread, instead of in the context of the TCP/IP stack thread. If the TTY manager blocks the close(), the TCP/IP stack thread no longer becomes blocked, and so can still service TCP/IP requests. 72789
The snmpd agent no longer reports incorrect interface addresses to clients. (Ticket ID 89734) 72801
Users can now set the force flag when unmounting an io-net driver under io-pkt. 72826
The socklen_t data type is now unsigned to conform with common practice. 72839
We've corrected a race condition that existed on PPC SMP targets when two threads on different CPUs simultaneously called floating point instructions. The calls used to corrupt register f0 on one of the CPUs. 72860
The floating point register F0 no longer gets corrupted on multiprocessor MIPS systems. 72861
Message passing using global memory on ARMv4 targets no longer causes intermittent failures. 73036
We've upgraded BIND to version 9.6.1.-P2 to address the Security SA37426 ISC BIND DNSSEC Cache vulnerability issue. A vulnerability was reported in ISC BIND, where a validating recursive nameserver may incorrectly cache records from the additional section of a query response. If the nameserver is authoritative-only this will not occur. The vulnerability is caused by BIND caching records from the data section of a response without proper DNSSEC verification when resolving recursive client requests with checking disabled (CD), but asking for DNSSEC records (DO). (CERT VU#418861, CVE-2009-4022) 73038
The io-pkt networking stack no longer crashes when you create at least three instances of pppd and then terminate them in the order in which you created them. (Case# 00100180) 73053
The macros in <cpuinline.h> use some compiler-specific extensions. We've added __extension__ to the declarations so that you can now use these macros with the -ansi and -pedantic compiler options. 73061
io-pkt threads are now properly named to better reflect their function. 73098
We've corrected a problem that existed when there was a pending pthread_mutex_timedlock(), and the mutex owner no longer existed. The cleanup code entered into an infinite loop because it attempted to clear out all of the blocked entries, but instead did nothing for timed locks. We now ensure that the user code is forced out with an EOWNERDEAD error (meaning that the owner of the lock died while holding it). 73133
We've corrected a problem with ARM global mappings that used to cause a SIGSEGV. 73208
The kernel no longer leaks connection IDs when you use Qnet. 73235
The io-graphics command no longer faults if you set up your system to not display the cursor by adding cursor=none to the photon section of display.conf. 73285
We've corrected a problem with Code Coverage in the IDE that caused an internal error. 73332
In calib, the default region size has been increased to support 16-bit touchscreen devices. 73426
A race condition was causing an inconsistent mutex state. This has been fixed. 73428
We've updated the low-level atomicity GCC functions so that they no longer use spinlocks, which failed under certain circumstances (Ticket ID 89892) 73495
The filesystem relearning/remounting activity is now properly locked with respect to client operations. 73586
We've resolved a problem that existed with the vmm_map_xfer() function special-casing xfer_diff()/xfer_prp() based only on the first iov. A multi-iov transfer (where some iovs specify normal user addresses but others specify global addresses) now work correctly. An adjustment was made to the iov base on on individual basis, and the cpu_vmm_fault() handler now checks whether xfer_diff() applies to the faulting address. 73614
We've fixed a problem where a round-robin thread would run for extended periods of time if it were repeatedly preempted by a higher-priority thread and was never the active thread when a clock interrupt came in. This prevented other threads at the same priority from running. (Ticket ID 90613) 73730
The mtu command line option for the pppd utility now works as expected. 73775
The -e option to all devf drivers has been extended, to allow you to specify a mountpoint name, rather than just a partition number. (Case# 100597) 73986
If the _NTO_CHF_GLOBAL flag is set on a channel, and MsgSend() returns success without blocking, the timeout is now correctly cleared. 74017
Unplugging a USB cable while any process had /dev/serusbX device nodes open caused a memory leak. This has been fixed. 74077
If a low priority thread (Thread A) holds a mutex, and thread A is SEND/RECEIVE blocked on a thread (Thread B), while a high priority thread (Thread C) is waiting on the mutex from Thread A, the priority (from Thread C) is now propagated to both Thread A AND Thread B (note: when the priority is propagated to Thread B, both the current priority and actual priority of the thread change). 74248
The resource manager io-blk would crash when calling xpt_bus_deregister() during eject. This has been fixed. (Case# 100869) 74385
Breakpoints on constructors and some other C++ methods can cause the IDE's debugger to insert multiple breakpoints per location. These breakpoints are now displayed correctly in the Breakpoints view. (Ticket ID 101196) 74430
Mounting a QNX 4 or DOS filesystem on top of a Power-Safe filesystem (fs-qnx6.so) partition no longer corrupts the Power-Safe filesystem partition. 74495
We've increased the default timeout that devb-umass uses for its initial SCSI inquiry, so that the device has enough time to respond. 74501
In the System Builder, we've addressed issues with the generated attributes in the mkxfs build file. 74578
We've updated to OpenSSL version 0.9.8m, which addresses an issue with the SSL 3.0+ and TLS 1.0+ protocols that made them vulnerable to a set of related attacks that allow a man-in-the-middle (MITM) operating at or below the TCP layer to inject a chosen plaintext prefix into the encrypted data stream, often without detection by either end of the connection. (VU#120154) 74597
In a multithreaded application, where one thread is a resmgr thread and another thread calls resmgr_detach(_RESMGR_DETACH_CLOSE), the resmgr thread no longer gets stuck waiting on condvar. 74691
A removable media relearn race condition was corrected. 74723
Hardware cursor support has been fixed for the Dell Latitude E5x00. The devg-i830.so driver also restores settings correctly on exit to properly return to the previous graphics mode. 74817
Some systems have been found to lock up when using the vsync interrupt for devg-radeon.so. The default behavior of the driver has been changed to poll for vsync.(This was the behavior prior to 6.4.0) A new driver option has been added to allow a user to try to use the vsync interrupt; set use_irq=1 in radeon.conf. 74853
Graphics support for the Intel G35 chipset has been added to devg-i830.so. 74926
GLOB_QUOTE is now the default for glob(), as per POSIX. To revert to the former behavior, specify the POSIX GLOB_NOESCAPE flag. 74975
When importing a trace file into the Memory Analysis tool, you can now use a shared library path. 75145
In the IDE, if you profile a process where multiple threads call the same function, the samples are now assigned to the correct threads. 75186
When thread dies during debugging, the IDE's debugger no longer shows it in the thread list as a duplicate of the previous thread; it's now removed from the list. (Ticket ID 101323) 75273
HAM no longer generates duplicate pulse notifications when you register for both CONDDEATH (which is a superset of CONDDEATH and CONDABNORMALDEATH) and CONDABNORMALDEATH separately. 75380
wint_t is now declared in the correct C++ namespace. 75647
We've fixed certain cases in the IDE where the common.mk file for a QNX Project was corrupted when the properties were saved. (Ticket ID 67456) 75694
In certain cases, with unaligned clusters on DOS, partial cluster updates could be lost. This has been fixed. 75712
The img_load_resize_file() function no longer inverts BMP images. (Case# 101717) 75766
We've addressed a limit issue that occurred when passing environment vaiables that were greater than 126 characters to a launched program. 75998
The devg-i810.so graphics driver now includes a workaround for Intel Errata concerning draw command ring-buffer that could lead to driver lockup on some systems. 76200
The IDE's System Builder now supports special characters (e.g. &, <, >, and quotation marks) in file names. (Case# 102229) 76489
Improved the formatting for user events to detect the difference between events generated with NTO_TRACE_INSERTSUSEREVENT and _NTO_TRACE_INSERTUSRSTREVENT. 76763
The summary area of the System Profiler CPU Usage pane is no longer obstructed by the horizontal scrollbar. 76764
The strtol() now correctly parses whitespace in the given string; it now rejects strings in which whitespace appears between the sign and the number. (Ticket ID 00102345) 77187

Documentation fixes

Change Ref#
The default scheduling priority and policy for processes launched from the script file in a mkifs buildfile are specified by procnto, and could change in future versions of QNX Neutrino. If the priority and scheduling policy of the processes are important to you, be sure to use the pri= modifier. 1834
We've added more information about the dirent_extra and dirent_extra_stat structures that filesystems can provide as extra data when you call readdir(). 16157
We've added EINVAL, EMFILE, and ENOREMOTE to the list of error codes for ConnectAttach(). 17408
Since signal-catching functions are invoked asynchronously with process execution, you need to take into account the same sort of things that you would in a multithreaded program when inspecting or manipulating shared resources. 17738
The documentation for message_attach() now points out that although the low and high arguments are of type int, the function stores the values internally as short. 20022
The documentation for the PtGenList widget now describes the Pt_ARG_LIST_FLAGS bits that control the vertical and horizontal scrollbars. 20402
We've updated and corrected the Making Multiple Images technote. 20754
We've corrected the list of error codes for pwrite(), send(), sendmsg(), sendto(), and write(). 21617
The PtFlash was deprecated in QNX Neutrino 6.4.0, but its entry in the Widget Reference wasn't completely removed. We've now fully removed it. 21954
If you call a spawn*() function and pass NULL for argv[0] or arg0 (depending on which function you use), the function indicates an error of EINVAL. 22197
We've corrected the documentation for SignalAction() to say that the default action for SIGTSTP, SIGTTIN, and SIGTTOU is to stop the process, and that you can't ignore or catch SIGCONT. We've also described the special QNX Neutrino signals, which you can't unmask. 22588
The QNX Neutrino Library Reference now describes strtof() and strtold(). 23031
We've added the lan option to the documentation for devn-dm9102.so, devn-el509.so, devn-el900.so, devn-epic.so, devn-fd.so, devn-i82544.so, devn-micrel8841.so, devn-ne2000.so, and devn-tigon3.so, and the lan2 option to the documentation for devn-micrel8841.so. devn-tulip.so, and 23557
We've corrected the “Returns” section of the entry for getopt() in the QNX Neutrino Library Reference. 24654
The entry for getsockopt() in the QNX Neutrino Library Reference now has a section on setting keepalive timing. 25719
InterruptAttach() currently ignores the size argument. 25754
The documentation for tftp now mentions that remote file names must start with a slash. 26065
The exec*() and spawn*() functions can give an error of ETXTBSY if the text file that you're trying to execute is busy (e.g. it might be open for writing). 27277
The documentation for devf-generic now describes the output produced if you specify the -v option. 27874
The documentation for if_up now describes the -l option. 28321
The kernel now reaps zombies, even if you run a foreground process that doesn't exit in your OS image's startup script. However, running a foreground process that never exits still prevents the rest of the script from being executed. 29186
We've corrected the information about the trace events for MsgSendv() in the System Analysis Toolkit User's Guide. 29638
The High Availability Framework Developer's Guide now explains how to get a handle for a global entity. 29655
The documentation for syslogd now explains when the log entry includes a host name, and when it includes nto (indicating the local host). 29965
The System Analysis Toolkit User's Guide now describes the NTO_TRACE_COMM_* events. 38156
The documentation now says that the off argument to mmap() can be a physical address (e.g. for mapping a device's registers in a resource manager). 38626
We've updated the description of the statvfs structure in the documentation for fstatvfs() and statvfs(). 38811
The documentation for seekdir() now says that if you call rewinddir() on the directory stream, or if you close and reopen the directory, an offset previously returned by telldir() becomes invalid. 39492
The entry for fs-cifs in the Utilities Reference now includes the -o option, which you can use to specify various options concerning the handling of passwords, reconnection timeouts, and the handling of 64-bit filesystems. 39884
The Adaptive Partitioning User's Guide now describes how to launch programs in /etc/rc.d/rc.local, specifying the partitions in which they're to run. 40816
The Customizing Image Startup Programs chapter of Building Embedded Systems now describes callout_io_map() and callout_memory_map(). We've also corrected the synopsis of the indirect forms of these callouts. 40834
We've expanded the description of the arguments to the ttc() function in the documentation for the Character DDK. 41780
The Character DDK documentation now describes how io-char handles read and write requests without blocking the hardware. 45335
We've corrected the server.c part of the example for MsgDeliverEvent() so that it handles the IO_CONNECT message sent because of the usage of name_attach(). 51181
We've documented the return codes for gf_dev_register_thread(). 54930
The Backtraces technote now mentions that if you're using gdb on a program that uses libbacktrace, you need to tell gdb to pass SIGSEGV and SIGBUS signals to the program for correct operation. 55283
The Utilities Reference now explains how the DHCP settings you make in phlip are passed to dhcp.client. 55975
The documentation for mallopt() now includes more information about the MALLOC_FREE_CHECK, MALLOC_STATS, and MALLOC_VERIFY_ON options. 58401
We've expanded the list of errors that the spawn*() functions can give. 59186
In the topic “Importing gcc code coverage data from a project” in the IDE User's Guide, references to .da were updated to .gcda to reflect the gcc files that the IDE currently supports. 59432
The Utilities Reference now includes an entry for tsort. 59588
We've corrected the buildfile that starts TCP/IP with a network filesystem, in the Sample Buildfiles appendix of Building Embedded Systems. 61535
You can't call Photon functions from a signal handler; we've corrected the example in the documentation for PgShmemCleanup(). 63797
We've expanded the description of tracelogger's modes of operation, in the Utilities Reference and in the System Analysis Toolkit User's Guide. 64536
Many reference links in the IDE User's Guide were updated to go to more specific places in the guide. 64550
The Using the Photon microGUI chapter of the Neutrino User's Guide and the entry for pwmopts in the Utilities Reference now correctly refer to wframe_updated.so, instead of wframe_update.so. 65310
If you use the tail utility with both -c and the deprecated -l option, the order in which you specify the options is important. For more information, see the Utilities Reference. 65660
The Utilities Reference now includes entries for the SSH suite (scp, sftp, sftp-server, ssh, ssh-add, ssh-agent, ssh-keygen, ssh-keyscan, ssh-keysign, and sshd) and its configuration files (/etc/moduli, /etc/ssh/sshd_config, and /etc/ssh/ssh_config). 65699
The IP Tunneling (Generic Routing Encapsulation) technote now mentions that you need to run io-pkt-v4-hc or io-pkt-v6-hc in order to use GRE. 65815
The shm_open() function indicates an error of EINVAL if an underlying call to resmgr_open_bind() fails. 66150
VMWare sessions default to resolution 1024x768 with color depth argb8888. This setting is forced in the enumerator file located in /etc/system/enum/devices/graphics. 66154
We've corrected the information in the Audio Developer's Guide about what snd_pcm_plugin_write() returns. 66265
The documentation for pthread_cond_timedwait() now recommends that you use CLOCK_MONOTONIC, which isn't affected by changes to the system time that way that CLOCK_REALTIME is. The documentation for sigtimedwait() now mentions that this function uses CLOCK_MONOTONIC to measure the time interval. 66425
It's safe to call tti() from an interrupt handler, but it isn't safe to call ttc() from one; we've updated the documentation for the Character DDK. 66797
The Sample Buildfiles appendix in Building Embedded Systems now describes how to use ldd, objdump, and the DL_DEBUG environment variable to determine which shared objects to include in an OS image. 66845
The documentation now mentions that the malloc implementation uses signed, 32-bit integers to represent the size internally, and hence you can't allocate more than 2 GB in a single allocation. If the size is greater than 2 GB, functions such as calloc(), malloc(), and realloc() indicate an error of ENOMEM. 67335
The documentation now explains that native io-pkt and ported NetBSD drivers don't put entries into the /dev/io-net namespace, so a waitfor command for such an entry won't work properly in buildfiles or scripts. Use if_up -p instead; for example, instead of waitfor /dev/io-net/en0, use if_up -p en0. 67527
The entry for PtTreeChangeItem() in the Widget Reference now points out that this function can return a pointer to a new item that your application must maintain. 67655
The section on updating disk drivers in the Controlling How Neutrino Starts chapter of the QNX Neutrino User's Guide now includes instructions for building a new boot image if you're using the Power-Safe (fs-qnx6.so) filesystem. 67841
The entry for qconn in the Utilities Reference now describes the -v option, which makes qconn display its version number and then exit. 68036
The documentation for devc-serpci driver now says that the board must use PCI I/O space for the registers, and the ports must be contiguous in memory. 68128
The documentation for unzip and zip now includes the -P option, which you can use to specify a password to use to encrypt and unencrypt archive entries. (Ticket ID 88241) 68246
In the documentation for the IDE User's Guide, the Finding Memory Errors chapter was renamed to “Analyzing Memory Usage and Finding Memory Errors.” In addition, the topics in this chapter were reordered and modified for technical accuracy; many of the topic titles were renamed as well. 68303
We've corrected the example for the mkifs raw attribute: you don't need to specify this attribute in order to keep PhAB resources in an executable. 68428
We've added more information about the -u option for devf-generic. 68507
The documentation now mentions that if you call MsgSendPulse() with a priority of -1, the function uses the calling thread's priority as the pulse's priority. 68542
We've corrected the syntax for applypatch in the Utilities Reference. 68568
We've corrected some numbers that should have been 2nn, not 2nn in the documentation for random() and srandom(). 68648
We've corrected the diagram of thread states in the QNX Neutrino Microkernel chapter of the System Architecture guide. 68711
We've updated the options in the entry for devi-microtouch in the Utilities Reference. 68712
The entries for devg-svga.so and devg-vesabios.so in the Utilities Reference now advise that these are “safe”, generic graphics drivers and that they can negatively impact the timing of a system and affect realtime operations. We recommended you use an accelerated driver instead, if at all possible. 68713
We've clarified some of the comparisons between Photon and the Graphics Framework in the Advanced Graphics Developer's Guide. 68724
We've added the -h and -U options to the documentation for telnetd. 68727
The syntax for mkdir isn't the same on Windows as on QNX Neutrino. 68912
The default value of Pt_ARG_CBOX_BUTTON_WIDTH is 13, not 17; we've corrected the documentation for PtComboBox. 68983
If you use MsgSendPulse() to send a pulse across Qnet, the calling thread is blocked (STATE_NET_SEND) while the pulse is delivered to the local Qnet manager, which transmits it to the remote Qnet. The remote Qnet does a MsgSendPulse() on behalf of the caller, and the return value is transmitted back, at which point the calling thread is unblocked. 69256
Before calling bind() on an AF_INET socket, set the af_family member of the sockaddr structure to AF_INET. Up until QNX Neutrino 6.4.0, a value of 0 was accepted and assumed to be this value. 69460
If you call SyncMutexEvent() with a NULL event, the function deletes any existing event registration. 69639
The section in the Neutrino Programmer's Guide on the /proc filesystem now points out that if you ask for information about a specific thread, and that thread no longer exists, the process manager gives you information about the thread with the next higher thread ID. If all the process's threads have exited, the thread ID in the procfs_status structure is set to 0. 69739
The IDE was updated to store its files in the following locations: $HOME/ide-4.7-workspace is the default location, $HOME/ide-4.7-workspace.metadata for the .metadata folder (for personal settings), and $HOME/ide-4.7-workspace/.metadata/.log for the error log. 69757
In the QNX Momentics IDE, the Memory Events, Memory, Memory Backtrace, and Memory Problems views are now independent views that aren't included in the Sessions view. 69771
In the IDE User's Guide, the documentation in the Analyzing Memory Usage and Finding Errors chapter was updated to describe the new support for grouping, search, and column preferences in the Memory Analysis Tooling views. 69772
The Understanding System Limits chapter of the QNX Neutrino User's Guide now includes a section on the limits for Embedded Transaction Filesystems (ETFS). 69786
The description in Building Embedded Systems of the qtime field of the system page now recommends that if the clock on your system drifts, you should make sure that the startup code specifies the correct clock frequency. 69812
MsgSendPulse() indicates an error of EINVAL if the priority is invalid (e.g. 0). 69851
We've corrected the name of the memopts option in the documentation for devg-flat.so. 70133
We've corrected the descriptions of snd_pcm_capture_flush() and snd_pcm_playback_flush() in the Audio Developer's Guide. Don't mix and match plugin- and nonplugin-aware functions in your application, or you may get undefined behavior and misleading results. 70196
The documentation for mem_offset() now emphasizes that if the offset is greater than INT_MAX, mem_offset() gives an error of EOVERFLOW. Use mem_offset64() if this happens. 70207
The Process Manager chapter of the System Architecture guide now includes a section on locking and superlocking memory. 70211
The Clocks, Timers, and Getting a Kick Every So Often chapter of Getting Started with QNX Neutrino referred to pthread_mutex_timedlock() in the section on CLOCK_MONOTONIC, but this function uses only CLOCK_REALTIME. This section now refers to timer_create(), which lets you choose the clock source. 70328
The documentation for hogs now points out that the numbers reported are approximate; for precise data, use tracelogger and the System Analysis Toolkit. 70390
Before using the CACHE_FLUSH() or CACHE_INVAL() macros on ARM and MIPS platforms, a thread must call ThreadCtl( _NTO_TCTL_IO, 0 ); in order to obtain I/O privileges. 70432
The documentation for diskboot now includes the -f, -i, and -R options. 70502
We've corrected the lists of options and field names in the documentation for ps. 70527
The System Analysis Toolkit User's Guide and the documentation for tracelogger now warn you that if the clocks on a multicore system aren't synchronized, then the timestamps will be inconsistent, and the IDE's System Profiler will be unable to load the data. 70573
The pthread_mutex_lock() function's behavior when you try to lock a mutex that you already own depends on the type of the mutex, as described in the documentation for pthread_mutexattr_settype(). Note that pthread_mutexattr_settype() provides a more portable way to make a mutex recursive than pthread_mutexattr_setrecursive() does. 70613
The devn-asix.so driver now supports the AX88178 chip. 70621
The documentation for InterruptDetach() now mentions that the thread that detaches an interrupt handler must be in the same process as the thread that attached it, or else the function indicates an error of EPERM. 70642
The Multicore Processing chapter of the System Architecture guide now explains why a multicore system with n processors might not always run the n threads with the highest priorities. 70688
We've documented munlockall(), which was implemented in the QNX Neutrino Core OS 6.3.2. 70697
The documentation for pthread_mutexattr_getprotocol() and pthread_mutexattr_setprotocol() now describes the PTHREAD_PRIO_NONE protocol instead of saying that it isn't supported. 70783
The documentation for fcntl() now says that this function indicates an error of EINVAL if the cmd argument is invalid. 70784
The documentation for fseek() and fseeko() now describes the error codes that these functions can indicate. 70785
The freopen() function indicates an error of EBADF if the underlying file descriptor is invalid or doesn't support the requested mode change. 70786
We've corrected the prototype for timer_settime() in the QNX Neutrino Library Reference. 70787
We've corrected the prototype for mprotect() in the QNX Neutrino Library Reference. 70788
The QNX Neutrino Library Reference now has an entry for strerror_r(). 70789
We've corrected the prototype for pthread_cond_init() in the QNX Neutrino Library Reference. 70790
The QNX Neutrino Library Reference now includes an entry for llabs(). 70791
In QNX Neutrino 6.4.0 and later, unsetenv() returns 0 for success, or -1 if an error occurred. We've corrected the documentation. 70792
The documentation for getconf and sysconf() now describes _SC_TZNAME_MAX. 70875
We've corrected the description in the System Architecture guide of how a thread's effective priority is adjusted when it unlocks a mutex. 70960
The entries for aio_cancel(), aio_read(), and aio_write() in the QNX Neutrino Library Reference now include more details about these functions' behavior. 71049
We've documented the -A and -a options for traceroute, and the -I option for traceroute6. 71064
The documentation now states that the name of the runtime linker for MIPS is ldqnx.so.3, instead of ldqnx.so.2 (as it is for other targets). 71087
The MsgSend*() functions can indicate an error of EHOSTDOWN or EHOSTUNREACH if (for example) a send across Qnet failed. 71131
The SQE (Squelch Test Errors) counter isn't applicable to devnp-e1000.so and devnp-i82544.so, so they use it to track the number of internal Rx FIFO overruns. For more information, see the Utilities Reference. 71191
The documentation for sopen() now says that this function gives an error of EEXIST if the O_CREAT and O_EXCL flags are set, and the named file exists. 71265
POSIX doesn't define any errors for the sleep() functions. 71356
The devnp-bcm1250.so, devnp-e1000.so, devnp-mpc85xx.so, devnp-rtl8169.so, and devnp-speedo.so no longer accept the promiscuous option because promiscuous mode is controlled by the stack itself. To enable promiscuous mode, use a BIOCPROMISC ioctl() command; there's currently no way to do this from the command line. 71463
The default value for the MALLOC_ARENA_CACHE_MAXBLK environment variable is 12, not 8; we've corrected the documentation for malloc(). 71606
The feature to build a System Builder EFS Project type was temporarily removed from the IDE. However, the documentation was updated to include instructions about how to create an EFS project. Follow the workaround instructions found in the topic “Creating a new QNX System Builder project for an OS image” in the Building OS and Flash Images chapter in the IDE User's Guide. 71607
The documentation for mkdir and mkdir() now points out that not all filesystems (such as /dev/shmem, which isn't really a filesystem) support the creation of directories. 71638
The documentation for mq_open() and sem_open() now correctly describe how these functions handle the name argument. 71752
The documentation for the Graphics DDK now explains how you can download the source code for graphics drivers from Foundry27. 71811
The entry for gf_draw_spanlist() in the Advanced Graphics Developer's Guide now includes GF_ERR_PARM as a possible error code. 71972
The documentation now mentions that if you call MsgCurrent() on the rcvid pertaining to a low-priority client, then the priority boost given to your thread by a blocked high-priority thread can be lost. 72103
We've added some options that were missing from the entry for nfsd in the Utilities Reference. 72286
The entry for phs-to-escp2 in the Utilities Reference now lists the supported printer models. The phs-to-* utilities all send any error messages to slogger; some may also send messages to standard error. 72522
The Utilities Reference now includes an entry for startup-bios-32, the startup for PC-compatible systems with a BIOS, using 32-bit physical addresses. 72656
We've corrected the documentation for PhCancelDrag(); this function returns a non-negative number (≥ 0), not a positive number (> 0), to indicate success. 72724
We've corrected the description of MALLOC_MMAP_NOZERO. If this environment variable is nonzero, then when malloc() needs to expand the heap, it specifies the MAP_NOINIT flag when it calls mmap(); if the physical memory being mapped was previously unmapped with UNMAP_INIT_OPTIONAL, then the POSIX requirement that the memory be zeroed is relaxed. This environment variable has been supported on all architectures since QNX Neutrino 6.3.2. 72765
The entries for send(), sendmsg(), and sendto() in the QNX Neutrino Library Reference now describe the MSG_NOSIGNAL flag. 73177
In the “Using Mudflap” topic in the Analyzing Memory Usage and Finding Memory Errors chapter in the IDE User's Guide, we've added a warning regarding the use of Mudflap together with Memory Analysis. If your binary is instrumented with Mudflap, you can't run Memory Analysis on it because there'll be a conflict (trying to overload the same functions), and it will cause the program to crash. 73184
In the IDE, for the Memory Analysis Tool, the Trace Details and Statistics views were removed as well as the corresponding documentation. The functionality that these views provided is now available by using the filters on the Memory Events view. In addition, although you can continue to use libmalloc_g.so, use librcheck.so to obtain memory statistics. 73187
The Composition Manager Developer's Guide now directs you to the Graphics project on Foundry27 for the demonstration programs and tutorials. 73195
The entry for procnto* in the Utilities Reference now describes procnto-booke-smp. 73236
Various migration topics required updating in the documentation. For the latest migration information for this release, see the Migrating From Earlier Releases chapter in the IDE User's Guide. 73243
The QNX Neutrino User's Guide now says that devc-con-hid supports USB keyboards in text mode. 73776
We've corrected the documentation for wordexp(): word expansion isn't implemented, so this function returns WRDE_NOSYS; it doesn't set errno. 73799
The versions of zip and unzip that we ship are for x86 targets only. We don't ship them for Linux hosts. 73951
We've corrected the spelling and description of SHMCTL_HIGHUSAGE in the entries for shm_ctl() and shm_ctl_special() in the QNX Neutrino Library Reference. 74070
All x86 startups support a -B option, which you can use (if the BIOS is buggy) to prevent the startup from using the ACPI table to determine the number of logical CPUs. We've updated the entries for the startups in the Utilities Reference. 74159
The snd_pcm_plugin_read(), snd_pcm_plugin_write(), and snd_pcm_read() functions indicate an error of EIO if the channel isn't in the prepared or running state. 74217
The gf-calib option for specifying the layer index is -l (“el”), not -I. We've corrected the documentation. 74316
The alignment argument to posix_memalign() must be a multiple of size( void * ) that's also a power of 2; we've corrected the documentation. 74482
If you specify SHMCTL_PHYS in the flags to shm_ctl() or shm_ctl_special(), then paddr and size must be even multiples of the page size (sysconf(_SC_PAGE_SIZE)). 74502
We've added an entry for devb-mvSata to the Utilities Reference. 74531
The documentation for usbd_string() now points out that the returned string includes a terminating null character, and that the function returns NULL if the string table doesn't exist. 74659
The QNX Neutrino User's Guide and the documentation for mount now include examples of how to remount a filesystem as read-only and read-write. 74680
The documentation for fs-dos.so now says that the default value of the fat option is nonrmv. 74682
For regexec(), we've corrected the naming of the members from rm_sp and rm_ep to be rm_so and rm_eo respectively. 74884
The documentation for pci now warns that this utility is intended for debugging purposes; running it on an active system may cause some devices to hang. 74893
The documentation for mq_open() and mq_unlink() now mentions that these functions indicate an error of ENOSYS if neither mq nor mqueue is running. 74946
We've corrected the synopsis of putenv() in the QNX Neutrino Library Reference. 74976
We've corrected the name of the cfg_file_path option in the example in the documentation for enum-usb. 75071
The documentation for ham now notes that to stop the high-availability manager, you should use either the ham_stop() function or the hamctrl utility. 75108
For the topic “Interpreting Tree mode column information by profiling type”, in the IDE User's Guide, all references to Time were renamed to Deep Time, and Own Time were renamed to Shallow Time. 75189
We've corrected the synopsis for tell64() in its entry in the QNX Neutrino Library Reference. 75296
For the QNX Momentics IDE, the cheat sheet for the Application Profiler example was renamed from “QNX Example Application Profiling Project” to “Call Count and Sampling Profiling”, and a few other updates were made to the instructions to reflect changes made to the user interface. 75439
The documentation now emphasizes that it isn't safe to use floating-point operations in Interrupt Service Routines (ISRs) or signal handlers. 75691
The documentation for pthread_rwlock_rdlock() now warns that a deadlock can occur if a thread attempts to recursively acquire a read-write lock for reading, while another thread is trying to acquire it for writing. 75710
The documentation now points out that if inetd encounters any errors, it sends messages to slogger. 75717
Previously, if you started the IDE, it used your current qconfig choice as the default version of the OS. Now, the IDE uses the last installed version of the QNX software that appears in the Select Install list on the Global QNX Preferences page. 75898
In the Resource Managers chapter of Getting Started with QNX Neutrino, we've corrected the calculation of the size of the dirent structure so that it takes into account the null character at the end of the name. 76003
In the IDE User's Guide, information was added to the documentation to describe how to instrument a static library with code coverage enabled. You either have to instrument your binary with code coverage, or link with the code coverage library using the -lgcov option. 76035
We've added entries for fseeko64() and ftello64() to the QNX Neutrino Library Reference. 76186
The documentation for ham_action_handle() and ham_condition_handle() now explains how to get a handle for a global entity. 76201
In order to unlink a file, you need the appropriate permissions, but you don't have to be root. We've corrected the entry for unlink in the Utilities Reference. 76289
We've corrected the instructions for getting information about running drivers in the Working with Filesystems chapter of the QNX Neutrino User's Guide. 76375
The PRE_TARGET and POST_TARGET variables in a recursive makefile are lists of targets, not commands; we've corrected the description of them in the QNX Neutrino Programmer's Guide. 76394
We've corrected the names of SCHED_APS_SCHEDPOL_FREETIME_BY_RATIO and SCHED_APS_SEC_OFF in the Adaptive Partitioning User's Guide and the QNX Neutrino Library Reference. 76632
A VLAN tag is a 12-bit number, not a 16-bit number; we've corrected the documentation for ifconfig. 76665
An error of EINVAL from clock_settime() could mean that tv_sec is -1. We've updated the entry for clock_settime() in the QNX Neutrino Library Reference. 76708
The documentation for ThreadCreate() now says that you can use __tls() to get a pointer to thread local storage. 77345
The default USB stack is /dev/io-usb/io-usb, not /dev/usb. We've corrected the documentation for devh-usb.so, devb-umass, devh-touchintl.so, devh-egalax.so, devn-asix.so, devu-prn, devu-mouse, devu-kbd, and devh-microtouch.so. 77612