Home
Developer Resources
Technical Articles

QNX Technical Articles

QNX Software Development Platform 6.5.0 Service Pack 1: Release Notes

Date of this edition: January 7, 2021


Note: Changes to these notes since June 28, 2012 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 SP1.

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, 11.04, and 12.04 32- and 64-bit, or openSUSE 11.2

You must have already installed QNX SDP 6.5.0.

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, http://community.qnx.com/.


Note:
  • 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.
  • For information about using BSPs with QNX SDP 6.5.0, see 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.

Contents

Throughout this document, you may see reference numbers associated with particular issues, changes, etc. When corresponding with our Technical Support staff about a given issue, please quote the relevant reference number. You might also find the reference numbers useful for tracking issues as they become fixed.

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 SP1?

This service pack includes kernel memory management enhancements, io-pkt enhancements, new USB communication class support, updated support for the latest x86 platforms, Rob Krten's The QNX Neutrino Cookbook: Recipes for Programmers, and numerous bug fixes.

What's new: Kernel

  • The libstartup processor configuration data structures now allow CPU-specific configuration for page table encodings.

    On ARMv6 and ARMv7 processors, the MMU allows page tables to be cacheable. This can significantly improve performance because the hardware page table walk can look up page table entries in the L1 or L2 caches instead of accessing main memory.

    This behavior is processor-specific (some processors can look up only in the L2 cache, whereas others can look up in both L1 and L2). The libstartup CPU configuration data structures now enable the appropriate behavior for each CPU implementation.

    Because this behavior is implemented only by ARMv6 and ARMv7 processors, it's available only using ARMLE procnto-v6 and ARMLE-v7 procnto variants. (Ref# 81892, 142187)

  • When an application blocks as a result of a receive on an asynchronous or global channel, the transition to STATE_RECEIVE is now correctly logged. (Ref# 76574)

What's new: Startup

  • We've adopted the latest P4080 U-Boot, which supports 36-bit physical addresses. (Ref# 85415, 142206)
  • In order to make startup faster and reduce jitter, nanospin_calibrate() now tries to read the calibration data from values stored in the system page. The startup for some boards includes an -o option that you can use to specify the calibration data (100 loop time and overhead) to store in the system page. (Ref# 88926, 142221,156183)

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)
  • 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:
    pci-bios=pci-bios-v2

What's new: Core networking

dhcp.client
This utility now:
  • runs an optional script, /etc/dhcp/dhcp-check, that takes the environment as dhcp-up does, but returns a value indicating if the configuration is acceptable (0 means OK; other values result in a DHCPDECLINE) (Ref# 107211, 142270)
  • has an -H option that indicates that you don't want to apply the hostname locally. This could be useful in cases where you use the -h option to identify the client, and you want to apply a different hostname locally, or you simply wish to ignore the server hostname assignment. (Ticket ID 91459) (Ref# 107213, 142271)
gns
We've corrected a memory leak that occurred when a message buffer was allocated but never freed. (Ref# 78242, 142156)
io-pkt*
  • The io-pkt* manager now supports the ALTQ feature. You can use pfctl to manage it. (Ref# 107832, 142280)
  • There's a new -P option that you can use to specify the priority to use for io-pkt's main thread. The default is 21. (Ref# 135755, 159504)
  • The io-pkt* manager now supports TUN/TAP. To create the interfaces, use ifconfig:
    ifconfig tun0 create
    ifconfig tap0 create
        

    For more information, see the NetBSD documentation:

    (Ref# 101145, 107307)

  • The TCP/IP module supports the following new options:
    pfil_ipsec
    (io-pkt-v4-hc and io-pkt-v6-hc only) Run packet filters on packets before encryption. The default is to do it after encryption. (Ref# 74025, 147353, 154855)
    timer_pulse_prio=priority
    In order to improve performance, io-pkt now uses a timer pulse instead of a timer interrupt. This option specifies the priority to use for the timer pulse. The default is 21. (Ref# 81324, 101841, 154965, 155100)
lsm-autoip.so
  • By default, AutoIP no longer uses routes to direct the link-local network to use the routable IP address of the interface, nor does it route by default to the link-local IP address. If the old routing behavior is necessary, use the old option. Using routing this way was problematic depending on the peer configuration, as well as when multiple interfaces were present. The force option now has no effect unless you've also specified old. (Ref# 77436, 77649, 77122, 107201, 142269, 153193; Ticket ID 90966)
  • The lsm-autoip.so module no longer selects the same IP address every time after the first challenge. (Ref# 150959)
  • This module is no longer loaded if the selected interface isn't present. (Ref# 150968)
pf
The packet filter now supports IPv6 fragments. (Ref# 147358; Ticket ID 92278)

What's new: Filesystems

Flash filesystems
New: We've deprecated the DCMD_F3S_LOCKDOWN and DCMD_F3S_ULOCKDOWN devctl commands. Use DCMD_F3S_LOCKSSR, DCMD_F3S_READSSR, and DCMD_F3S_WRITESSR instead.
fs-dos.so
This filesystem now supports a DCMD_FSYS_LABEL_RAW devctl() command that you can use to get the raw volume label before any character conversions are done. (Ref# 125315, 142318)
fs-etfs-ram
We now ship an ARMLE-v7 version of fs-etfs-ram. (Ref# 102375, 142260)
fs-nfs2
New: This filesystem doesn't support files larger than 2 GB. This is a limitation of the NFS2 protocol, not of the implementation. (Ref# 39060, J473719)
fs-nt.so
This filesystem now supports NTFS partitions on devices with a disk sector size that's greater than 512 bytes. (Ref# 149806)
Power-Safe (fs-qnx6.so) filesystem
  • You can use mkqnx6fs's new -v option to specify a volume name of up to 16 characters. (Ref# 95589, 142239, 152288)

    Note: You can't specify both a UUID and a volume name.

  • There's now an alignio option that makes the filesystem try to align all reads and writes in sizes and offsets of the file system block size. (Ref# 110977, 142294)

What's new: Graphics

Advanced Graphics

libimg
This library now supports the invocation of the set_value_f() callout when progressive JPEGs are loaded via img_load*(). (Ref# 100825, 142253)

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.

Photon microGUI

We're deprecating the Photon microGUI and will remove it in a future release.

phuser
We've fixed a security vulnerability in the phuser utility that could have allowed a normal user to gain root access. This issue was reported by an anonymous researcher working with the SecuriTeam Secure Disclosure project. (Ref# 126546, 142322)

What's new: Libraries and header files

ChannelCreate()
New: More than one channel in a process can now have one or both of _NTO_CHF_COID_DISCONNECT and _NTO_CHF_THREAD_DEATH set. (Ref# 83053, J1579013)
dladdr()
This function now provides the full path (instead of the base name) of the object, in order to match the behavior on other OSs. (Ref# 80928, 159484)
fp_rounding()
This function now sets the L bit and the mask so that older processors (that don't implement the L bit) act as though the mask were set. (Ref# 81314, 142185; Ticket ID 00104989)
InterruptLock(), InterruptUnlock()
New: The swp instruction has been deprecated by ARM and is no longer supported in many newer ARM cores. In order to support new cores properly, you need to use the ldrex and strex opcodes. Accordingly we've changed some of the inline code in <neutrino.h> for ARM. (Ref# 79521)

Note: The 6.5.0 versions of InterruptLock() and InterruptUnlock() aren't compatible with 6.5.0 SP1. If you use these functions, you must rebuild your programs in order to update the inline code.

libc.so
We've corrected an error in the handling of DT_FINI_ARRAY:
  • If you manually defined DT_FINI_ARRAY, the first destructor in the DT_FINI_ARRAY list wasn't called. The effect of this omission depended on what that destructor was intended to do. On all platforms except ARMLE-v7, this is the only case in which your software would have been affected.
  • On ARMLE-v7, the following also occurred:
    • DT_FINI_ARRAY was generated for any initialized C++ object. Depending on the exact ordering, one destructor wasn't called (most probably that of the first object to get initialized).
    • If your application called dlopen() for a C++ shared object with global C++ objects and then closed it by calling dlclose(), the process would have crashed when it exited. After the dlclose(), the destructor wasn't called but remained registered in the __aeabi_atexit array. When the application exited, an attempt was made to call (the long gone) function, resulting most probably in a SIGSEGV or other odd behavior (e.g., if the virtual address got occupied by something else after the above mentioned dlclose()).
    • If you used __attribute__((destructor)), the first destructor in the array wouldn't be called.

(Ref# 77236, 142152)

libps.a
We now provide a PIC version of this library. (Ref# 80433, 142176)
MALLOC_BAND_CONFIG_STR
New: We've changed the band configuration from:
MALLOC_BAND_CONFIG_STR="8:16,32,0:24,32,0:32,32,0:48,24,0:64,24,0:80,24,0:96,16,0:128,8,0"
  

to:

MALLOC_BAND_CONFIG_STR="8:12,32,0:20,32,0:28,32,0:44,24,0:60,24,0:76,24,0:92,16,0:124,8,0"
  

The bands are now four bytes smaller. (Ref# 100244, 146824)

MsgCurrent()
Calling MsgCurrent() on the rcvid pertaining to a low-priority client no longer causes a priority boost given to your thread by a blocked high-priority thread to be lost. (Ref# 50399, 142142, 151626)
nanospin_calibrate()
In order to make startup faster and reduce jitter, nanospin_calibrate() now tries to read the calibration data from values stored in the system page. The startup for some boards includes an -o option that you can use to specify the calibration data (100 loop time and overhead) to store in the system page. (Ref# 88926, 142221,156183)
<sys/pps.h>
We now ship this header file. (Ref# 78433; Ticket ID 91172)
pthread_mutex_timedlock()
This function's behavior is now compliant with POSIX. (Ref# 111650, 142296)
TimerTimeout()
This function no longer includes internally used bits in the flags that it returns. (Ref# 82818, 142191)

What's new: Drivers

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

New drivers:

deva-ctrl-usb.so
Sound driver for USB audio devices (Ref# 106691, 160998)

Other changes include:

deva-ctrl-intel_hda.so
The Intel HDA Audio driver now supports the Cirrus CS4207 Audio codec. (Ref# 90047, 142225)

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

devb-eide
This driver now recognizes drives that are larger than 127 GB. (Ref# 87717, 142219)
devb-loopback
  • This driver is now able to mount images that are larger than 2 GB. (Ref# 79548, 142168; Ticket ID 91175)
  • The following options are new:
    heads=num
    Specify the number of heads (default 1).
    tracks=num
    Specify the number of sectors per track (default 1).

    (Ref# 133385, 159492)

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

devc-serusb
This driver now supports these devices:
  • Cinterion AHx module (Ref# 124687, 142316)
  • Sierra Wireless AR8550 3G dongle (Ref# 117569, 142488)

as well as the following features:

  • CDC ACM; the driver automatically detects ACM devices, based on the USB Class code (Ref# 68333, 80267, 142175)
  • a DCMD_CHR_RESET devctl() command that resets the device (but not all drivers use this command) (Ref# 80267, 142175)
  • a drt option that lets you specify the data-ready timeout (Ref# 116850, 142306)

What's new: Flash filesystem drivers (devf-*)

devf-generic
The following options are new:
  • -D — enable automatic detection of ECC mode.
  • -x — enable software ECC mode.

Note: Don't mix ECC-enabled partitions and ECC-disabled partitions; the driver doesn't support this.

The arguments to the -t option have changed. You can now specify the high water, low water, and maximum number of threads for the driver's thread pool.

We've documented the following options:

  • -A — when registering the path names for the partitions with resmgr_attach(), use the _RESMGR_FLAG_AFTER flag to force the path to be resolved after others with the same pathname at the same mountpoint.
  • -L limit — the number of retries to make if the physical flash erase functions for a unit fails. The default is 0.

(Ref# 154800)

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

We've documented the following drivers:

devg-lx800.so
Graphics driver for AMD Geode LX chipsets (Ref# 100760)
devg-unichrome.so
Graphics driver for VIA Unichrome chipsets (Ref# 100760)

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

devh-usb.so
This driver now has a priority option that you can use to change the priority of the removal thread. (Ref# 94754, 142236; Ticket ID 00107965)
hidd_device_reset()
This function gives you a way to reset the device from a program. (Ref# 99210, 142245)

Note: Use this function with caution if the HID device is part of a composite USB device. Issuing a device reset causes a low-level BUS reset for the entire device, which could potentially cause problems with drivers managing the other interfaces of a composite device.

hidd_get_interface_string()
A new function that you can use to retrieve the HID interface descriptor string. (Ref# 87005, 142213)
hidd_send_report()
This function now reports an ETIMEDOUT error when a device times out. (Ref# 87204, 142216)

What's new: Input device drivers (devi-*)

devi-hid
This driver can now switch to 4-point calibration from the default 3-point. (Ref# 118340, 142309)

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

The new drivers include:

devnp-ecm.so
Driver for the CDC ECM USB Ethernet control module (Ref# 74350, 142146, 154151)
devnp-ncm.so
Driver for the USB CDC NCM network control module (Ref# 110669, 142479, 154151)

Other changes include:

devn-asix.so
This driver now supports AX88172A and AX88772B USB Ethernet dongles. (Ref# 69383, 133449, 159418, 160786, 160936)
devnp-e1000.so
The following options are new:
int_mod=N
The interrupt moderation value. The default is 20000 interrupts/sec; a value of zero disables interrupt moderation.
force_link
Force the link speed/duplex. The default is to autonegotiate the advertised speed/duplex.
max_read=N
The maximum PCIe read request size. N must be 128, 256, 512, 1024, 2048, or 4096 bytes.
tx_reap=N
The maximum number of transmit descriptors to reap. The default is 64.

Other changes include:

  • The default number of receive descriptors is now 512, and the maximum is 4096.
  • The default number of transmit descriptors is now 4096, and so is the maximum.

(Ref# 137666, 146600, 159635, 160941)

devn-fd.so
We now ship an ARMv7 version of this driver. (Ref# 93951, 142233)
devn-pegasus.so
  • This driver now supports the busnum and devnum options. (Ref# 79524, 142165)
  • Removing the Pegasus dongle from a hub no longer causes io-pkt-v4 to spin. (Ref# 82861, 142192; Ticket ID 00105359)
devnp-ath.so, devnp-bcm43xx.so, devnp-ral.so, devnp-rum.so
The documentation now says 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)
devnp-e1000.so
This driver now supports Intel 82579 chipsets. (Ref# 86807, 142211)
devnp-shim.so
By default, this driver now copies each received packet in the shim layer as it's passed from the driver to io-pkt. This means that the driver and shim can now be removed via ifconfig enX destroy or by physical removal of the device (if supported by the driver), without causing the shim to crash. This driver has a new shimrxcopy option that controls this feature. (Ref# 116999, 142487)

If you're interested in writing a new network driver, ask your sales representative for the Writing Native Network Drivers for io-pkt technote as well as some sample driver code. Both are available free of charge. (Ref# 88626)

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

devu-ehci.so
New options:
ports=port:port...
Set the enumeration order of each root port. Use colons to separate the port numbers. (Ref# 101449, 142470; Ticket ID 91910)
memory=name
Use the specified typed memory for DMA descriptors (endpoint descriptor, transfer descriptors, and so on). (Ref# 73666, 142145, 154304)
devu-ohci.so
New options:
isoptd=num
Restrict the number of isoch frames each TD can transfer (default 8).
memory=name
Use the specified typed memory for DMA descriptors (endpoint descriptor, transfer descriptors, and so on).

(Ref# 73666, 142145, 154304)

What's new: Documentation

The QNX Neutrino Cookbook: Recipes for Programmers
QNX Software Systems has bought the rights to this book by Rob Krten, and we've updated it for QNX SDP 6.5.0 SP1. (Ref# 98337)
QNX Neutrino Library Reference
  • We've corrected the description of mem_offset() and mem_offset64(). You must always specify NOFD for the fd argument; to get the offset and length of a mapped typed memory block, use posix_mem_offset() or posix_mem_offset64(). (Ref# 160360)
  • The documentation for mq_open() and sem_open() now mentions 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)
  • The entry for munmap() in the Neutrino Library Reference now says that you can munmap() just a part of an area mapped with mmap(). (Ref# 80441)
  • The entry for pci_attach_device() now describes the PCI_USE_MSI and PCI_USE_MSIX and includes an example that shows how you can detect whether or not a device supports MSI or MSI-X. (Ref# 103614, 162456; Case 00104937, 00110660)

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

Utilities Reference
  • The documentation now uses the correct name for the bzcat command. (Ref# 77634)
  • The entry for io-audio now describes the following card options that apply to all sound drivers:
    unit=number
    The card number to mount the driver as.
    dindex=number
    The device number that additional following options apply to.
    play_name=name
    The symbolic name to assign to the PCM playback device.
    cap_name=name
    The symbolic name to assign to the PCM capture device.

    as well as the following memory (-m) options:

    pool_size=kbytes
    The size of the DMA memory pool to create, in KB.
    pool_name=string
    The name of a shared memory object to map and use as DMA memory pool. This object must be physically contiguous memory.

    and the following global (-o) options:

    intr_thread_prio=priority
    Set the priority of the interrupt service threads. The default is 50.
    sw_mixer_rate=[FAHQ|FA|Lvalue]
    Set the method of selecting the sampling frequency used by the PCM software mixing device if the underlying hardware device supports multiple rates.
    sw_mixer_samples=num
    Adjust the fragment size used by the software mixer to something other than the default of 2048 samples.

    (Ref# 163533)

  • The entry for io-display no longer says that io-display supports PAL8 (the underlying Advanced Graphics framework doesn't support it). (Ref# 77854)
  • The entry for lsm-pf-*.so now says that you need to specify which version of this module that you want io-pkt-* to load. (Ref# 78737)

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

Technotes
We've corrected the rtinstall script in the technote on creating a runtime kit, so that it exits if you try to install the runtime on a disk that already has a Power-Safe (fs-qnx6.so) filesystem partition (type 179) on it. (Ref# 78567, 142158)

What's new: I/O devices

io-audio
There's a new global data_thread_prio option that you can use to specify the priority of the software mixer thread. The default is 25. (Ref# 136343, 159648)
io-usb
New options:
-r num
Set the number of enumeration retries (default 3).
-t memory=name
Set the typed-memory name (default none, using sysram).

(Ref# 73666, 142145, 154304)

What's new: QNX Database (QDB)

New functions:

qdb_column_decltype()
Retrieve declared type for a column in a result set
qdb_interrupt()
Interrupt a long-running query
qdb_stmt_decltypes()
Retrieve declared column types for a prepared statement

Other changes include:

qdb_column_name()
We've corrected the synopsis.
qdb_setoption()
New option: QDB_OPTION_COLUMN_DECLTYPES

(Ref# 87028, 150556)

What's new: Security

  • We've fixed a security vulnerability in the phuser utility that could have allowed a normal user to gain root access. This issue was reported by an anonymous researcher working with the SecuriTeam Secure Disclosure project. (Ref# 126546, 142322)
  • We've addressed a potential security vulnerability with the LD_DEBUG_OUTPUT environment variable that could have been exploited to form a security attack. This issue was originally reported to QNX Software Systems by Tim Brown, Nth Dimension.

    You can use LD_DEBUG_OUTPUT to specify the name of the file where the dynamic linker writes its output. The vulnerability occurs if you use LD_DEBUG and LD_DEBUG_OUTPUT with a setuid binary:

    • If the file specified by LD_DEBUG_OUTPUT exists, it's overwritten with the debug output, and the existing permissions are preserved.
    • If the file doesn't exist, then a new file is created, owned by root and the user, and writable by both.

    This could be exploited in different ways, including creating new files in arbitrary locations. We've addressed this issue by disabling the use of LD_DEBUG_OUTPUT with setuid binaries. (Ref# 84330, 85746, 90385, 142204, 142217)

Using the VMware image of a QNX Neutrino runtime system

We provide a VMware image of a QNX Neutrino 6.5.0 SP1 runtime system in target/650SP1-VM.tar on the installation DVD; it's also available in the Download area of our website.

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 target650SP1-VM.tar file, and then extract the 650SP1-VM folder to some location on your hard drive (e.g., My Documents).
  2. To launch, either:
    • Start VMware Player, browse to where you saved the 650SP1-VM folder, and then choose 650SP1-VM.vmx.

      Or:

    • Navigate to where you saved the 650SP1-VM folder, and then double-click the VMware configuration file, 650SP1-VM.vmx.
  3. 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, http://community.qnx.com/.

What's new: Compiler, tools, and utilities

enum-usb
This utility now supports:
  • devices that don't have an interface 0 (Ref# 81195, 142183)
  • Cruzer Blade USB sticks (Ref# 92272, 142228)
  • Philips GoGear Muse in both MSC (umass) and MTP (PFS) modes (Ref# 111905, 142298)
  • HTC Droid Incredible devices (Ref# 113846, 142481; Ticket ID 92104)

The configuration file for enum-usb now supports a NoMSString option. Some devices don't support Microsoft-defined USB descriptors and will go haywire if queried for them. This option prevents queries from being made for these descriptors. (Ref# 92272, 103720, 142228)

fdisk
  • This utility now supports logical partitions and multiple partitions of the same type. (Ref# 57864, 142143)
  • When you use add partitions, the start and end LBA addresses are now aligned on cylinder boundaries. (Ref# 108132, 142283)
  • We've corrected some off-by-one errors in fdisk's interactive mode. Note that you can no longer edit the start and end cylinders of an extended partition. (Ref# 108164, 142284)
pidin
  • New: The -M option now works correctly. (Ref# 93157, J144209)
  • If a shared object contains text relocations, pidin mem now displays the correct name (appended by “!”), instead of zero. (Ref# 85530, 142208)
  • The pidin -F "%M" command no longer crashes. We've also improved the way that this format code and the -M memory options work. (Ref# 93169, 142231)
slogger
New options:
  • -m — use CLOCK_MONOTONIC instead of the default CLOCK_REALTIME as the clock source.
  • -u event_id — generate a user-string trace event, with the given event ID, for all messages received.
(Ref# 77106, 77332, 150729)
tar
New: This utility no longer fails when you create an archive on a NOR flash filesystem. (Ref# 77866, J169731)

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

The following items will be removed from a future 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 SP1 doesn't include any ARMv7 binaries.

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 following items, and we plan to remove them from a future release:

  • New: fs-cd.so; use fs-udf.so instead.
  • the Photon microGUI
  • New: Graphics Framework
  • MIPS targets
  • SH4 targets
  • New: libmalloc and libmalloc_g; replaced by librcheck
  • lsm-autoip.so (to be replaced)
  • the CMU version of SNMP that's currently included in QNX SDP. We recommend that you use NuDesign's SNMP instead. For more information, see the Partners area of our website. (Ref# 70524)
  • graphics drivers:
    • 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)

    (Ref# 77562)

    We've deprecated the graphics drivers for chipsets that have been out of production for five years. Where possible, the source code for these graphics drivers will be posted on Foundry27.

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 SP1 are:

  • asynchronous messaging

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

The memory manager's backward-compatibility mode

New:

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:

b
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.
~b
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 SP1 contains known issues in these areas:


Note: We're actively investigating all known issues.

Known issues: Installing and uninstalling

  • Don't install the x86-only version of 6.5.0 SP1 on the full version of 6.5.0, or the full version of SP1 on the x86-only version of 6.5.0, or else you'll end up with an inconsistent set of software.
  • The command-line prompt doesn't return after a successful uninstallation on Linux. (Ref# 161467)

    Workaround: Press Ctrl-C.

  • 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 in QNX SDP 6.5.0, if you're installing a QNX Aviage product on QNX Neutrino 6.5.0 or later, then 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 FilesQNX Software Systemslicense 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:
    Windows
    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:QNX632host) 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.

    Linux
    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 FilesQNX Software Systemsbinqnxactivate -a
      

Known issues: Kernel

procnto
  • New: The procnto image filesystem doesn't support combined seeks and reads. (Ref# J2686437)
  • User-specified band configurations in the standard memory allocator may corrupt your application's memory, and may cause the application to crash. (Ref# 77776, J169726, 77811, J169727)

    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.

  • 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 analyzed 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, J167989, 62212, J168503, 75921, J169537)
  • If you debug a statically linked executable on MIPS targets, the kernel might crash. (Ref# 76318, 169571)

    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, J382440, 74700; Ticket ID 47811; Case# 00100888)
  • 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, J382313)

    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, J168610)
  • 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, J166303)
  • 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, J166330, 29341, J166681)
  • 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, J166762)

    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, J166702, 30045, 62483, J382313)
  • 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, J382252)
  • 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, J166702, 29380, J166687)

  • 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, J169169)
procnto-smp
  • We've observed an issue in the x86 SMP kernel where a ready thread sometimes won't run on an idling CPU:
    • On interrupt entry, if the CPU is halted (because the idle thread executed a halt instruction), then the interrupted context could be mistakenly identified as “kernel” instead of “user.” This isn't a result of the halt itself, but rather that idle thread is making a kernel call to call halt.
    • On interrupt exit, the behavior depends on the interrupted context, whether another CPU holds a kernel lock, etc. Under certain conditions, this issue could cause either the rescheduling not to be done and the idle thread to run until the next interrupt, or the idle thread to attempt to reacquire the kernel (with priority 0) instead of “force kernel” (with the highest priority).

    (Ref# 156062, J383827)

    Workaround: Specify the -h option for procnto-smp, to disable CPU halting in the idle thread.

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

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

  • We've observed some rare and sporadic kernel crashes on PPC Booke SMP systems. (Ref# 163317, J181759)

New: The QNX Neutrino User's Guide should say that the limit on system RAM on x86 targets is 32 GB. (Ref# 1564595)

Known issues: Libraries and header files

attexit()
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)
dlopen()
New: An empty entry in LD_LIBRARY_PATH (i.e., a colon that isn't followed by a path) is interpreted as search the current directory, but a colon at the end of the string is currently ignored. (Ref# J2499532)

Workaround: If you want the current directory to be searched at the end of LD_LIBRARY_PATH, end the value with a colon followed by a period (:.).

fdatasync(), fsync()
Calls to these functions on a PPS file always fail with errno set to 22 (invalid argument). (Ref# 77943, J169741)
fork()
  • New: This function gives a misleading error code (EINTR if the calling process's priority is above the allowable range. (Ref# J1601362)
  • Unnamed semaphores aren't inherited across a fork(). (Ref# 59947, 73710, J169361)
fpemu.so.2
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)
ioctl()
New: The SIOCDARP, SIOCGARP, and SIOCSARP commands aren't implemented, but the return code is ENXIO instead of ENOTSUP. (Ref# J1589096)
libxml.a
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)
<limits.h>
New: The definition of USHRT_MAX is incorrect; it should be as follows:
#if __INT_BITS__-0 <= 16
#define USHRT_MAX   65535U       /*  maximum value of an unsigned short  */
#else
#define USHRT_MAX   65535      /*  maximum value of an unsigned short  */
#endif
  

(Ref# J2753844, J2753845)

memcpyv()
New: This function erroneously copies some data if dparts or sparts is zero or negative. (Ref# J2891101)

Workaround: Make sure that dparts and sparts are positive.

mphys()
New: This function doesn't work properly with addresses that are greater than 4 GB. We plan to remove it from the library in a future release. (Ref# J1571467)
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)
posix_fallocate()
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)
posix_mem_offset()
POSIX requires that this function return an error code on failure, but the implementation returns -1 and sets errno. (Ref# 174563, J183709)
posix_memalign()
If you call:
posix_memalign(&ptr, 128, 128 - 2 * sizeof (void*));
  

the allocator loops forever. (Ref# 179337, J184371)

Workaround: Change the band configuration back to the original 6.5.0 setting:

export MALLOC_BAND_CONFIG_STR="8:16,32,0:24,32,0:32,32,0:48,24,0:64,24,0:80,24,0:96,16,0:128,8,0"
  
posix_spawn_file_actions_addopen()
New: This function isn't fully implemented. It currently doesn't do anything, but the return code indicates success. (Ref# J701207)
posix_typed_mem_open()
New: If you don't specify a leading slash in the name and you aren't in the root directory, this function fails to open the typed memory object. (Ref# J1035253)

Workaround: Start the name with a slash.

sem_timedwait(), sem_wait()
New: If you use these functions with named semaphores, calls to sem_timedwait() might not be unblocked when the timer expires, and calls to either of these functions might not be unblocked by signals. (Ref# 2811281)

Workaround: Use unnamed semaphores with timeouts. For sharing, use unnamed semaphores in memory that's shared between processes.

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, J166020)
<sys/shutdown.h>
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)
tc*()
New: Some tc*() (terminal interface) functions are implemented as having cancellation points when according to POSIX, they must not or should not have them. This issue is being fixed in a newer version of QNX SDP.

The terminal interface functions that incorrectly do have cancellation points include:

  • tcdrain()
  • tcgetsid()
  • tcsetsize()
  • tcgetsize()
  • tcinject()
  • tcischars()

In the documentation, the safety table for each listed function has a No value in the Cancellation point column. This should be used as a guideline in writing programs that use these functions; they should not be used as cancellation points. (Ref# J2711220)

ThreadCreate()
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, J166539)

Known issues: Filesystems

io-fs-media
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)
chkfsys
If you send a SIGTERM or SIGKILL signal to a devb-* driver, chkfsys might subsequently find errors on the filesystem. (Ref# 48741, J167473, 48764, J167474, 48765, J167475)
fs-ext2.so
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)
fs-qnx6.so
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, J169426)

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, J346829)

    Workaround: Specify this attribute in the mkifs buildfile:

    [image=0x700000]
      
  • 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, J393285)
  • 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, J166469)

    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

  • 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 200 MHz 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, J166387)
  • If you use adaptive partitioning and bound multiprocessing (BMP), some combinations of budgets might not be met. (Ref# 29408, J166694)
  • 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, J166701)
  • 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, J166243)

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

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

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

mkbuild
New: On Windows 7, you must run mkbuild as an administrator. (Ref# J331476)
mkefs, mketfs, mkifs
New: If your buildfile specifies an attribute of type=link, and you specify only one file name, you get a symbolic link from that name to itself. Specifying one file name for a link will be flagged as an error in a future release. (Ref# J587290)
pidin
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, J382175)
qcc
New: The qcc utility automatically links against some default libraries, including libc. If the last -Bstatic option on the command line appears after the last -Bdynamic option, qcc links against the static versions of the default libraries.

Workaround: Add -Bdynamic to the end of the command line.

showmem
New: This utility incorrectly includes the size of bss sections in the Heap statistics, instead of in the Data statistics. (Ref# J1570591)
traceprinter
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, J382506)

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

  • 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 SP1. For updated source code, see Foundry 27 on our website, or contact Technical Support.

Block-oriented drivers (devb-*)

devb-adpu320
Reading DVD-RAM causes devb-adpu320 to become blocked on a CONDVAR. (Ref# 19772, J344494)
devb-aha8
You can't restart this driver on IBM PPC405 boards. (Ref# 16018)
devb-eide
  • DMA modes don't work on these drives:
    • Hitachi-LG Data Storage DVD WRITABLE/CD-RW DRIVE, ROM VER.E111, May 2006
    • Toshiba Samsung Storage Technology TS-H352C/DELH, DE02, May 2006

    (Ref# 41600)

Graphics drivers (devg-*)

devg-*
  • 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)
  • 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.

devg-radeon.so
  • 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, J376749)

    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.

  • The planar YUV overlay format doesn't work properly in the devg-radeon.so driver. (Ref# 29014, J75083)
devg-smi5xx.so
This driver faults or deadlocks in multicard setups. (Ref# 59790, 60369, 76945, J219818)
devg-unichrome.so
The usage message for this driver describes it as a generic Vesa 2.00+ BIOS modeswitcher. It's really for VIA Unichrome chipsets. (Ref# 161461, J76765)
devg-vesabios.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, 390323)

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.

Human interface device drivers (devh-*)

devh-usb.so
  • Autorepeat doesn't currently work on USB keyboards that are connected to the system via a Avocent KVM 4SVPUA20 switch. (Ref# 41118, J346419)
  • 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-*)

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

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

devnp-i82544.so
The io-pkt driver for the Intel i82544 doesn't support dual-port cards (did=0x1010). (Ref# 44299, J473852)

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

  • 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)
  • When you create a file in an embedded transaction filesystem (ETFS), the parent directory's times aren't updated as POSIX requires. (Ref# 23243, J165465)
  • 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.

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

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

  • 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 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, J467095)
  • 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, J393694)

    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

  • The System Profiler requires a minimum color depth of 16 bits; otherwise, the timelines might appear to be blank. (Ref# 23763)
  • 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, J328853)

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

Known issues: System Builder perspective

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

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++
      
  • 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: Debugging

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

Known issues: Documentation

usbd_io()
New: The entry for this function in the USB DDK documentation doesn't include all the return codes. This function can return the following:
EAGAIN
The device has been reset.
EBADF
Improper usbd_connect() call.
EMLINK
Too many URB links.
ENODEV
The device was removed.
ENOENT
The requested URB couldn't be found in the stack side. For example, the configuration, interface, or endpoint wasn't present, or it wasn't in the correct state.
ENOSPC
Not enough transmission buffers.
EOK
Success.

(Ref# J623946)

usbd_free_urb()
New: The entry for this function in the USB DDK documentation says that it returns EOK, but it actually returns a pointer to the next URB in the chain (if any). (Ref# J177149)
isalnum(), isalpha(), iscntrl(), isdigit(), isgraph(), islower(), isprint(), ispunct(), isspace(), isupper(), isxdigit(), tolower(), toupper()
New: Note that these functions 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)
iswalnum(), iswalpha(), iswcntrl(), iswdigit(), iswgraph(), iswlower(), iswprint(), iswpunct(), iswspace(), iswupper(), iswxdigit(), towlower(), towupper()
New: Note that these functions 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)

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, J345251)

    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 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:

    out16(port + SH_SCIF_SCSCR_OFF, SH_SCIF_SCSCR_RE|SH_SCIF_SCSCR_RIE);
      

    to this:

    out16(port + SH_SCIF_SCSCR_OFF, in16(port +
          SH_SCIF_SCSCR_OFF)|SH_SCIF_SCSCR_RIE);
      

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

Known issues: I/O devices

io-usb
  • In some cases when unmounting DLLs and running the usb utility at the same time, some memory allocated by io-usb isn't freed. This is a rare situation. (Ref# 21716)
  • The io-usb server crashes if you repeatedly mount and umount and plug and unplug devices attached to the port. (Ref# 21556, J344839; 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, J345914)

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

devnp-*
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, J473874)
dhcp.client
New: There's no way in the dhcp-options file to send options that require additional data. (Ref# J169953)
ifconfig
The commands:

ifconfig iface_name up
ifconfig iface_name scan

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

Workaround: Combine the commands:

ifconfig iface_name up scan

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

    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, J474325)
  • 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, J473994)

    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, J473190)
  • 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.
fs-cifs
  • 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, J169740)

  • If you unlink() a file on a CIFS mount point, any open file descriptors for that file become invalid. (Ref# 38574, J473683)
  • fs-cifs doesn't support POSIX file-locking functions. (Ref# 38570, J473679)
  • 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, J473675)
  • 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, J473674)
  • 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, J274605)
fs-nfs2, fs-nfs3
  • 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, J473717)
  • 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, J473716)
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, J473673)
  • The NFS clients don't distinguish between a pathname ending or not ending in / when passed as the argument to mkdir(). (Ref# 38484, J473667)
  • 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, J473720)

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

gns
  • A gns daemon can't act as both a client and server at the same time. If a local service is registered with a GNS client, the client can forward that information to redundant or backup servers; a server can't forward the information. (Ref# 21037, J473239)
  • Currently, GNS (name_attach()) isn't compatible with the resource manager framework. (Ref# 20062, J473211)

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

io-pkt*
The stack might send zero-length mbufs to a driver for transmission. (Ref# 44621, J473873)

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
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, J473747)
TCP/IP (part of io-pkt)
  • The TCP/IP stack doesn't maintain the statistics for outbound packets over VLAN interfaces. (Ref# 16684, J473010)
  • 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, J473311)
  • The TCP/IP stack doesn't maintain proper interface statistics for the link speed. (Ref# 27015, J473523)
  • 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, 159834, J181071)

Known issues: Graphics

Advanced Graphics

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

Blitting
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, J390203)

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, J376820)

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

ARMv7
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, J218669)
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, J390343)
PgBlitCx(), PgContextBlitAreaCx(), PgContextBlitCx(), PgMultiBlitCx()
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, J219968)
phs-to-pcl
We don't ship phs-to-pcl for PPCBE. (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)
PhAB
  • 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, J390347)
  • 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, J217110)
  • 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, J390353)

    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 Settingssome_usermy_phab_app). (Ref# 39883, J217984)

Known issues: Persistent Publish/Subscribe

ppsparse()
  • This function is declared in <sys/pps.h>, not <ppsparse.h> as stated in the documentation. (Ref# 168338, J182667)
  • This 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 -attrn when an attribute is deleted. Since there's no value, the code sets attr_index to -1. (Ref# 77361, J169694)

Known issues: Runtime kit

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

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

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: Host-specific

Windows hosts

Multiple folders for QNX SDP
After you install 6.5.0 SP1, your system's start menu includes folders for QNX Software Development Platform 6.5.0 and QNX Software Development Platform 6.5.0 SP1. Use the 6.5.0 folder for starting the IDE, license management, and so on; use the 6.5.0 SP1 folder for starting the uninstaller.
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, J237620)

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`
        
IDE
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, J327830)
  • 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.
echo.exe
On Windows, the QNX-provided echo.exe interprets the Windows separator as an escape character. As a result, environment variable settings won't work if you use as a path separator; use / instead. (Ref# 19924, J142704)
MAKEFLAGS
Microsoft Visual Studio also uses the MAKEFLAGS environment variable, but in a much different way than QNX Neutrino does. The result is that Microsoft Visual Studio no longer works after you've installed QNX Momentics.

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

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

    set MAKEFLAGS=saved_makeflags_value

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.

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

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

Installers
The installers can't update the Gnome menu on some distributions of Linux. (Ref# 48770)
Activation
  • 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
        
IDE
  • 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, J393506)

    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, J393695)
  • 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, J330708)

    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:
      -Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib/xulrunner/xulrunner
          
  • 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, J218975)

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:

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

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 SP1 include the following:

Software fixes

Change Ref#
The devn-asix.so driver now supports the Asix 88172A chipset. 69383
The devc-serusb driver now supports some new USB modems, including the FTDI Quad RS232-HS, ZTE MF668 (Rogers Rocket Stick), and Sierra Wireless USB 598. 73383
When an application blocks as a result of a receive on an asynchronous or global channel, the transition to STATE_RECEIVE is now correctly logged. 76574
We've corrected a problem in the filesystems' inode caches that could cause a lockup if many threads were performing simultaneous open/close/unlink operations in a loop. 77156
The fs-dos.so and fs-udf.so filesystems now support Asian character sets, code pages 932, 936, and 950. (Case ID 103086) 78317
We now ship the <pps.h> header file. (Ticket ID 91172). 78433
We've corrected an issue with inode caching that could sometimes cause corruption in a Power-Safe (fs-qnx6.so) filesystem. 78703
We've corrected an issue with the UDF filesystem which could cause an exception or other unexpected behavior on CDs using the Rock Ridge extension (RRIP). 80829
The dladdr() function now provides the full path (instead of the base name) of the object, in order to match the behavior on other OSs. 80928
We've fixed a memory leak that occurred when you used gf_draw_polyline() with a pen width of 2 or more. 88440
We've fixed a bug in fs-dos.so, where a 64-bit inode value could be implicitly truncated to 32 bits. As a result, two different files could have had the same inode, which caused confusion (e.g., with inflator, which assumes that inodes are unique). 95577
If you mount a USB device that contains a DOS filesystem using cp936 (Chinese code pages), it's now possible to use cd to enter a folder that has a Czech name. (Ticket ID 00108005) 96652
We now ship an ARMv7 variant of devi-hid. 112291
The USB stack now supports composite HID devices. (Ticket ID 00111514) 116230
We've corrected an issue that could sometimes cause sporadic and inexplicable “ldd:FATAL: Attempt to call unresolved object” errors. 116675
EFS images built by mkefs on Windows for bid-endian targets can now be mounted correctly. 117128
A server thread no longer loses its priority boost when it unlocks a mutex that it acquired before the priority boost. 119518
We've fixed an SMP race condition between a long and a short message of equal priority on the same channel that could happen if both were preempted. 124250
Pregrowing a file beyond the capacity of the Power-Safe (fs-qnx6.so) filesystem no longer causes the filesystem to report an error of EBADFSYS. 125537
The fdisk utility no longer experiences division-by-zero errors when a USB key reports 0 track sectors or heads. (Ticket ID 00112455) 126016
The Qnet enforce_crc=1 option works again. (Case 00112528) 127401
The devnp-e1000.so driver now makes sure that the PHY is reset before the rest of the driver is started. 129010
The io-pkt-v6-hc manager no longer does a v6 route lookup if it has a valid v4 route. This eliminates a long delay when sending/receiving data over a socket. 129214
We've fixed an issue that sometimes caused delays when two UHCI USB serial devices exchanged data. 129326
The devc-serusb driver now handles the case where there isn't enough memory to transfer data. After multiple consecutive errors, receiving is disabled; you can attempt to reenable it by setting the CREAD terminal flag. 131276
If you start io-usb with the -d ohci ,,,num_td=8, and connect an iPod through a full-speed USB hub, io-usb no longer crashes on playback from the iPod. 131372
The devb-loopback driver has two new options, heads and tracks, that let you specify the disk geometry. 133385
We've corrected an interaction between sending a message on a global channel and replying to a remote client, that led to a thread's being left in a reply-blocked state forever. 133467
The io-pkt-* managers now have a -P option that you can use to specify the priority of the main thread. (Case 00113545) 135755
The io-audio manager now has a data_thread_prio option that you can use to specify the priority of its sw mixer threads. (Case 00113545) 136343
The io-usb utility now supports a -e option that you can use to specify the priority of the enumerator thread.(Case 00113545) 139522
We've corrected an issue that sometimes prevented threads using round-robin or sporadic scheduling from being rescheduled correctly. 142140
Calling MsgCurrent() on the rcvid pertaining to a low-priority client no longer causes a priority boost given to you by a blocked high-priority thread to be lost. 142142
The fdisk utility now supports logical partitions and multiple partitions of the same type. 142143
As a QNX Neutrino extension, the time you specify for the sleep utility now can be a floating point number, so you can specify fractions of seconds. 142144
We've fixed a caching issue (caused by a P4080 errata) that sometimes caused random crashes in the last loaded DLL on multicore systems. 142150
We've corrected an error in the handling of DT_FINI_ARRAY. For more information, see “What's new: Libraries” in these release notes. 142152
The fdisk utility now supports logical partitions and extended partitions. 142153
We've corrected an initialization issue for the D-Link DUB-E100 Ethernet Dongle that used to cause io-pkt-v4 to not work with the dongle. 142154
The name of the VMware image is now correct. 142155
We've corrected a memory leak in gns. 142156
Serial drivers no longer send warnings about buffer overruns to the system logger if nothing has yet connected to the device. This warning is re-enabled once a byte is successfully transmitted without an overrun or the FIFO is flushed. 142159
A gns running in client mode no longer crashes when it performs an open() for a non-_FTYPE_NAME file type for the local reflection of a global name (/dev/name/global/global-name) and that name was attached on a remote node, the name's cache entry timed out (usually after 20 minutes), and the network connection to the server is now broken. (Case 103808) 142160
We've worked around the P4080 CPU 22 Errata: “If an asynchronous interrupt occurs near the same time that a stwcx. is executed, the cacheline the stwcx. is accessing may become stale in that core's backside L2. Any future load or lwarx instruction to that cacheline could then access the old data.” 142162
The devnp-e1000.so driver no longer reports that a link is down when it really isn't. (Ticket ID 00103859) 142164
The devn-pegasus.so driver now supports the busnum and devnum options. 142165
The devb-loopback driver is now able to mount images that are larger than 2 GB. (Ticket ID 91175) 142168
We've corrected an issue in ThreadDestroy() that sometimes caused a kernel crash on ARM systems. (Ticket ID 00104295) 142172
The devc-serusb driver now supports a DCMD_CHR_RESET devctl() command that resets the device. Not all drivers make use of this command. 142175
We now provide a PIC version of libps.a. 142176
We've corrected an issue with mapping and unmapping memory that could have led to the fragmentation of virtual memory. (Ticket ID 00104760) 142178
The audio drivers now use the shared DMA library instead of the static library, to ensure that the constructor can successfully initialize shared memory. 142180
The kernel on ARM platforms no longer crashes when you repeatedly call ThreadDestroy(). (Ticket ID 00104295) 142181
The enum-usb utility now supports devices that don't have an interface 0. 142183
We've corrected the fp_rounding() function so that it sets the L bit and the mask so that older processors (that don't implement the L bit) act as though the mask were set. (Ticket ID 00104989) 142185
The devnp-speedo.so driver no longer crashes when used with io-pkt-v6-hc. (Ticket ID 00104744) 142186
The dhcp.client utility no longer adds duplicate entries to /etc/resolv.conf. 142189
We've updated the devnp-e1000.so driver so as to reduce the time required to establish connections. 142190
TimerTimeout() no longer includes internally used bits in the flags that it returns. 142191
We've updated the devn-pegasus.so driver so that removing the Pegasus dongle from a hub no longer causes io-pkt-v4 to spin. (Ticket ID 00105359) 142192
We've corrected an error in fs-udf.so that sometimes caused devb-eide to crash. 142194
Removing the dongle while the devn-pegasus.so driver is being initialized no longer puts the driver into a bad state. 142195
A deadlock no longer occurs in the block I/O drivers when you remove the device while the it's still being mounted. (Ticket ID 00105360) 142197
The devn-pegasus.so driver now uses a timeout for control operations instead of using infinity. 142198
We've fixed the possibility of excessive interrupt nesting due to heavy IPI activity in the ARM kernel. 142199
We've corrected an issue that occurred when a thread that called TimerTimeout() was preempted and moved to STATE_READY before it could call SyncCondvarWait(), and another, higher priority, thread blocked on a mutex that the first thread held. The mutex priority-inversion code would then boost the priority of the first thread, but on SMP machines erroneously cleared the time-out flags. 142200
The procnto-v6 kernel now uses the correct cache color for alias mapping used to manipulate breakpoints. It used to be possible for the dcache to contain a line for the “real” virtual address which would contain the previous unmodified value. In this case, the undefined instruction exception handler would read the faulting address and not see a breakpoint instruction so it would raise a SIGILL. 142201
The chkqnx6fs utility no longer loops if corruption in the filesystem has altered the number of indirect levels. 142203
For security reasons, the use of LD_DEBUG_OUTPUT with setuid binaries is now disabled. For more information, see “What's new: Security” in these notes. 142204
We've added a mutex to the devu-uhci.so driver, so io-usb no longer crashes while handling certain error conditions. 142205
We've adopted the latest P4080 U-Boot, which supports 36-bit physical addresses. 142206
A call to open( "/proc" ) no longer erroneously fails because of a previous failed close() on a file description to procnto. 142207
If a shared object that contains text relocations is remapped as private, pidin mem now displays the correct name (appended by “!”), instead of zero. 142208
When MSI interrupts are requested, the PCI server now correctly allocates every second IRQ instead of allocating interrupts from the entire IRQ list. 142210
The devnp-e1000.so driver now supports Intel 82579 chipsets. 142211
There's a new hidd_get_interface_string() function that you can use to retrieve the HID interface descriptor string. 142213
If a client unblocks a blocked read over Qnet by sending SIGINT to the thread, the server handles the unblock request and releases the client with EINTR. If the client closes the file and reopens it after a short delay, the server no longer erroneously receives a file open callback with the _NTO_MI_UNBLOCK_REQ flag set in request's _msg_info structure. 142214
We've updated io-usb and some USB components to work around some hardware issues. 142215
The hidd_send_report() function now reports an ETIMEDOUT error when a device times out. 142216
The devf-generic driver no longer leaks memory when a customer application opens and closes a connection to it. 142218
The devb-eide driver now recognizes drives that are larger than 127 GB. 142219
Synchronization objects that are in x86 big pages are now cleaned up correctly. 142220
In order to make startup faster and reduce jitter, nanospin_calibrate() can now read the calibration data from values stored in the system page. The startup for some boards now includes an -o option that you can use to specify the calibration data (100 loop time and overhead) to store in the system page. 142221
We've corrected a threading issue that sometimes made io-pkt crash. (Ticket ID 91482) 142222
The etfsctl utility now properly handles bad blocks. 142223
The io-pkt manager with the devnp-e1000.so driver no longer sporadically hangs after rebooting. 142224
The Intel HDA Audio driver (deva-ctrl-intel_hda.so) now supports the Cirrus CS4207 Audio codec. 142225
We've corrected an issue that could corrupt messages (especially large ones) on PPC BookE systems. 142226
The enum-usb utility's configuration file now supports a NoMSString option that prevents queries from being made for a Microsoft-defined USB descriptor. Some devices that don't have a descriptor go haywire if such a query is made. 142228
The pidin -F "%M" command no longer crashes. We've also improved the way that this format code and the -M memory options work. 142231
You can now specify a 64-bit offset when mounting an IFS image. 142232
We now ship an ARMv7 version of devn-fd.so. 142233
Embedded Transaction filesystems now correctly handle orphaned directories. 142234
The devh-usb.so driver now has a priority option that you can use to change the priority of the removal thread. (Ticket ID 00107965) 142236
The fs-udf filesystem no longer truncates a CD volume label that contains two periods in what appears to be the filename extension. 142237
The mkqnx6fs utility now has a -v option that lets you specify a volume name of up to 16 characters. Note that you can't specify both a UUID and a volume name. 142239
Chinese SD and USB volume labels that include an English character are no longer malformed in HMI and Photon. (Ticket ID 00108045) 142241
We've corrected io-blk.so's cache coherency function to dereference the correct vnode. 142243
We've moved the packing directives in <pci.h>, so that the order in which you include this and other headers doesn't affect the alignment of pthread_mutex_t in structures. 142244
There's a hidd_device_reset() function that lets you reset a human interface device. For more information, see “What's new: Human interface device drivers (devh-*)” in these release notes. 142245
The enum-devices utility no longer uses just the modification time to determine whether or not a configuration file has changed. Using just the modification time was a problem if you used the mkifs -nn option to set all modification times to 0. 142246
The mkifs utility now uses the correct linker for ARMv7 images. (Ticket ID 00109690) 142247
While building the node tree, usbd_parse_descriptors() no longer wrongly links a descriptor that should be a child of an interface descriptor as a sibling instead. (Ticket ID 00109414) 142248
The usbd_parse_descriptors() now leaves class and vendor-specific descriptors untouched, instead of endianizing and making them alignment-safe. (Ticket ID 00109791) 142250
On ARM, gcc doesn't preserve callee-save registers such as LR for functions marked as noreturn. We've modified the code for abort() so as to make it possible to determine who called it. 142251
The hidd_report_detach() and hidd_reports_detach() functions no longer SIGSEGV if you call them from an insertion callback. 142252
The libimg library now supports the invocation of the set_value_f() callout when progressive JPEGs are loaded via img_load*(). 142253
The # key now works correctly on the German/Austrian keyboard layout based on the German standard DIN 2137-2. 142254
The devb-ram driver no longer crashes when the capacity is less than the minimum size for a QNX 4 filesystem. 142255
We've fixed a timing issue that caused a crash when a USB device was inserted or removed just as the client driver was detached from a removed device. 142256
All the meta data for Joliet filesystems is now handled properly. 142257
We've corrected a timing issue that caused problems when you called hidd_device_reset() just after a device has been inserted. 142258
We've improved nanospin_calibrate() so that it isn't affected by interrupt latency. 142259
We now ship an ARMLE-v7 version of fs-etfs-ram. 142260
The enum-usb utility now starts the correct driver for MTP devices in USB mode. (Ticket ID 00110106) 142262
Empty CD labels are now displayed as an empty string, to be consistent with Windows. 142263
The usbd_parse_descriptors() function no longer goes into an infinite loop when parsing devices with several vendor-specific descriptors. 142264
The x86 kernel with Physical Address Extension enabled no longer crashes when a user thread references addresses above 0xff000000. (Ticket ID 91857) 142265
The devi-hid manager now has an -R option that lets you specify the display resolution. If you specify this option, devi-hid doesn't try to use the graphics framework or Photon to determine the resolution. 142266
The devf-generic driver now supports a -x option that enables software ECC mode, and a -D option that enables the automatic detection of ECC mode. 142267
We've improved some of the settings that fdisk suggests in interactive mode. 142268
By default, lsm-autoip.so now has the link local and routeable IP address behave as aliases and co-exist. There's now an old option that makes the module attempt to manage the link local network using a routing table. (Ticket ID 90966) 142269
The dhcp.client utility now runs an optional script, /etc/dhcp/dhcp-check, that takes the environment as dhcp-up does, but returns a value indicating if the configuration is acceptable (0 means OK; other values result in a DHCPDECLINE). 142270
The dhcp.client utility now has an -H option that indicates that you don't want to apply the hostname locally. This could be useful in cases where you use the -h option to identify the client, and you want to apply a different hostname locally, or you simply wish to ignore the server hostname assignment. (Ticket ID 91459) 142271
We've included a correction in the handling of DIOCCHANGERULE from the NetBSD code. (Ticket ID 91968) 142272
We've corrected a memory leak that occurred when you called getaddrinfo() or gethostbyname_r(), specifying a host that didn't exist. 142275
io-pkt* no longer crashes if you slay it after starting qconn. 142276
We've corrected a race condition that sometimes occurred if you used io-pkt with the -t2 option. This race condition caused the thread pool to be empty when it shouldn't have been. 142279
io-pkt* now supports the ALTQ feature. You can use pfctl to manage it. 142280
We've corrected the endian-swapping macros so that gcc optimizes them correctly. 142281
We've corrected some issues concerning alignment and mutex initialization in the devnp-e1000.so driver. 142282
When you use fdisk to add partitions, the start and end LBA addresses are now aligned on cylinder boundaries. 142283
We've corrected some off-by-one errors in fdisk's interactive mode. Note that you can no longer edit the start and end cylinders of an extended partition. 142284
The pppd daemon no longer loops if its database is corrupted. 142286
We no longer not allow recursive RFC3173 IPComp payloads, in order to address security vulnerability CVE-2011-1547. 142287
We've fixed an issue that sometimes caused io-pkt-v6-hc to fault during initialization. (Ticket ID 91832) 142288
If Unix domain socket corruption occurs, killing sshd no longer crashes io-pkt-v4-hc. (Case 109797) 142289
The pfil_ipsec option now works correctly with TCP streams. 142290
The PF_KEY interface now notifies the client of an IPSec SA softtimer expiry if no data has been sent. 142291
If you try to read a PPS object, and the buffer you provide is too small, you now correctly get an error of EMSGSIZE. 142292
We've cleaned up some warnings that used to occur when you compiled BSP source code. 142293
The Power-Safe (fs-qnx6.so) filesystem now has an alignio option that makes the filesystem try to align all reads and writes in sizes and offsets of the file system block size. 142294
We've fixed some issues that prevented UDF-Multisession CDs from being properly loaded. (Ticket ID 00110586) 142295
The pthread_mutex_timedlock() function's behavior is now compliant with POSIX. 142296
The enum-usb utility now recognizes the Philips GoGear Muse in both MSC (umass) and MTP (PFS) modes. 142298
The getifaddrs() function no longer returns a transient ENOMEM error when the interface list is growing. 142301
Issuing an ifconfig destroy command for the J5 WLAN driver no longer causes the system to freeze. 142303
The fdisk command now correctly reports a size of zero for empty partitions. 142304
Qnet now correctly clears the l4 list when an interface is removed (destroyed). We've also corrected an issue where a data structure was accessed after it was freed. (Ticket ID 92074) 142305
The devc-serusb driver now has a drt option that lets you specify the data-ready timeout. 142306
If you try to connect a corrupt USB stick, the system no longer gets into an endless “Loading...” loop. (Ticket ID 00111735) 142307
The devi-hid driver can now switch to 4-point calibration from the default 3-point. 142309
We've fixed a potential race condition in iofunc_attr_unlock() that could have caused multi-threaded resource manager threads to stay mutex-blocked forever. 142312
The devc-ser8250 driver no longer attempts to read from the write-only FIFO Control register (FCR). 142315
The devc-serusb driver now supports the Cinterion AHx module. 142316
The io-pkt manager no longer crashes because of a corrupt mbuf chain after IPSec key negotiation has been established. 142317
The fs-dos.so filesystem now supports a DCMD_FSYS_LABEL_RAW devctl() command that you can use to get the raw volume label before any character conversions are done. 142318
We've fixed a security vulnerability in the phuser utility that could have allowed a normal user to gain root access. This issue was reported by an anonymous researcher working with the SecuriTeam Secure Disclosure project. 142322
When you're tracing in ring mode, kernel buffers are now filled to 95% before the kernel moves to the next buffer. In linear mode, buffers are filled to 70% before being flushed. (Ticket ID 90752) 142442
Audio dropouts no longer occur while playing from an iPod. (Ticket ID 90795) 142443
The code that clears a stalled USB endpoint now returns an appropriate error code to the higher-level software. (Ticket ID 90867) 142444
The io-audio manager now supports typed memory. (Ticket ID 91171) 142445
We've corrected an error that made pidin occasionally crash. (Ticket ID 91383) 142446
We've improved the quality of audio from USB. (Ticket ID 91515) 142450
We've improving the caching of information in the FAT filesystem in order to reduce the time required to read data from it. 142451
Reading an incomplete or corrupt JPEG file no longer causes a crash in the img library. (Ticket ID 91582) 142452
We've corrected an issue in the devnp-ecm.so driver that caused io-pkt to SIGSEGV. (Ticket ID 91617) 142454
We've corrected an initialization issue that caused crashes when some applications called dlopen() or dlclose(). (Ticket ID 91630) 142455
The devb-ram driver no longer crashes if you start it with a capacity or blksize setting of 0, or with an unreasonably large address setting. (Ticket ID 91647) 142456
We've corrected an issue that caused io-usb to crash. (Ticket ID 91650) 142457
We've fixed an issue in io-blk that caused an immediate reset when you connected a USB stick to external devices. (Ticket ID 91739) 142460
Network drivers now support routines that power up and down the phy of a Ethernet card. (Ticket ID 91777) 142461
We've corrected an issue that prevented pairing with some Bluetooth devices (Ticket ID 91812) 142464
We've fixed an contention issue in io-blk when automounting. (Ticket ID 91881) 142468
The showmem utility no longer displays bogus Qnet node names for shared objects that are in /dev/shmem. These names appeared in rare circumstances. (Ticket ID 91900) 142469
The devu-ehci.so driver now has a ports option that lets you set the enumeration order of each root port. (Ticket ID 91910) 142470
The Power-Safe (fs-qnx6.so) filesystem and io-blk.so no longer call random() because this function isn't thread-safe.(Ticket ID 91915) 142471
When an NFS server dies, processes that read or write to an NFS mount now get a “Host is down” error if you start fs-nfs2 or fs-nfs3 with the -s option. (Ticket ID 91978) 142472
We've corrected a problem with memory allocation that caused devb-umass to fault. (Ticket ID 91997) 142473
We now ship the BSD version of the tar utility. It's called bsdtar, to distinguish it from the GNU version. 142475
We've updated the block-I/O common access methods to recognize some new USB peripheral devices. (Ticket ID 92047) 142476
We've fixed an issue in the io-char library that sometimes caused drivers to lock up trying to drain the output buffer. (Ticket ID 92058) 142477
We've fixed an issue that caused devb-umass to crash while backing up a music collection. (Ticket ID 92059) 142478
We now support the NOKIA Model N8-00 USB NCM device. 142479
The dhcp.client now correctly sends DHCPDISCOVER packets with a source address of 0, as required by RFC 2131, instead of with its configured alias address. (Ticket ID 92097) 142480
The enum-usb utility now recognizes HTC Droid Incredible devices. (Ticket ID 92104) 142481
The ATAPI driver now sets the DEV_UPSIDE_DOWN_MEDIA flag when it gets a sense code of 2/30/01(Cannot read medium: unknown format), so that the subsequent access to the device, which causes a sense code of 02/3E/00 (Logical unit hasn't self-configured yet)doesn't restart the media detection process by sending a start command. (Ticket ID 92121) 142482
The devb-umass driver no longer crashes when you repeatedly connect a Samsung Galaxy phone to a USB port, select Mass Storage mode, and then disconnect the device. (Ticket ID 92122) 142483
MTP players are now recognized much sooner. (Ticket ID 92139) 142485
The usbd_connect() and usbd_disconnect() functions no longer leak file descriptors. (Ticket ID 92144) 142486
By default, the devn-shim.so driver now copies each received packet in the shim layer as it's passed from the driver to io-pkt. The driver and shim can be removed via ifconfig enX destroy or by physical removal of the device (if supported by the driver). 142487
The devc-serusb driver now supports the Sierra Wireless AR8550 3G dongle. 142488
The io-usb server no longer crashes when you connect an iPod to a full-speed USB hub. (Ticket ID 92156) 142489
We've corrected an issue in the resource manager code that sometimes made io-pkt crash. (Ticket ID 92161) 142490
The i2c driver now correctly recognizes the iPhone. (Ticket ID 92177) 142491
We've corrected the handling of encrypted packets in the pf packet filter that caused some packets to be dropped (Ticket ID 92231) 142492
We've corrected an issue that caused io-usb to fault. (Ticket ID 92285) 142493
We've addressed a potential URB race condition in the Usbdi library. 142494
If the RTC rolls over, the memory manager no longer sets a cleanup timer that expires immediately. (Case 114408) 142884
If you're running io-pkt-v6, the output from netstat -s now includes missing information about IPSec statistics. 144710
The devnp-e1000.so driver has a new int_mod option that you can use to specify the interrupt moderation value. The default value is 20000 interrupts/sec; a value of 0 disables interrupt moderation. (Ticket ID 00114664) 146600
Setting the MALLOC_BAND_CONFIG_STR environment variable no longer causes a crash in libc. 146824
The bzdiff, bzgrep, and bzmore utilities are now executable. 146932
We've corrected an error that could have caused IPv6 IPSec SA lookups to erroneously fail. 147352
The io-pkt manager now supports the pfil_ipsec option for IPv6. 147353
IPv6 in IPv6 tunneling now works correctly. 147354
We now support IPv6 NAT-T and IPv6 PF fragmented packet normalization. 147355
The pf packet filter now supports IPv6 fragments. (Ticket ID 92278) 147358
The devnp-e1000.so driver now finishes its initialization before it enables interrupts. 147963
The fs-nt.so filesystem now supports NTFS partitions on devices with a disk sector size that's greater than 512 bytes. 149806
We've corrected an issue with a recursive lock that sometimes caused a deadlock in io-pkt and the devnp-e1000.so driver. (Ticket ID 00114936) 149868
The showmem utility now correctly reports memory usage. (Ticket ID 91266) 150669
The slogger utility has a new -m option that makes it use CLOCK_MONOTONIC instead of the default CLOCK_REALTIME as the clock source, and a new -u option that makes it generate a user-string trace event, with the given event ID, for all messages received. 150729
The lsm-autoip.so module no longer selects the same IP address every time after the first challenge. 150959
The lsm-autoip.so module is no longer loaded if the selected interface isn't present. 150968
We've fixed an alignment issue that occurred when you used mkefs with the ECC feature enabled. 151889
We've corrected a race condition in the transferring of messages on SMP systems that in rare circumstances could cause the kernel to crash. 152941
The mqueue manager now has a -p option that you can use to specify a static priority. 153325
In order to improve performance, io-pkt* now uses a timer pulse instead of attaching a timer interrupt. There's a new timer_pulse_prio option that you can use to specify the priority of the pulse (the default is 21). 154965
The showmem utility no longer crashes when it encounters a larger than expected memory size. 156091
The showmem utility now correctly counts memory for overlapping, but not identical, memory regions. (Case 114619) 156094
The x86 startup library no longer checks to see if PIRQs (specifically PIRQ[E..H]) are configured as GPIOs. 156564
We've corrected an SMP race condition that sometimes caused increased scheduling latency, i.e. a higher priority thread remained in a ready state while a lower priority thread continued to run. 156962
Qnet now takes less time to start up. (Ticket ID 92223) 159976
We've corrected an issue that sometimes made io-pkt crash when you also used dhcp.clinet and removed the USB device. (Ticket ID 92333) 159986
We've fixed a race condition between ldd and confstr() that could cause the link loader to crash while starting a process. (Ticket ID 92349) 160016
The devc-serusb driver now supports the Sierra Wireless AR series of devices. (Ticket ID 92467) 160019
We've corrected a denial of service issue concerning io-pkt and Wi-Fi. (Ticket ID 92440) 160021
Playback now occurs correctly if you eject and then reinsert a CDA. (Ticket ID 92367) 160034
The io-usb server now recognizes Toshiba USB hard drives. (Ticket ID 91713) 160038
IPv6-router-advertisements are now honored for PPP interfaces. (Ticket ID 92279) 160050
Freed memory is now released as soon as possible to the system. 160710
If you start io-usb with the -d ohci ,,,num_td=8 option, and then connect a USB key though a full-speed USB hub, io-usb no longer crashes. 160753
If you start io-usb with the -d ohci ,,,num_td=8 option, and then connect a USB key though a full-speed USB hub, io-usb no longer crashes. 160775
The devnp-asix.so driver now supports the Asix AX88772B. 160786
We've corrected an issue in the cp utility that caused a fault when you tried to copy from an NT filesystem. 160797
We now ship version 1.0.6 of the bzip2 utilities. 160807
Applications linked against libc now emit a lot fewer “shared library events” when a process with shared libraries is loaded in the debugger. This makes launching the debugger faster. 162680

Documentation fixes

Change Ref#
The documentation for alloca() now describes how the builtin and non-builtin versions of this function behave differently. 27507
The documentation for shm_ctl() and shm_ctl_special() now describes the SHMCTL_ISADMA and SHMCTL_NOX64K flags. 27627
We've added an entry for snd_pcm_plugin_set_src_method() to the QNX Neutrino Audio Developer's Guide. 29909
The form of the compress attribute that lets you specify the compression algorithm doesn't have a leading + or - sign. We've corrected the documentation for mkifs. 60348
We've revised and expanded the documentation for the posix_spawn*() functions. 62489
The System Architecture guide now explains the concept of the network root, and the entry for on in the Utilities Reference now contrasts the -f and -n options. 71139
We've corrected various errors in the “Interpreting mudflap output” section of the IDE User's Guide. 71869
We've expanded the list of practical limitations in the Adaptive Partitioning User's Guide. 74104
We've listed more possible error codes in the documentation for _intr_v86(). 74516
We've added an entry for round(), roundf(), and roundl() to the QNX Neutrino C Library Reference. 75143
We've documented the bzcmp, bzdiff, bzegrep, bzfgrep, bzgrep, bzless, bzmore and bzip2recover utilities, and updated the documentation for bzip2. 76465
The documentation for mketfs now explains that this utility adds cluster headers to the image file. When you write the image to flash, these headers are replaced with BSP-specific structures that hold the same information. 77251
The documentation for io-blk.so and mount now explains why you have to respecify filesystem options such as noatime when you remount a filesystem (Case# 102618) 77323
The System Architecture guide now explains that the pages containing binaries are demand-loaded by default, but that you can use the procnto -m to change this. 77347
The documentation now explains why calling shm_ctl_special() with a special argument of 0 isn't the same as calling shm_ctl(). 77364
The documentation for dumpifs now describes the -d option, which you can use to specify where to place extracted files. 77369
The documentation for mq_open() and sem_open() now mentions that if you want to use O_CREAT, O_EXCL, or O_NONBLOCK when you call these functions, you need to include <fcntl.h>. 77620
We've corrected the list of options for dhcpd and dhcp.client in the Utilities Reference. 77663
The chapter on filesystems in the QNX Neutrino User's Guide now explains why you can overwrite a running executable in /dev/shmem without getting an error of EBUSY. 77764
The documentation for qcc now describes the -save-temps option. 77819
We've removed a reference to PAL8 from the documentation for io-display, and corrected the name of the disp_mode_info_t structure in the description of get_modeinfo() in the Graphics DDK documentation. 77854
The documentation now says that you must use io-pkt-v4-hc or io-pkt-v6-hc with the devnp-ath.so, devnp-bcm43xx.so, devnp-ral.so, and devnp-rum.so drivers (io-pkt-v4 doesn't support Wi-Fi). 77970
The QNX Neutrino Library Reference now explains how flockfile(), ftrylockfile(), and funlockfile() are related. 78020
The QNX Neutrino C Library Reference now includes an entry for InterruptStatus(). 78079
The documentation for io-blk.so, mount, and mount() now points out that updating a mount resets the other mount flags to their defaults. The documentation for mount() explains how you can get the current settings. 78089
The maximum user or group ID in a QNX 4 filesystem is 65534. 78195
We've updated the sample programs in Writing a Resource Manager so as to eliminate some compiler warnings. 78239
We've corrected the names of the _MOUNT_NOATIME, _MOUNT_NOCREAT, and _MOUNT_NOSUID flags in the documentation for mount_parse_generic_args(). 78287
We've added implied (_MOUNT_IMPLIED) to the list of options that mount_parse_generic_args() processes. 78331
We've documented the -o priority option that you can use to specify the working priority of the internal pulse that the devc-* drivers use. 78357
The iofunc_stat_default() function returns -1, to indicate to the resource manager library that it should return one part from the ctp->iov structure to the client. 78470
The description of the Blocked column in the output from pidin now mentions that if the blocking process is running on a remote node, the process ID is followed by @ and the node name. 78476
We've corrected the call to memset() in the example for getsockopt() in the QNX Neutrino C Library Reference. . 78595
The documentation for qcc now includes c++-header in the list of supported values for the -x option, and lists the extensions that are parsed to create precompiled headers. 78650
The entry forsysctl in the Utilities Reference now describes the -d, -e, -f, -M, -q, -r, and -x options. It also describes how you can use a file such as /etc/sysctl.conf to set variables whenever you boot the system. 78736
After you've launched io-pkt*, you can use the mount command to load additional modules such as lsm-pf-v4.so or lsm-pf-v6.so. 78737
Use commas, not question marks, to separate multiple options when opening a PPS object. 78873
Because io-pkt includes the TCP/IP stack, you can't load more than one instance of the stack on a single instance of io-pkt. We've corrected the TCP/IP Networking chapter of the System Architecture guide. 78921
We've corrected the name of the <ftw.h> header file in the entry for nftw() and nftw64() in the QNX Neutrino Library Reference. 79058
To load lsm-pf-v4.so, or lsm-pf-v6.so, use mount with a special device of io-pkt, not tcpip. The documentation for lsm-autoip.so now shows how to load this module when you start io-pkt-*. 79118
If you use the P_WAIT flag, you need to use a status macro such as WEXITSTATUS() to extract information from the value returned by the spawn*() functions. 79150
If you pass a string of "/usr/" to dirname(), the string returned is "/", not "usr". We've corrected the examples in the QNX Neutrino Library Reference. 79323
Typically your program calls ChannelCreate() only once, and all threads block on that channel.We've also corrected a call to MsgReplyv() in one of the examples. 79573
The documentation for showmem now includes more details about using the options and interpreting the output. 79695
We've corrected the synopsis for wcscpy(), wcsncpy(), wcstoul(), wcstoull(), wcsxfrm(), wprintf(), and wscanf() in the QNX Neutrino Library Reference. 79882
The documentation for straddstr() now describes how the function handles null characters in the strings. 80304
The ability to munmap() just a part of an area mapped with mmap() was introduced in QNX Neutrino 6.3.2; we've corrected the documentation for munmap(). 80441
The getrlimit() and setrlimit() routines don't support RLIMIT_FSIZE or RLIMIT_MEMLOCK. 80610
The explanation for an error of ENXIO is now clearer in the documentation for mmap(). 81252
We've corrected the diagram of using the ?server option in the Subscribing chapter of the PPS Developer's Guide. 81682
The entry for readdir() in the QNX Neutrino C Library Reference now mentions that ftw() provides another way to walk a file tree. 82206
The descriptions of daemons and services in the default version of the /etc/inetd.conf file are commented out; uncomment the ones that you want to use in your system. 82401
The ftruncate() and ftruncate64() functions can indicate an error of ENOMEM if there isn't enough memory to change the size of a shared memory object. 82503
We've corrected the instructions for creating a new project in 10 Steps to Developing a QNX Program: Quickstart Guide. 82659
The entry for devc-serusb in the Utilities Reference now describes the debug, drt, name, and retry device-specific options. 83096
The entries for pci_read_config*() in the QNX Neutrino C Library Reference now warn that these functions can return inconsistent data if another process is extensively using the PCI bus. 87498
The documentation for resmgr_attach() now says that this function indicates an error of EBUSY if an internal resource isn't available. (Ticket ID 00106344) 88093
In the Understanding System Limits chapter of the QNX Neutrino User's Guide, we've updated the maximum number of processors and added the limits for ARM-v7 platforms. 88115
The documentation for dlopen() now mentions that the use of LD_DEBUG_OUTPUT with setuid binaries is disabled, for security reasons. 90385
The documentation for pthread_setname_np() now mentions that _NTO_THREAD_NAME_MAX is defined in <sys/neutrino.h>. 90638
The SPI (Serial Peripheral Interface) Framework technote now explains how to use the device argument to spi_getdevinfo(). (Ticket ID 00105894) 91933
We've updated the list of options in the documentation for devb-eide. 93052
We've corrected the description of S_IFMT in the entry for stat() in the QNX Neutrino C Library Reference. 93591
The documentation for gf-calib now explains why you might need to use the -D option to prevent the pointer cursor from being displayed. 95754
The calling process needs to be running as root in order to map physical memory; we've updated the documentation for mmap(), mmap_device_io(), and mmap_device_memory(). 96217
We've corrected the synopsis for PxConfigNextEntry() and PxConfigNextEntryCx() in the Photon Library Reference. (Ticket ID 00109615) 98993
We've corrected the list of options in the entry for cam-disk.so in the Utilities Reference. 99109
We've corrected the descriptions in the QDB Developer's Guide of what qdb_backup(), qdb_bkcancel(), and qdb_printmsg() return. 99605
We've updated the description of the -R option to qdb in the QDB Developer's Guide. 100763
We've corrected the synopsis for posix_spawn() in its entry in the QNX Neutrino C Library Reference. 101175
We've corrected a call to bt_set_flags() in an example in the Backtraces technote. 103229
The fcntl(), flock(), and lockf() functions can give an error of ENOSYS if the filesystem (e.g., the /dev/shmem “filesystem”) doesn't support file locking. 103420
The documentation for pci_attach_device() now describes how to determine whether or not a device supports MSI or MSI-X and how to assign an interrupt in the driver. (Case 00104937, 00110660) 103614
The QDB Developer's Guide now describes the special block and nonblock values that you can specify for the -t and -T options. 103621
We've updated the documentation for the Dinkumware libraries. 103671
We've corrected the description of what dircntl() returns. 111113
The posix_spawn*() functions return error codes instead of setting errno. We've corrected the documentation. 111758
We've corrected the examples of typed memory and the names of the POSIX_TYPED_MEM_* constants in the System Architecture guide. 114978
It isn't safe to call posix_spawn(), posix_spawnp(), or setdomainname() from an interrupt handler. It isn't safe to call trace_logf(), trace_nlogf(), or trace_vnlogf() from an interrupt handler if the format codes or parameters include float elements. 115067
We've updated the list of options in the entry for cam-cdrom.so in the Utilities Reference. 117625
We've corrected the name of the _sync_attr structure in the entry for SyncTypeCreate() in the QNX Neutrino C Library Reference. 119923
The pidin utility's R format and timers shorthand form report the time left before a timer's expiry and the timer interval in microseconds, not milliseconds. 120457
We've corrected the synopsis for ha_fopen() in the High Availability Framework Developer's Guide. 121752
The GNU C++ library type is supported on all architectures; we've corrected the documentation for qcc. 125649
We've added entries for procmgr_event_notify_add() and procmgr_event_notify_delete() to the QNX Neutrino C Library Reference. 125766
We've corrected the spelling of EACCES in various entries in the QNX Neutrino C Library Reference. 126027
The entry for devb-eide in the Utilities Reference now describes how the driver chooses the connection mode. (Ticket ID 00113539) 132399
We've corrected the descriptions in the QNX Neutrino C Library Reference of clock_getcpuclockid(), clock_gettime(), ClockId(), ClockTime(), and pthread_getcpuclockid(). 134916
SchedGet() returns an actual scheduling policy value, not SCHED_ADJTOHEAD or SCHED_ADJTOTAIL. We've corrected the documentation. 136989
We've corrected the explanation in Getting Started with QNX Neutrino of why you can't fork() a multithreaded process. 139031
We've corrected the sample installation script in the “How to create a Runtime Kit from the QNX Software Development Platform” technote, so that the script exits if there's already a partition of type 179 on the disk. 142158
If you want to set up a bridge whenever you boot your system, you need to add the appropriate commands to your /etc/rc.d/rc.local file. We've corrected the documentation for brconfig. (Ticket ID 00114672) 144619
The entry for pidin in the Utilities Reference now describes all of the format codes. 145436
The maximum number of active processes on an ARMv7 platform is 255, the same as on ARMv6. 148701
We've documented the -o nodaemon option for devc-serpci and devc-serusb, and the -d option for mq, mqueue, and pipe. These options prevent the process from becoming a daemon. 157100
We've corrected the name of the usbmgr_path option in the entry for enum-usb in the Utilities Reference. 157297
If you're using posix_typed_mem_open(), you need to include <fcntl.h> in order to get the definitions of O_RDONLY, etc. 160248
We've corrected the entry for mem_offset() and mem_offset64() in the QNX Neutrino Library Reference. You must call these functions with NOFD for the fd argument. 160360
The entry for pci_attach_device() in the QNX Neutrino Library Reference now describes the PCI_USE_MSI and PCI_USE_MSIX flags. 162456