Home
Developer Resources
Technical Articles

QNX Technical Articles

QNX® Software Development Platform 6.4.0: Release Notes

Date of this edition: December 05, 2017


Note: Changes to these notes since October 24, 2008 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.4.0.

Host OS: You can install this package as a self-hosted QNX Neutrino® development system, or on one of the following development hosts:

  • Microsoft Windows Vista, Vista 64-bit, XP SP2 or SP3, or 2000 SP4
  • Linux Red Hat Enterprise Workstation 4 or 5, Red Hat Enterprise Server 5.1 64-bit, Red Hat Fedora Core 6 or 7, Ubuntu 6.0.6 LTS or 7, or SUSE 10

You can also install the QNX Neutrino RTOS as a virtual machine:

  • We support and have tested SDP on VMware Workstation 5.5.
  • Other virtualization products (e.g. VMware Workstation 6.0, VMware Player, Microsoft VirtualPC) should work.
  • VMware Player can't create virtual machines, but the one supplied has been tested on VMware Player.

If you find problems with any virtualization environment, please let us know.


Note:
  • We no longer support the QNX Momentics Tool Suite on the following hosts:
    • Windows NT
    • Linux Red Hat 8 and 9
    • Solaris
  • You can't install QNX SDP 6.4.0 on machines that are running 64-bit Linux Ubuntu 7.10. (Ref# 56182)
  • New: We no longer include the IDE on self-hosted QNX Neutrino systems.
  • For the latest information about using BSPs with QNX SDP 6.4.0, see the SDP 6.4.0 BSP Information page (http://community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/SDP_6.4.0_BSP_Info?_message=1218739798710) found in the BSPs and Drivers project of Foundry27.
  • For the most up-to-date version of these notes, go to our website, www.qnx.com, log into your myQNX account, and then go to the Download area.


Caution: If you installed an alpha version of this software, uninstall it before installing the production version.

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 into 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 the QNX Software Development Platform?

New:

The QNX Software Development Platform bundles the QNX Momentics Tool Suite, the QNX Neutrino RTOS, or both, as shown below:

On Linux and Windows: On QNX Neutrino:
QNX Momentics Tool Suite QNX Momentics Tool Suite
QNX Neutrino RTOS

The QNX Momentics Tool Suite includes the following:

On Linux and Windows: On QNX Neutrino:
Command-line tools
Libraries, documentation, and other development components
Integrated Development Environment
Command-line tools
Libraries, documentation, and other development components

We no longer include the IDE on self-hosted QNX Neutrino systems.

What's new in QNX Neutrino 6.4.0?

The key improvements in 6.4 include:

  • Performance — improvements in performance for the kernel and the networking stack are significant for the 6.4.0 release. Moreover, the complete OS has been rebuilt with the gcc 4.2 compiler, resulting in more compact and faster code.
  • POSIX PSE52 Certification — Neutrino RTOS version 6.4.0 is officially POSIX certified. Products are listed here: http://get.posixcertified.ieee.org/cert_prodlist.tpl
  • New Power-Safe Filesystem — The power-safe filesystem, fs-qnx6.so, is a new copy-on-write filesystem for block file devices.
  • If you install QNX Neutrino in a Power-Safe filesystem partition, Symmetric Multiprocessing (SMP) is enabled by default. The SMP version of the kernel works on multi- and single-processor systems.
  • Expanded Processor Support:
    • ARM version 6 Support — the Core OS now takes full advantage of the ARM V6 architecture. This support also removes the 32 MB restrictions on process memory space.
    • Freescale e500 and Renesas 7786 processors with SMP support.
  • New: Wi-Fi Wireless Support — the new networking stack introduced with 6.4.0 includes Wi-Fi support.
  • Introduction of Core Graphics — the former Advanced Graphics TDK is no longer offered. In its place, the same advanced graphics capability is available as a runtime option, Core Graphics. Photon and Core Graphics share a common driver framework, so drivers for either technology work (e.g. Photon can run on AG TDK drivers). Note also that Photon requires Core Graphics to run.
  • High Availability Technology — now available as part of the base QNX Neutrino runtime.

For more details, see the following sections:

Migrating from earlier releases

  • Binaries created with QNX Momentics 6.3 should be compatible with 6.4.0, but note the following:
    • The same C++ ABI change between gcc 2.95.3 and 3.3.5 exists between 2.95.3 and 4.2.4. Older C++ binaries linked against libcpp.so.3 and libstc++.so.5 will still work because we are shipping those legacy C++ libraries in 6.4.0. You can't link old C++ libraries into new C++ programs.
    • We've made some changes to conform to POSIX. For example, we've changed the value of EALREADY; if you start procnto with the -en option, the libraries use the new value, which might cause an old binary to fail when it wouldn't have before. For more information, see What's new: POSIX PSE52 conformance,” below.
    • We've incremented the version number of libc.so to 3, in order to support older binaries. You need to update your buildfiles; for more information, see What's new: Libraries and header files,” below.
  • The QNX Momentics Tool Suite on Windows and Linux includes version 4.5 of the IDE. For information about migrating to the latest IDE, see the Migrating from Earlier Releases appendix of the IDE User's Guide.
  • QNX Neutrino 6.4.0 has a new core networking stack; we've introduced io-pkt and removed io-net. For information about migrating to io-pkt, see the Migrating from io-net appendix of the Core Networking User's Guide.
  • You can now get Board Support Packages from our website. For information about building BSPs from earlier releases, see http://community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/PRE640BSP_migrationDoc on our Foundry27 community website.
  • The Photon microGUI now runs transparently on top of the Advanced Graphics framework. If you're building OS images that include Photon, you'll have to update your buildfiles; for more information, see the Photon in Embedded Systems appendix of the Photon Programmer's Guide.
  • All 6.3.x driver binaries should be compatible with 6.4.0, except audio (deva-*), block I/O (devb-*), and graphics (devg-*) drivers. The audio and block I/O drivers should compile on 6.4.0 with minor code changes. The 6.4.0 graphics drivers run on top of io-display instead of on Photon.

    For more information about the changes to the audio drivers, see What's new: Audio device drivers (deva-*),” below.

  • You need to recompile ATAPI drivers that are BSP-specific for 6.4 (the driver, io-blk, and the filesystems need to be in sync).
  • Serial drivers are statically linked, so there's no issue running binaries from 6.4.0 on 6.3.x. If you want to compile a 6.4.0 serial driver on 6.3.x, you'll need the 6.4.0 versions of libio-char.a, <io-char.h>, and dcmd_chr.h.
  • 6.3.x USB drivers should be compatible with 6.4.0.

Supported targets

We no longer support ARMBE, MIPSBE, MIPSLE, or Intel 386 targets. (Ref# 58190, 58192, 58193)

POSIX PSE52 conformance

We've made the changes described below in order to conform to PSE52, a subset of POSIX intended for realtime controllers.

  • POSIX requires that you specify MAP_PRIVATE or MAP_SHARED as one of the mmap() flags, but earlier versions of our OS assumed MAP_PRIVATE if you didn't specify either. (Ref# 46290)
  • We've implemented the _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS configuration string. (Ref# 48046)
  • We've added another underscore to the names of the _mutex_* macros in pthread.h, so that they no longer violate POSIX name space rules. We still provide the macros with the old names as Neutrino extensions. (Ref# 46122)
  • In <aio.h>, we changed the name of the next member of the struct aiocb to _aio_next to avoid namespace pollution. (Ref# 46119)
  • In various structures, we've protected field names that aren't specified by POSIX by renaming them so as to start with two underscores. The affected types are:
    • sync_t
    • sem_t
    • pthread_mutex_t
    • pthread_cond_t
    • pthread_mutexattr_t
    • pthread_condattr_t
    • pthread_attr_t

    Any code that explicitly references the old field names will no longer compile. You should modify those references to use a leading __ before the field name. This issue affects only the compilation of code with the latest system header files; binary compatibility isn't affected. (Ref# 46088, 46089, 46090, 51558)

  • In <fcntl.h>, we changed the name of the zero1 member of the flock and flock64 structures to l_zero1. (Ref# 46084)
  • The aio_fsync() function now ignores all fields except aio_fildes. (Ref# 45733)
  • The aio_fsync() function now returns EBADF if the file descriptor isn't a valid file descriptor opened for writing. (Ref# 45732)
  • For signal delivery on asynchronous I/O completion, the si_code is now set to SI_ASYNCIO. (Ref# 45730)
  • For sporadic scheduling, pthread_getschedparam() now returns the original priority instead of the low priority. (Ref# 45693)
  • The timer_settime() function now rounds up time values that are between two consecutive nonnegative integer multiples of the resolution of the specified timer to the larger multiple of the resolution. (Ref# 45388)
  • A call to rmdir("..") now results in an error of EEXIST instead of EINVAL. (Ref# 45387)
  • The scanf() function now correctly returns EOF instead of 0 in a test. (Ref# 45383)
  • We fixed some bugs in strxfrm() and strcoll() to deal with the collation ordering in POSIX locale definitions. (Ref# 45380, 45381)
  • The sysconf() function now indicates that the value of _SC_SEM_NSEMS_MAX (the maximum number of semaphores) is indeterminate because that limit applies to both named and unnamed semaphores. The kernel allows an arbitrary number of unnamed semaphores (they're kernel synchronization objects, so the number of them is limited only by the amount of available kernel memory). (Ref# 45143)
  • We've implemented _SC_AIO_PRIO_DELTA_MAX, the maximum amount by which a process can decrease its asynchronous I/O priority level from its own scheduling priority. (Ref# 45141)
  • Asynchronous I/O operations now check aio_reqprio and return EIO if it's invalid. (Ref# 45124)
  • The pthread_key_create() function now correctly invalidates previously used key values. (Ref# 45071)
  • If you specify the LIO_WAIT flag, lio_listio() now correctly reports I/O errors. (Ref# 45057)
  • The lio_listio() function now returns an EINVAL error if you specify an invalid mode. (Ref# 45056)
  • The pthread_mutex_getprioceiling() and pthread_mutex_setprioceiling() functions now retry instead of returning EINTR if they're interrupted. (Ref# 44957)
  • The pthread_mutex_setprioceiling() function now correctly acquires an unlocked mutex. (Ref# 44955)
  • The values of PTHREAD_STACK_MIN and _SC_THREAD_STACK_MIN now match. (Ref# 44565)
  • The ftrylockfile() function no longer causes a SIGSEGV. (Ref# 44521)
  • We now support PTHREAD_PRIO_NONE. (Ref# 44486)
  • If you call aio_cancel() with an invalid file descriptor, the function now fails and sets errno to EBADF. (Ref# 44239)
  • Calling sysconf(_SC_DELAYTIMER_MAX) now returns the value used by the timer overrun code. (Ref# 44230)
  • If you call fcntl() with an invalid command, the function now sets errno to EINVAL instead of ENOSYS. (Ref# 44229)
  • The mktime() function now correctly updates the time structure passed in when it specifies tm_isdst==-1. (Ref# 44226)
  • The lgamma() function no longer causes an underflow condition to be raised by intermediate calculations. (Ref# 44126)
  • Calling difftime(0xffffffff, 0) now returns 0xffffffff instead of 1, and calling difftime(0, 0xffffffff) now returns -0xffffffff instead of -1. (Ref# 44124)
  • The fpathconf() function now returns values for _PC_ASYNC_IO and _PC_PRIO_IO. (Ref# 44122)
  • The strtod() function now correctly rounds negative numbers. (Ref# 44053)
  • The strtod() function now sets errno to ERANGE if an underflow occurs. (Ref# 44047)
  • It's now possible to open OPEN_MAX file descriptors, instead of just OPEN_MAX − 1. (Ref# 44046)
  • The strftime() function now returns the correct string when tm_isdst is negative. (Ref# 43768)
  • The fseek() function now fails if you specify an invalid whence parameter. (Ref# 43738)
  • The freopen() function now sets errno to EBADF instead of to EINVAL if the underlying file descriptor is invalid or doesn't support the requested mode change. (Ref# 43737)
  • The freopen() function no longer reuses the existing file descriptor. (Ref# 43736)
  • A call to fcntl(F_GETFL) now returns only the status and access bits. (Ref# 43679)
  • If the POSIXLY_CORRECT environment variable is set, functions that check the length of a pathname do so before removing any redundant . and .. components. If POSIXLY_CORRECT isn't set, the functions check the length after removing any redundant components. (Ref# 43677)
  • Calls to sysconf(_SC_TZNAME_MAX) now return the value of TZNAME_MAX. (Ref# 43658)
  • Using an invalid 32-bit aio_offset now causes errno to be correctly set to EINVAL instead of EOVERFLOW. (Ref# 43335)
  • The strtol() and related functions now set errno to EINVAL if the base is invalid. (Ref# 43213)
  • SIGEV_NONE, SIGEV_SIGNAL, and SIGEV_THREAD are now defined as symbolic constants instead of as enumerated values. (Ref# 43049)
  • The value argument to timer_settime() is now a const. (Ref# 43046)
  • The non-POSIX symbols in <sys/types.h>, <sys/platform.h>, <time.h>, <stdio.h>, <math.h>, and other header files are now defined as extensions. (Ref# 42978, 42979, 42981, 42982, 42985, 42988, 42990, 42993, 43044, 43045)
  • The addr argument to mprotect() is no longer defined as const. (Ref# 43043)
  • We've implemented strerror_r(). (Ref# 43034)
  • We've implemented getc_unlocked(), getchar_unlocked(), putc_unlocked(), and putchar_unlocked(). (Ref# 43033)
  • The <signal.h> header file now defines pthread_kill() and pthread_sigmask() as __EXT_POSIX1_200112 instead of as __EXT_XOPEN_EX. (Ref# 43032)
  • The sporadic scheduler fields in sched_param are now defined for __EXT_POSIX1_200112, as well as for __EXT_QNX. (Ref# 43031)
  • We've implemented pthread_setschedprio(). (Ref# 43030)
  • The attr argument to pthread_cond_init() is now defined as const. (Ref# 43029)
  • We've fixed _POSIX2_VERSION so that it aligns with POSIX 1003.1-2001 and 1003.1-1996. (Ref# 42992)
  • We put isfdtype() under __EXT_QNX. This was a function 1003.1g that was withdrawn in later drafts. (Ref# 42989)
  • We've corrected the values of _POSIX_CHILD_MAX, _POSIX_NGROUP_MAX, _POSIX_OPEN_MAX, and _POSIX_TZNAME_MAX in <limits.h>. (Ref# 42987)
  • POSIX requires that the error numbers in <errno.h> have unique values. (Ref# 42983)

    In order to satisfy this requirement, we need to change the value of EALREADY; its current value is 16 (same as EBUSY), but the new (POSIX-compliant) value is 237. However, this change would cause incompatibility problems because code that currently uses EALREADY will be compiled to use the old value.

    In order to allow applications to safely make the transition to the new value, we've modified <errno.h> to define the following symbolic values:

    • EALREADY_OLD is the current value (16).
    • EALREADY_NEW is the new value (237).
    • EALREADY_DYNAMIC is a value that you can configure at runtime. This is a variable in libc that's set to either the old or new value, based on a system-wide configuration parameter.

    For QNX SDP 6.4.0, EALREADY is defined as EALREADY_OLD in order to allow programs by default to be compatible with existing binaries. In a future release, we'll change EALREADY to EALREADY_NEW.

    You should modify your code as follows:

    • If your code checks for an EALREADY error code, you should change it to something like this:
      #if defined(EALREADY_NEW) && defined(EALREADY_OLD)
          if (error == EALREADY_NEW || error == EALREADY_OLD) {
              // deal with EALREADY error cases
          }
      #else
          if (error == EALREADY) {
              // deal with EALREADY error cases
          }
      #endif
          

      This will ensure that the code handles EALREADY error cases from any API that returns either the old or new value of EALREADY.

    • If your code returns an EALREADY error, you should make it return EALREADY_DYNAMIC instead. In many cases, you can do this by adding -DEALREADY=EALREADY_DYNAMIC to the compiler flags.

    The value of EALREADY_DYNAMIC is determined by a procnto option:

    • procnto -en sets EALREADY_DYNAMIC to EALREADY_NEW.
    • procnto -eo sets EALREADY_DYNAMIC to EALREADY_OLD.

    The default for 6.4.0 is -eo (EALREADY ==EALREADY_OLD). We'll change this in a future release so that the default is -en (EALREADY == EALREADY_NEW).

  • New: We've implemented the llabs() function. (Ref# 42980)
  • The following types are now defined in <sys/types.h>:
    • pthread_attr_t
    • pthread_cond_t
    • pthread_condattr_t
    • pthread_key_t
    • pthread_mutex_t
    • pthread_mutexattr_t
    • pthread_once_t
    • pthread_t

    instead of in <pthread.h>. (Ref# 42977)

  • The ino_t type has changed from signed to unsigned. (Ref# 27903)

    This change shouldn't affect any code that examines inode values, because the only meaningful operation is to compare for equality.

    If your code constructs 64-bit inode numbers from 32-bit ones, you should make sure that you don't extend the sign into the top 32 bits.

  • We've changed unsetenv() to comply to POSIX 1003.1-2001; it now returns 0 on success, or -1 if an error occurs (errno is set). (Ref# 26165)
  • POSIX requires that mmap() fail with EINVAL if the flags argument doesn't contain either MAP_SHARED or MAP_PRIVATE. Currently, procnto treats these (incorrect) mmap() calls as MAP_PRIVATE. If you disable the memory manager's backward compatibility via the -m~b option to procnto, these incorrect mmap() calls fail with EINVAL as required by POSIX. (Ref# 46288)

    You should examine all code that uses mmap(), to ensure that it uses MAP_PRIVATE if required. The most common example of code that requires this change is a call to mmap() using only MAP_ANON. You should change these calls to use MAP_PRIVATE|MAP_ANON.


    Note: In order to provide time for you to make this change, the procnto -m~b option still implicitly sets MAP_PRIVATE if you use MAP_ANON without it. However, we might remove this transitional behavior in a future release.

  • POSIX specifies that a number of calls must fail with EINVAL if the supplied timespec is invalid (tv_nsec < 0 or tv_nsec > 1000000000). We've updated the following functions:
    • clock_nanosleep()
    • mq_timedreceive()
    • mq_timedsend()
    • pthread_cond_timedwait()
    • pthread_mutex_timedlock()
    • pthread_rwlock_timedrdlock()
    • pthread_rwlock_timedwrlock()
    • sem_timedwait()
    • sigtimedwait()

    (Ref# 56889, 58977)

What's new: Kernel

  • Performance improvements:
    • Automatic variable page size selection in the kernel's virtual memory manager yields a speed increase of approximately 20%.
    • Variable page size for performance improvement:
      • You can increase the page size beyond 4 KB, using fewer TLB entries
      • Results in fewer TLB misses, improving performance
    • Increased networking throughput, up to twice that of the previous network stack
    • Code generation improvements through the use of gcc 4.2; we've rebuilt the entire operating system with GCC 4.2 tool chain.
    • New: We've reduced the amount of memory fragmentation that takes place. (Ref# 52911; Ticket ID 81282)
  • Substantial maintenance update of entire product
  • POSIX PSE52 certification
  • New CPU architectures / features:
    • ARMv6 architecture support (via procnto-v6), including the removal of the 32 MB process restriction, no global address space
    • Vector Floating Point support
    • IBM 970 (PPC) architecture support including SMP (via procnto-900 and procnto-900-smp)
    • Freescale E500 SMP support
    • Renesas 7786 SMP Support
    • PPC BAT addressing
  • New: We used to support only the SH-4 29-bit physical address model. This model gives you 512 MB of system RAM, but some of that was required for device mappings and flash, so we were restricted to 256 MB of RAM.

    We now support the SH-4a 32-bit physical address model (in addition to the SH-4 29-bit model), but with restrictions. There must be sufficient RAM within the physical address range of 0 to 512 MB for the kernel to operate. The startup and kernel can now support RAM above the 512-MB boundary, but that RAM is available only to user-level processes. Ideally large memory systems will have at least 256 MB of RAM available below the 512-MB physical address boundary. (Ref# 47671)

  • 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. If you require cross-endian networking with Qnet, please contact your QNX sales representative.
  • Support for lazy allocation of physical memory for shared memory objects (SHMCTL_LAZY)
  • Increased scalability of some kernel data structures (timers, send queues, signals) for improved interrupt latency.
  • On PPC targets, when the kernel does a context switch, it issues a dummy stwcx. (Store Word Conditional Indexed) command to clear any outstanding reservation, as recommended for the PPC architecture. However, some processors can have issues if this stwcx. to address A occurs while the reservation is already held to a different address B.

    To avoid this problem on these processors, procnto must first issue a dummy lwarx (Load Word And Reserved Indexed) command to a specific address, and then issue the dummy stwcx. to the same address. We've created a system page cpuinfo flag, PPC_CPU_STWCX_BUG, to indicate which CPUs are affected and, on those processors, adds the dummy lwarx to the context switch code. (Ref# 45538)

  • We now support the N bit in the segment registers of the PPC600 family. If this bit is on, any attempt to execute code in the region covered by the segment register (a 256 MB size) will result in a protection exception.

    Note: Any PROT_EXEC in a 256 MB region turns off the N bit and allows code execution throughout the whole region.

    There's a new -m[~]x option to procnto that enables or disables the PROT_EXEC flag for system-allocated threads. It's enabled by default. (Ref# 58299, 58434)

  • There's a new -m[~]P to procnto that controls whether or not anonymous allocation can occur above the 4 GB mark. (Ref# 52392, 60956; Ticket ID 80995)
  • On PowerPC and SH4, if an msync() operation (with MS_INVALIDATE) is performed on a lazy mapping (a mmap() of anonymous memory with MAP_LAZY), the msync() no longer causes the lazy pages to get allocated and mapped in. (Ref# 29647)
  • If you send with the “nc” variant of MsgSend*(), then when the server replies, you're now placed at the front of the ready queue, rather than at the end. Note that your timeslice isn't replenished; for example, if you had already used half of your timeslice before sending, then you will still only have half a timeslice left before being eligible for preemption. This change lets MsgSendnc() to behave in a similar fashion to a non-blocking kernel call, without penalizing the caller by forfeiting its timeslice. (Ref# 52564)

    The documentation doesn't yet include this change. (Ref# 62293)

  • New: Long executable names no longer cause a buffer overflow. (Ref# 38199)
  • New: It's no longer possible for an unprivileged process to debug a setuid program without restriction. (Ref# 11211)

What's new: Core networking

QNX Neutrino has a new core networking stack that's based on NetBSD 4.0 stack. The main features include:

  • Improved performance over the previous generation stack
  • Jumbo packets
  • TCP offloading (checksum and segmentation)
  • Berkley Packet Filter interface
  • Layer 2 Bridging & STP
  • TCP SACK
  • Unix Domain Sockets
  • Fast forwarding
  • Routing and raw socket support
  • Transparent ioctl() support
  • Security:
    • IPSEC and hardware crypto offload
    • IP Filtering and NAT using PF
    • PF_KEY support (for encryption enabled stacks)
  • NetBSD 4.0 driver API compatibility, with a “shim” layer to transparently support legacy io-net drivers
  • Wireless support:
    • 802.11 a/b/g with WEP, WPA, WPA2
    • 802.11 Access Point
    • Atheros 5006x , Marvell 86W86, Broadcom BCM43xx chipsets

There are three variants of the networking manager:

io-pkt-v4
IPv4 version of the stack with no encryption or Wi-Fi capability built in. This is a “reduced footprint” version of the stack.
io-pkt-v4-hc
IPv4 version of the stack that has full encryption and Wi-Fi capability built in and includes hardware accelerated cryptography capability (Fast IPsec).
io-pkt-v6-hc
IPv6 version of the stack (includes IPv4 as part of v6) that has full encryption and Wi-Fi capability, also with hardware accelerated cryptography.

Note: In our documentation, we use io-pkt to refer to all the stack variants. When you start the stack, use the appropriate variant; io-pkt isn't a symbolic link to any of them.

We've discontinued the following:

Instead of using: Use:
io-net io-pkt*
ipf, ipfs, ipfstat, ipmon, ipnat pf, /etc/pf.conf, pfctl
lsm-ipfilter-v4.so, lsm-ipfilter-v4.so lsm-pf-v4.so, lsm-pf-v6.so
lsm-sctp.so N/A; not currently supported by io-pkt*
nfm-autoip.so lsm-autoip.so
npm-pppmgr.so Now included in io-pkt*
npm-pppoe.so Now included in io-pkt*
npm-qnet.so, npm-qnet-l4_lite.so lsm-qnet.so
npm-qnet-compat.so N/A
npm-tcpip.so N/A
npm-tcpip-v4.so, npm-tcpip-v6.so Now included in io-pkt*
npm-ttcpip.so N/A

We also no longer ship the SRI SNMP suite or the Network DDK.

The new, related binaries include:

brconfig
Configure network bridge parameters
hostapd
Authenticator for IEEE 802.11 networks
ifwatchd
Watch for addresses added to or deleted from interfaces and call up/down-scripts for them
lsm-autoip.so
AutoIP negotiation module for link-local addresses
lsm-qnet.so
Transparent Distributed Processing (native QNX network) module
/etc/nsswitch.conf
Name-service switch configuration file. This file replaces the lookup keyword in /etc/resolv.conf.
openssl
Command-line tool for using the OpenSSL crypto library
pf
Packet Filter pseudo-device
pf.conf
Configuration file for pf
pfctl
Control the packet filter (PF) and network address translation (NAT) device
pppoectl
Display or set parameters for a PPPOE interface
sockstat
List the open sockets
tcpdump
Dump traffic on a network
wpa_cli
WPA command-line client
wpa_passphrase
Set WPA passphrase for a SSID
wpa_supplicant
Wi-Fi Protected Access client and IEEE 802.1X supplicant

The other changes of note include the following:

  • With io-net, loopback checksumming was via ifconfig. For example:
    ifconfig lo0 ip4csum tcp4csum udp4csum 
      

    With io-pkt, you control this via sysctl:

    # sysctl -a | grep do_loopback_cksum
    net.inet.ip.do_loopback_cksum = 0
    net.inet.tcp.do_loopback_cksum = 0
    net.inet.udp.do_loopback_cksum = 0
      

    (Ref# 44227)

  • We now use /etc/nsswitch.conf, a name-service switch configuration file. This file replaces the lookup keyword in /etc/resolv.conf. (Ref# 45835)
  • We now use the NetBSD 4.0 version of ftp and ftpd, although ftpd also supports the -n option that was added after version 4.0. (Ref# 59340, 59368, 59369)
  • The pppoed binary is now just a shim layer that phdialer uses to dial up PPPOE. PPP over Ethernet is now part of the io-pkt* stack. (Ref# 60249)
  • The pppd option persist now has a slightly different behavior. In earlier versions, if you specified the persist option, pppd reopened the connection after closing without any limits. The new version of pppd uses the maxfail option to limit the number of reopenings that occur. To emulate the original pppd behavior, use the persist option combined with maxfail=0 to disable the limit count. (Ref# 50941)

What's new: Filesystems

QNX Neutrino 6.4.0 introduces the Power-safe “copy on write” filesystem. It's the default filesystem for self-hosted Neutrino systems. FFSv3 and ETFS are included in base runtime.

The new filesystems and the related utilities include:

chattr
Manipulate the attributes of a file (QNX Neutrino)
chkqnx6fs
Check an entire Power-Safe filesystem for consistency (QNX Neutrino)
fs-qnx6.so
Shared object that supports the Power-Safe filesystem (QNX Neutrino)
fs-udf.so
Shared object that supports Universal Disk Format (OSTA-UDF/ECMA-167) filesystems
fsysinfo
Display filesystem statistics (QNX Neutrino)
mkqnx6fs
Format a Power-Safe filesystem (QNX Neutrino)

For more information, see the Filesystems chapters in the System Architecture and the Neutrino User's Guide, as well as the entries in the Utilities Reference.

Other changes include:

fs-etfs-ram
An ETFS filesystem is no longer mounted by default; you can use the -m option or mount -tetfs /dev/etfs2 my_mountpoint. (Ref# 41841, 57498; Ticket ID 74912)
fs-qnx4.so
A deadlock no longer occurs during one of our benchmark tests. (Ref# 49288, 49636)

Required device properties for the Power-Safe filesystem

New:

The Power-Safe filesystem was designed for and is intended for traditional rotating hard disk drive media. It operates by moving the on-disk filesystem state from one stable view to another stable view using copy-on-write (COW) to relocate modified blocks. To finalize this transition, all dirty blocks involved in the new view must be committed to persistent storage, and then a new filesystem superblock/root referencing the relocated blocks is committed.

This provides power-safe robustness, because at any point in time either the old version is completely accessible or the new version is completely accessible (with no live data being overwritten in between). Thus to mount as read-write on a given device, that device must have the following properties:

  • one of the following:
    • The device may buffer write data for performance reasons, and the return from a WRITE may not necessarily indicate the data is committed to permanent storage. But such a device must implement a FLUSH/SYNC command that forces any cached or buffered write data to persistent storage, and doesn't return until it's guaranteed that all data is stable across a power-loss.

      or:

    • The device doesn't buffer write data, and operates in a strict write-through manner, where return from a WRITE is a guarantee that the data was immediately committed to persistent storage. Such a device doesn't require an additional FLUSH/SYNC command.
  • and both of the following:
    • The action of writing to one data region (an advertised device sector) can in no way damage the contents of any other region, even under conditions such as power-loss, vibration, temperature, etc.

      and:

    • Data that has previously been reported as committed to persistent storage remains stable until explicitly overwritten. The device may implement facilities such as bad-block remapping or wear-leveling to support this requirement, provided that such activity never causes loss of persistent data, even under conditions such as power-loss, etc.

What's new: Graphics

  • Common Photon and 2D/3D graphics drivers
  • Photon, Aviage HMI player, and graphics applications can coexist on the same system.
  • Changes to Photon:
    • one-pass widget rendering
    • reimplemented offscreen container widget, PtOSContainer
    • improved font system: smaller, faster, and easier to install and configure.
    • an improved ph results in a cleaner and faster startup
    • new phgrafx application for configuring graphics options

The new binaries include:

dispconf
Generate display configuration data
gf-calib
Calibrate a Graphics Framework (GF) touchscreen (QNX Neutrino)
io-display
QNX Advanced Graphics server

When you want to run both GF/OpenGL ES and Photon applications, you must start io-display before starting the Photon graphics server, io-graphics. In this situation, io-graphics queries io-display for the display's settings rather than its own command-line settings.

For more information on io-display and Photon, refer to Appendix: Photon in Embedded Systems in the Photon Programmer's Guide.

phrelaycfg
Configure remote access to your Photon session.

Note: We strongly recommend that you use the Advanced Graphics layering API instead of the Photon layering API, due to increased functionality and ease of use. (Ref# 60878)

What's new: Libraries and header files

libc.so
Because of some changes in the way that gcc handles its runtime support routines, we've had to change the version number of libc.so to 3, to be able to support old (pre-6.4.0) binaries on a 6.4.0 system.

There are two changes that were made to gcc:

  • The link visibility of the runtime support symbols in libgcc has changed to be hidden. This means that each binary (executable or shared object) has its own copy. Linking against a shared library now no longer lets you use the copy that's in the shared library. Earlier binaries relied on finding these symbols in libc.so.2.
  • The other change was in the way the compiler calls the runtime support routines. It has specific knowledge of the registers corrupted by each routine, and it also assumes that the routines won't be called indirectly (i.e. the routines won't live in another executable or shared object). This means that it saves fewer registers than it used to before calling the routine (a performance improvement), but that if an executable compiled with gcc 4 is linked in such a way that it calls a runtime support routine indirectly, then register corruption will occur.

You need to update your buildfiles as follows to use the new version of libc.so:

  • Change this line:
    procmgr_symlink ../../proc/boot/libc.so.2 /usr/lib/ldqnx.so.2
        

    to this:

    procmgr_symlink ../../proc/boot/libc.so.3 /usr/lib/ldqnx.so.2
        
  • If your buildfile explicitly includes libc.so.2 in the list of binaries, change it to include libc.so (or at least libc.so.3).
  • Add libc.so.2 to the list of included binaries before libc.so:
    # Include the current libc.so. It will be created as a real
    # file using its internal SONAME, with libc.so being a
    # symlink to it. The symlink will point to the last libc.so.*,
    # so if an earlier libc is needed (e.g. libc.so.2), add it
    # before libc.so.
    
    libc.so.2
    libc.so
        

(Ref# 58590, 59482)

librcheck.so
New: This library replaces libmalloc and libmalloc_g.
Dinkum libraries
We've upgraded to Dinkumware version 5.0. For information about the changes to the libraries, see http://www.dinkumware.com/WhatsChanged.aspx. The new libraries include at least the following corrections:
  • If you call pow( x, 2.0f ), the function no longer returns infinity for small values of x.
_cmdname()
New: The _cmdname() function now correctly gives the full path that the current process was invoked from. Not only does this change make _cmdname() behave as documented, but it's necessary to make _cmdfd() work correctly. (Ref# 59299)
dispatch_create_channel()
This function is similar to dispatch_create(), but it lets you specify the channel ID for the dispatch. This lets you safely use name_attach() in Photon applications, as well as specify channel flags for name_attach(). (Ref# 24325, 59009)

Note: If your code calls the internal (and undocumented) _dispatch_create() function, you should modify it to call dispatch_create_channel() instead.

encrypt()
This function now lets you encrypt or decrypt the given string, depending on the flags argument. (Ref# 40565, 40639)
pthread_mutex_timedlock()
This function now returns EOWNERDEAD if the owner of the lock died while holding it. (Ref# 52449, 52863)
shm_ctl_special()
This function supports some new special flags for PPC and ARM platforms. (Ref# 39614, 48279, 58664)
spawn*()
There's a new SPAWN_PADDR64_SAFE flag that permits the selective application spawn of a task that's known to be 64-bit safe or doesn't care about the physical memory location. (Ref# 52392, 60956; Ticket ID 80995)

What's new: Drivers

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

The new drivers and DLLs include:

deva-ctrl-intel_hda.so
Sound driver for the Intel High Definition Audio controllers
deva-mixer-hda.so
Mixer DLL for High Definition Audio codecs. We currently support a limited number of codecs.

Other changes include:

  • There's a new open API snd_pcm_open_name() that lets you specify the path to the PCM device as a string argument. You can use this to open PCM devices by their symbolic name. See io-audio and the play_device driver option.
  • Audio drivers now support pause and resume functions, and can now cache audio data in io-audio. This feature is functional only if the driver supports it. See snd_pcm_playback_pause(), snd_pcm_playback_resume(), snd_pcm_capture_pause(), and snd_pcm_capture_resume().
  • Audio needs amounts of contiguous physical memory for its transient DMA buffers, and due to fragmentation of the system memory pool over time, io-audio can sometimes fail to allocate a buffer. To address this issue, a DMA memory pool has been added to io-audio such that the ado_shm_alloc() DDK (Driver Development Kit) call uses the pool for buffer operations and avoids the system memory pool. See the pool_size option to io-audio.
  • We fixed many problems that occurred when converting PCM streams to match the underlying hardware using the PCM plug-in interface.
  • We've improved the performance for demanding speech-processing environments.

The changes to the Audio DDK include:

  • You must recompile all audio drivers, due to changes to the ado_pcm_dmabuf and ado_pcm_config structures.
  • We changed the name of ado_shm_mmap() to be ado_shm_map() because it now requires a flags parameter. For compatibility, you can set the flags argument to NULL.

The changes to the software PCM mixer include:

  • You can set the fragment size by using the global command option sw_mixer_samples=xxx, specifying the value in samples. The current mixer operates with a variable number of voices, but the audio sample size is determined by the hardware capabilities of the real hardware the mixer will operate against. Therefore the fragment size in bytes is samples * voices * sample size in bytes.
  • The software mixer algorithm needs to operate at only one sample rate. For this reason, there now are several methods that the algorithm can use to select the best rate. You can select the method by using the global option sw_mixer_rate=rate, where rate is one of the following:
    FAHC
    First Active High Quality. The rate is set to 44.1 or 48 KHz, depending on the first active stream.
    FA
    First Active. The rate is set by the first active stream.
    Lrate
    Lock the rate to the specified value, in hertz.

We've deprecated the drivers for Creative Sblive and Cyberpro5.

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

  • On a modem disconnect, libio-char.a now triggers an io_read for every client blocked on a read() call. The client's read() call returns with 0 (EOF). Make sure that your clients explicitly check for a return of EOF, instead of simply calling read() repeatedly if the number of bytes is less than expected. (Ref# 59308, 59593)

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

  • Flash filesystems now use a cache to remember the location of extents within files and directories, so that random seeking (especially backward) is much faster. (Ref# 56650)

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

The new drivers include:

devg-gma9xx.so
Graphics driver for Intel 945GX and 945GMx chipsets
devg-soft3d.so
Software 3D graphics module
devg-poulsbo.so
Graphics driver for the Poulsbo chipset. Note that this graphics driver is currently undocumented. Refer to the devg-poulsbo.so -use message for information about using this driver.

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

The new drivers include:

devh-egalax.so
Driver for USB Egalax touch devices
devh-touchintl.so
Driver for USB Touch International touch devices

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

The new drivers include:

devi-semtech
Semtech input manager for Photon
devi-zytronic
Zytronic input manager for Photon

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

The new drivers include:

devn-asix.so
Driver for the ASIX AX88172/AX88178/AX88772 USB Ethernet dongle
devn-micrel8841.so
New: Driver for Micrel 8841 (1 port) or 8842 (2 port) Ethernet controllers

Note: This driver supports only PCI versions of the Micrel 8841 (1 port) or 8842 (2 port) Ethernet controllers. (Ref# 67333)

devn-rtl8169.so
Driver for Realtek 8169 Gigabit Ethernet controllers
devnp-ath.so
Driver for wireless network adapters based on the Atheros AR5210, AR5211, AR5212, and AR5213 chips
devnp-axe.so
Driver for USB (2.0) Ethernet adapters based on the ASIX AX88172 chip
devnp-bcm1250.so
Driver for Broadcom BCM1250 10/100/1000 Mbit Ethernet controllers
devnp-bcm43xx.so
Driver for the Broadcom-based 802.11b/g wireless Ethernet controller
devnp-bge.so
Driver for Broadcom 57xx Tigon3 10/100/1000 Mbit Ethernet controllers
devnp-i82544.so
Driver for Intel 82540, 82544, 82545, 82546, and 82547 Gigabit Ethernet LAN adapters
devnp-mpc85xx.so
New: Driver for Freescale MPC85XX TSEC Ethernet controllers. This driver is shipped only with the BSPs that need it.
devnp-mpcsec.so
New: Hardware Crypto Engine driver. This driver is shipped only with the BSPs that need it.
devnp-msk.so
Driver for Marvell Yukon-2 based Gigabit Ethernet adapters
devnp-ral.so, devnp-ural.so
Driver for wireless adapters based on the Ralink RT2500, RT2501, RT2600, and RT2500USB chipsets
devnp-rum.so
Driver for USB 2.0 wireless adapters based on the Ralink RT2501USB and RT2601USB chipsets
devnp-shim.so
“Shim” driver for backward compatibility with io-net
devnp-speedo.so
Driver for Intel 82557, 82558, and 82559 Fast Ethernet LAN adapters

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

The new binaries include:

enum-usb
Enumerate devices on the USB bus

What's new: Documentation

  • QNX Software Systems has bought the rights to Getting Started with QNX Neutrino, by Rob Krten. We've added it to the Neutrino documentation, and we're in the process of updating it. (Ref# 55876)

    The updates include:

    • The examples of resource managers now use dispatch_context_alloc(), dispatch_block(), and dispatch_handler() instead of resmgr_context_alloc(), resmgr_block(), and resmgr_handler(). (Ref# 56829)
    • We've corrected the names of the _RESMGR_FLAG_BEFORE and _RESMGR_FLAG_AFTER flags. (Ref# 56828)
    • _RESMGR_ERRNO() is deprecated; handler functions can simply return errno values. (Ref# 56828)
    • The Clocks, Timers, and Getting a Kick Every So Often chapter uses 10 ms as the ticksize. The ticksize is now usually 1 ms, but the discussion is still valid. (Ref# 56785)
    • We've corrected the description of the SIGEV_PULSE_PRIO_INHERIT flag. We've also removed the obsolete “divide by 5” timer from a diagram. (Ref# 56785)
    • There's no longer a bug in the setting of the size member of the resmgr_context_t structure; we've removed a note about it from the Resource Managers chapter. (Ref# 56781)
    • The name_attach() and name_detach() functions aren't just for porting QNX 4 applications. They work well for simple client/server situations. (Ref# 56738)
    • Priority inheritance no longer occurs just one level deep. (Ref# 53452, 56738)
    • The highest priority is now 255 instead of 63, and the timeslice for round-robin scheduling is four times the ticksize. (Ref# 56686)
    • The spawn() and spawnp() functions aren't POSIX. (Ref# 56686)
    • The Resource Manager chapter now refers to iofunc_close_ocb_default() instead of iofunc_close_default(), and to resmgr_attach() instead of resmgr_start(). It no longer refers to iofunc_read(). (Ref# 56565)
    • Resource managers should use the _IO_FLAG_* bits internally to indicate permissions, instead of relying on any relationship between these values and O_RDONLY, etc. (Ref# 53463)
  • We've removed the entries for board-specific devf-* drivers from the Utilities Reference. All the flash filesystem drivers use the same options as devf-generic. (Ref# 12749)
  • New: The I2C framework currently implements only a single-threaded resource manager; we've corrected the I2C (Inter-Integrated Circuit) Framework technote. (Ref# 49900)

What's new: Multimedia

The new binaries include:

mcd
Media Content Detector utility

What's new: Web browsers

  • New: We've removed the following from QNX SDP 6.4.0:
    • Voyager web server (vserver)
    • Mozilla web server (mozserver)
    • Voyager browser client
    • Mozilla email and news client
    • browser plugins, including: multimedia plugins (audio, video), Adobe Flash Player and Java Virtual machine plugins
  • The Netfront 3.1 web server and the Voyager browser client are still available separately in the Web Browser TDK.
  • The self-hosted Neutrino version of 6.4.0 includes a newer version of the standalone Mozilla web browser. It's called Bon Echo and is based on Firefox 2.0.0.14 source code.

We continue to work on other browser-related offerings that are planned for future releases or available separately from SDP. Please contact QNX directly for more information.

Using the VMware image of a QNX Neutrino runtime system

New:

We provide a VMware image of a QNX Neutrino runtime system in target/QNX_Eval_RT.zip on the installation DVD. To install this image, do the following:

  1. Extract the VMware target from the DVD. For example, on Windows, open a Windows Explorer window, double-click on the target\QNX_Eval_RT.zip file, and then drag the QNX_Eval_RT 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 QNX_Eval_RT folder, and then choose QNX_Eval_RT.vmx.

      Or:

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

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

What's new in the QNX Momentics Tool Suite?

The QNX Momentics Tool Suite features:

  • GCC 4.2 tool chain
  • GDB 6.7
  • Binutils 2.18
  • Mudflap (command line only)
  • Integrated Development Environment 4.5
  • Phindows update that improves the experience of rendering Photon on Windows

For more details, see the following sections:

What's new: Compiler, tools, and utilities

The changes include:

dumper
There's a new -z option that makes dumper use gzip to compress the core files. The option takes an integer argument that specifies the level of compression, in the range from 1 (fastest) through 9 (best compression). (Ref# 39662)
elvis, vi
New: We now ship version 2.2.0 of elvis. (Ref# 57481)
gcc
  • We've updated gcc to version 4.2. We no longer ship versions 2.95.3 or 3.3.5. (Ref# 54006)
  • With gcc 4.2, the char data type is now unsigned on PPC targets. (Ref# 43764)
  • If you use the -Os option with gcc to optimize for size, you no longer get some compile errors. (Ref# 19955, 21347)
  • Version 4.2 of gcc (unlike 2.95.3 and 3.3.5) doesn't report any parsing errors for seemingly simple code. (Ref# 20409)
  • Nested functions (i.e. one function declared inside another) now work properly.
  • The __cxa_atexit() function is now supported. C++ shared objects can optionally use __cxa_atexit(), which allows their destructors (normally registered with atexit()) to be called at dlclose() time. As a result, you can now use dlopen() and dlclose() on C++ shared objects. (Ref# 19702)
gdb
We've updated gdb to version 6.7. (Ref# 54030)
icc
We've discontinued the Intel 8.1 compiler, icc. (Ref# 56606)
make
New: The MSYS version of make works with UNC paths, such as //some_machine/dir. Note that makefiles and the IDE don't support UNC paths. (Ref# 24202)
mkefs, mketfs, mkifs
New: You now can specify a value of none for the filter attribute. This is useful if you need to override a global filter. (Ref# 59585; Ticket ID 84523)
on
New: There's a new -P option that spawns the process, setting the SPAWN_PADDR64_SAFE flag to indicate that the process is known to be 64-bit safe or doesn't care about the physical memory location. (Ref# 52911, 61053)
qbinaudit
New: Compare binaries to the officially distributed versions (QNX Neutrino)
qcc
  • The -M option to qcc isn't changing to -Map as we warned in earlier release notes. (Ref# 26743, 55446)
  • In order to use gcc's support for the PPC Altivec extensions, you no longer have to add this option:
    -I $QNX_HOST/usr/lib/gcc-lib/powerpc-unknown-nto-qnx6.3.0/3.3.5/include
      

    to the qcc command line. (Ref# 26109)

uesh
New: You can now specify a script file as an argument to the micro-embedded shell. (Ref# 17048)

New utilities include:

ap
Manage adaptive partitions
paste
Merge lines of input files, and writes the resulting lines to standard output. (POSIX)
python
A powerful object-oriented programming and scripting language. (Ref# 56492, 58443)

Note: We don't support Python on Linux or Windows. If you need Python on these hosts, you should download it from http://www.python.org. (Ref# 60935, 60940)

showmem
Display memory information (Ref# 26719, 60931)
showmount
Display memory information (Ref# 26719, 60931)
uudecode
Decode a file that was encoded with uuencode (Ref# 56679)
uuencode
Encode a binary file or standard input into ASCII (Ref# 56679)

We've deprecated the following items:

  • Zmodem tools
  • Cygwin dependency; we're using MinGW (Minimalist GNU for Windows) and MSYS (Minimal SYStem) instead
  • some Windows command-line utilities, such as ps, od, ctags, and vim (We now ship a non-Cygwin version of bash.)

What's new: Integrated Development Environment

  • The QNX Momentics Tool Suite 6.4.0 includes version 4.5 of the IDE; its new features include:
    • Eclipse 3.3, CDT 4.0.x
    • improved debugging
    • improved C++ support
    • General usability
    • JTAG integration:
      • startup debugging
      • source-level debugging not possible after MMU is enabled
      • initially for Abatron BDI2000 and Macraigor usb2demon
    • System profiler:
      • Source traceability of events
      • Call stack trace
    • a complete overhaul of the Application Profiler, including support for sampling (gprof) or for instrumentation, which uses the kernel event-tracing mechanism to provide high-resolution timings for function calls. This approach can provide much more precise timing than the sampling technique can.

      In addition, the UI has been greatly improved, and profiling sessions are now saved in your workspace — and you can now compare different sessions.

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

  • We no longer ship the Neutrino-hosted version of the IDE. (Ref# 60706)

This version of the IDE includes the following fixes for previously reported issues:

  • New: We've resolved an issue with the tracking of events from shared libraries when the application ends. (Ref# 44617)
  • If you don't have the latest version of qconn, the IDE now gives you a working link to the section in the documentation that explains how to update qconn. (Ref# 50214)
  • While profiling an application, function names are no longer sometimes displayed as “$a” in the Sampling Information view. (Ref# 44977)
  • In the IDE's Memory Analysis Toolkit, the Use dladdr to find all dll names option isn't required anymore and is disabled if you're using the new memory analysis library. (Ref# 45807)
  • When using Attach mode in Memory Analysis Tooling, you can now set the Perform leak check when process exits option. (Ref# 44768)
  • When using Memory Analysis for ARMLE and SHLE targets, libmalloc no longer has difficulty tracing back to the call site of a function. (Ref# 47080, 26100, 41457)
  • Whenever a build of a standard make project is completed without any errors or warnings, the IDE no longer displays the following error message:
    Severity and Description        Path    Resource        Location       
    Creation Time   Id
    Error launching external scanner info generator (gcc -E -P -v -dD
    C:/QNX640/ide4-workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c) 
                  code_cov        Unknown 1157739187750   23

    In this case, the project no longer includes a warning symbol beside the project name. (Ref# 41424)

  • If you set the Save automatically before build option for a project, and you change one of the project's files, the file is saved whether the project or file is selected in the tree. (Ref# 25866)
  • In the Launch Configuration dialog, if a target isn't selected, and you click the From Project button, you no longer receive a NULL pointer exception error. (Ref# 45599)
  • If a project contains a file that only has the following line:
    #include <iostream>
      

    the Code Coverage tool no longer fails. (Ref# 26376; Ticket ID 70067)

  • On Linux, if your serial device is something like /dev/ttyUSB0, the Terminal 1 view of the System Builder no longer displays the message Device Not Specified.

What's new: PhAB

Various bug fixes

What's new: Phditto

  • Offscreen context support
  • PgReadScreen() and Photon's snapshot utility are now supported

What's new: Phindows

  • User interface rework, including built-in help screens and per-user configuration settings.
  • New Photon session management capabilities (Ref# 39725)
  • gzip image compression (Ref# 24208)
  • clipboard sharing (Ref# 8216)
  • Offscreen contexts are now supported on multiple displays simultaneously. (Ref# 24530)
  • antialiased font support (Ref# 29481)
  • PgReadScreen() and Photon's snapshot utility are now supported
  • encryption support (Ref# 28910, 29376)
  • Direct3D double buffering (Ref# 46377)

A word about coexistence

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


Note: Only versions of Momentics with different medial version numbers can coexist. For example, 6.3.2 can coexist with 6.2.1, but not with 6.3.0. Coexistence with 6.2.1 is supported only on Windows hosts.

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

QWinCfg for Windows hosts

On Windows hosts, you'll find a configuration program called QWinCfg for switching between versions of QNX Momentics. You launch QWinCfg via the start menu (e.g. All Programs-->QNX Software Development Platform 6.4.0-->Configuration).

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

qconfig utility for non-Windows hosts

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

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

Note: In the above command, you must use the “back tick” character (`), not the single quote character ('). The string that you pass to the -n option is the Installation Name field as printed by qconfig.

This command affects only the shell in which you ran qconfig. Other windows, for example, will be unaffected. To change environments in all your windows, you can run the command in your shell-initialization script or in your .profile. You can also define separate users who use different coexisting versions.

Coexistence and the IDE

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

Discontinued items

  • We no longer provide the QNX Neutrino RTOS x86 Runtime Kit. For information about generating this kit, see How to create a Runtime Kit from a standard SDP 6.4.0 in the Neutrino technotes. (Ref# 58197)
  • We no longer ship the Neutrino-hosted version of the IDE. (Ref# 60706, 61193)
  • The umass-enum USB mass storage enumerator and filesystem-mounting utility is for x86 systems only; diskboot starts it, but then switches to its replacement, enum-usb. (Ref# 61031)
  • We no longer ship packagebsp; for information about packaging a BSP, see http://community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/Packaging_BSP on our Foundry27 community website. (Ref# 61548)
  • We plan to deprecate rtelnet in a future release. (Ref# 61851, 61852)
  • New: We plan to deprecate libmalloc and libmalloc_g in a future release, in favor of librcheck.
  • New: We no longer ship the former multimedia framework, including:
    • MP3 decoder
    • Media player (mmplay)
    • CD player
    • associated documentation and utilities
    • associated ilbraries:
      • aif_parser.so
      • audio_writer.so
      • au_parser.so
      • avcodec.so.*
      • avi_parser.so
      • cdda_reader.so
      • ff_mpegv_decoder.so
      • fildes_streamer.so
      • http_streamer.so
      • iff_parser.so
      • lame_mp3_encoder.so
      • libmedia.so.*
      • libmmconvenience.so.*
      • libmmedia.so.*
      • libmpeg.so.*
      • libogg.so.1
      • libogg.so
      • liboggS.a
      • libTremor.so.*
      • midi_parser.so
      • mpega_parser.so
      • mpegs_parser.so
      • mpegv_parser.so
      • oggi_decoder.so
      • ogg_decoder.so
      • rawfile_writer.so
      • stream_reader.so
      • wavfile_writer.so
      • wav_parser.so
      • window_writer.so
      • wma9_decoder.so
      • xing_mpega_decoder.so
  • We no longer ship the ARM variant of fpemu.so. Applications are compiled with soft-float for ARM targets, so there's no need for this shared object.
  • We no longer ship the following binaries:
    • crttrap
    • deva-ctrl-cyberpro5.so
    • deva-ctrl-tahoe.so
    • devb-aha2
    • devb-aha4
    • devb-aha7
    • devb-amd
    • devb-ncr8
    • devc-amctap
    • devc_amctap_host
    • devc-hspi
    • devc-netrom540
    • devc-ser2681
    • devc-ser403
    • devc-ser8250-ixp2400
    • devc-serdsiu
    • devc-sergt64260
    • devc-serppc800
    • devc-serpsc
    • devc-sersci
    • devf-800fads
    • devf-aspen
    • devf-bigsur
    • devf-brh
    • devf-ixdp2400
    • devf-ixdp425
    • devf-i365sl
    • devf-mtx600-w8
    • devf-p5064
    • devf-ppaq
    • devf-rpx-lite
    • devf-sc400
    • devf-vr41xx
    • devg-banshee.so
    • devg-igs5000.so
    • devg-mach64.so
    • devg-matrox.so
    • devg-mq200.so
    • devg-neomagic.so
    • devg-orchid.so
    • devg-pxa250.so
    • devg-q2sd.so
    • devg-ravin.so
    • devg-rotate90.so
    • devg-rotate270.so
    • devg-rpxlite.so
    • devg-s3.so
    • devg-sa1110.so
    • devg-stpc.so
    • New: devg-vga.so
    • devgt-iographics
    • devi-ahl
    • devi-carrol
    • devn-artesyn.so
    • devn-bcm43xx.so
    • devn-cpci-mcp750.so
    • devn-eepro.so
    • devn-el589.so
    • devn-gt64260.so
    • devn-klsi.so
    • devn-lance.so
    • devn-ne2000-403.so
    • devn-ns83815.so
    • devn-orinoco.so
    • devn-ppc405.so
    • devn-ppc800-ads.so
    • devn-ppc800-cllf.so
    • devn-ppc800-mbx.so
    • devn-ppc800-rpxlite.so
    • devn-ppc8260.so
    • devn-ppc860_mii.so
    • devn-prism.so
    • devn-rlan2.so
    • devn-tulip-p5064.so
    • devn-via-rhine.so
    • devn-wd.so
    • flashcmp
    • fontadmin
    • fontsleuth
    • fontview
    • fs-pkg
    • gri-photon.so
    • icc
    • info
    • io-net
    • ipf
    • ipfs
    • ipfstat
    • ipmon
    • ipnat
    • lsm-ipfilter.so
    • lsm-sctp.so
    • mmplay
    • netfront
    • nfm-autoip.so
    • npm-pppmgr.so
    • npm-pppoe.so
    • npm-qnet-compat.so
    • npm-qnet-l4_lite.so
    • npm-qnet.so
    • npm-tcpip.so
    • npm-tcpip-v4.so
    • npm-tcpip-v6.so
    • npm-ttcpip.so
    • packager
    • pci-artesyn440
    • pci-artesyn750fx
    • pci-brh
    • pci-cpc700
    • pci-ixc1100
    • pci-ixp2400
    • pci-mpc8266
    • pci-p5064
    • pci-ppc440rb
    • pci-raven
    • pci-sandpoint
    • pci-yellowknife
    • phplay
    • phrecord
    • pkgctl
    • playaudio
    • playaudiocd
    • psin
    • qnxinstall — see Installing packages without qnxinstall,” below.
    • qnxplayer
    • startup-403evb
    • startup-603evb
    • startup-79s465
    • startup-800fads
    • startup-8260ads
    • startup-artesyn
    • startup-artesyn750fx
    • startup-aspen
    • startup-bigsur
    • startup-cpci-6750
    • startup-ddb-vrc5074
    • startup-integrator
    • startup-malta
    • startup-mbx800
    • startup-mcp750
    • startup-mcpn765
    • startup-mtx600
    • startup-mvme
    • startup-mvp
    • startup-p5064
    • startup-rpx-lite
    • startup-sa1100-mm
    • startup-sa1110-db
    • startup-sandpoint
    • startup-sengine
    • startup-vme603
    • startup-vr41xx
    • startup-walnut
    • voyager
    • vserver
  • New: We no longer include nasm.exe, ndisasm.exe, and objdump.exe in the Windows-hosted version of SDP. (Ref# 65080)

Installing packages without qnxinstall

New:

Although QNX SDP 6.4.0 no longer includes qnxinstall, you can still install QNX package (.qpr) files. The QPR format is really nothing more than a tar file. Within it are separate packages which are themselves tar files (*.qpk) and description files (*.qpm).

The *.qpm files are package manifests, XML files describing where qnxinstall should install the files. You can ignore these files.

If you untar the .qpk files, you'll notice a directory structure usually starting with a vendor name, then a package name, and then a version. Inside the version directory, you'll see a directory structure that's basically the root of the package. Just copy everything from this root to the appropriate destination directory.

If the .qpr contains more than one package, repeat this process for each.

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

  • asynchronous messaging

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


Note: We're actively investigating all known issues.

Known issues: Installing and uninstalling

  • New: The instructions in the printed Installation Guide for uninstalling QNX SDP on Windows and Linux are incorrect. (Ref# 62348)

    Workaround: Here are the correct instructions:

    • On Windows, the third method should be:

      Go to the directory where you installed QNX SDP 6.4.0 and run _uninstall/qnxsdp/6.4.0/uninstaller.exe.

    • On Linux, do the following:
      1. Log in as root.
      2. Go to a directory outside the base_dir directory (see the output from qconfig) and run:

        base_dir/_uninstall/qnxsdp/6.4.0/uninstaller.bin

      3. Log out and back in again.
  • On some Linux distributions, the QNX SDP 6.4.0 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.4.0, where base_dir is where you installed SDP.

  • If you install SDP 6.4.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.4.0. Here are the details:
    Windows
    The 6.4.0 installer checks to see if the cleanup utility, QNXWinCleanup.exe, is present under the 6.3.2 host directory (typically C:\QNX632\host) and moves it to C:\Program Files.

    If you uninstall 6.4.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.4.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.4.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.4.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.4.0. (Ref# 58784)

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

  • New: If you install 6.4.0, and you then install 6.3.2, you need to do the following:
    • On Windows, after installing 6.3.2 over 6.4.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.4.0 installation unaffected:

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

    (Ref# 56879)

  • New: 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 CD.
    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.4.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.4.0-->License Management-->Activate License from the Start menu, or by entering the following at the command prompt:

      drive:\Program Files\QNX Software Systems\bin\qnxactivate -a
      
  • The installer launches a web browser at the end of installation to display a landing page on the QNX website. On some versions of Linux, the installer can't launch the browser, but sometimes only if you already have QNX Momentics 6.3.2 installed. (Ref# 61494)

    New: Workaround: Launch a web browser and go to http://www.qnx.com/640foryou.

Known issues: Kernel

procnto
  • New: Some single-threaded resource managers—such as io-pkt, fs-qnx6.so (which becomes single-threaded when it's sychronizing), and QDB—may become WAITPAGE-deadlocked if the system uses lazy page faulting.

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

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

  • If you exec() a program with a relative path, and you're using Qnet, the kernel will leak small amounts of memory, and Qnet will leak some resources. (Ref# 62502)
  • We've observed some memory corruption for uncacheable memory with the Renesas BigSur (SH7751) board. It might be a problem with the hardware. (Ref# 27741)
  • Some calls to mmap() with MAP_ANON or MAP_LAZY may be slower with QNX SDP 6.4.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.4. It might take longer to start applications and create threads. In part, this is due to the virtual memory manager's more complete data structures. (Ref# 27831)
  • If you're in a directory on a remote machine, and you pipe the output of a command to xargs, and you redirect the output to a file, you get a “cannot fork” error. For example:
    cd /net/remote_machine/tmp
    find . -type f | xargs grep FAIL > report.txt
    /bin/sh: cannot fork - try again
        

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

    Workaround: Log in as root.

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

    (Ref# 29440, 29380)

procnto-smp
On SMP systems, the functions that lock mutexes — such as pthread_mutex_lock(), and pthread_cond_wait() (when the thread is woken up by a pthread_cond_signal() or pthread_cond_broadcast() — can unblock threads in the wrong order, which can cause a priority inversion. (Ref# 24522)

Known issues: Libraries and header files

asyncmsg_*()
Asynchronous messaging doesn't work correctly on multiprocessor systems. (Ref# 57260)
brk(), sbrk()
New: These functions don't do anything useful under QNX Neutrino; don't use them. (Ref# J166490, J191638, J743268)
chdir(), chroot()
A bug in chdir() makes chroot() not work properly. (Ref# 21089)

Workaround: Do the following:

  1. Run export DIR_KEEP_SYMLINK=1 before starting your program.
  2. Use chdir() to go to your new root directory before you chroot() to it.

Here's an example:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <limits.h>
#include <errno.h>

void print_cwd() {
    char* cwd;
    char buff[PATH_MAX + 1];
    buff[0]=0;
    
    cwd = getcwd( buff, PATH_MAX + 1 );
    if( cwd != NULL ) {
        printf( "mycwd: My working directory is %s.\n", cwd );
    } else { 
        printf("mycwd: getcwd returned Null\n"); 
    }
}

int main( void )
{
    char* cwd;
    int rc;
    char buff[PATH_MAX + 1];

    printf("before running this, you should 'export DIR_KEEP_SYMLINK=1' \n"); 
    chdir("/home/ftp");
    printf("mycwd: initial cwd:\n"); 
    print_cwd(); 
    printf("mycwd changing chroot to /home/ftp/\n"); 
    rc=chroot("/home/ftp/");
    printf("mycwd: chroot rc=%d\n",rc);
    print_cwd(); 
    printf("mycwd: chdir to ad\n");
    rc=chdir("ad");
    printf("mycwd: chdir rc=%d\n",rc); 
    print_cwd(); 
 

    return EXIT_SUCCESS;
}
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)
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()
New: POSIX requires that this function return an error code on failure, but the implementation returns -1 and sets errno. (Ref# 174563)
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)
shm_ctl(), shm_ctl_special()
New: If an error occurs, these functions set errno to ENOSYS (not EINVAL as documented). They should provide better diagnostics. (Ref# 26440)
<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)
Synchronization objects
You should allocate synchronization objects (mutexes, condvars, etc.) only in normal memory mappings. Otherwise on certain processors, such as some PPC processors, pthread_mutex_lock(), atomic_add(), and so on will cause a fault if the control structure is allocated in uncached memory. (Ref# 61585)
ThreadCreate()
New: This function doesn't check the priority range when PTHREAD_EXPLICIT_SCHED is set. For example, if you use the on command while logged in as a non-root user, and you specify a priority greater than 64, on still executes the command but at the priority of the calling shell. It should give an error saying you don't have permission to create at that priority. (Ref# 28763)
Time zones
QNX Neutrino uses a nonstandard method of defining time zones that's difficult to keep up to date. We plan to replace it in a later release. (Ref# 44425)
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)

Known issues: Filesystems

io-fs-media
New: 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
  • As the documentation points out, an exit status of zero doesn't indicate that no problems were found with the filesystems. It merely indicates that no irrecoverable errors internal to the chkfsys utility were encountered. (Ref# 32176)
  • If you send a SIGTERM or SIGKILL signal to a devb-* driver, chkfsys might subsequently find errors on the filesystem. (Ref# 48741, 48764, 48765)
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. (Ref# 50264)

Known issues: Startup

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

    Workaround: Specify this attribute in the mkifs buildfile:

    [image=0x700000]
      
  • 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 6.4 kernel. The possibility of occurrence has existed in all previous Neutrino releases; however, to best of our knowledge, no such failures have been reported. (Ref# 28335)

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

Known issues: Adaptive partitioning

  • Overload detection isn't implemented.
  • Adaptive partitioning isn't supported on the 386 and 486 x86 processors, due to the missing timebase counter on those processors. (Ref# 28080)
  • SCHED_RR threads might not round robin in partitions whose portion of the averaging window is smaller then one timeslice. For example, when the timeslice is 4 ms (the default) and the adaptive partitioning scheduler's window size is 100 ms (the default), then SCHED_RR threads in a 4% partition may not round-robin correctly. (Ref# 28035)
  • If you use adaptive partitioning and bound multiprocessing (BMP), some combinations of budgets might not be met. (Ref# 29408)
  • Threads in a zero-budget partition should run only when all other nonzero-budget partitions are idle. However, on SMP machines, zero-budget partitions may incorrectly run when some other partitions are demanding time. However, at all times, all partitions' minimum budgets are still guaranteed, and zero-budget partitions will not run if all nonzero-budget partitions are ready to run. (Ref# 29434)
  • On ARM targets, the 10 window and 100 window averages, as reported by the aps show -v command, are sometimes garbled. However, these have no effect on scheduling. (Ref# 27552)

Known issues: Booting

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

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

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

    Workaround: Run the driver in PIO mode.

  • If you install QNX SDP 6.4.0 directly on a USB drive, it might not boot automatically. (Ref# 61707)

    Workaround: Replace the partition boot loader. From a working system, run:

    dloader /dev/part pc2

    where part is the device name of the partition you need to boot.

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

  • 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.4.0 from USB mass-storage devices. (Ref# 61688)
  • The bootable version of QNX Neutrino on the CD doesn't include the documentation, in order to reduce the space requirements.

Known issues: BSPs and DDKs

  • Don't use a BSP with the QNX SDP 6.4.0 unless the BSP's release notes state that you should. Please contact us for more information.
  • The code for some previously released BSPs accesses a field in the internal data structure for mutex attributes instead of using a function call as it should. This will cause errors when you compile the code with this version of QNX Neutrino. (Ref# 52361)

    Workaround: Look for this line in the source code:

    mattr.flags = PTHREAD_RECURSIVE_ENABLE;
      

    and change it to this:

    pthread_mutexattr_setrecursive( &mattr, PTHREAD_RECURSIVE_ENABLE);
      
  • On Neutrino hosts, running the default uninstall script uninstalls both the binary and source BSP packages. (Ref# 18894)
  • SH4 binaries linked with QNX Neutrino 6.2.1 or earlier generate an “illegal instruction” error on exiting when you run them on SH4A targets. Renesas changed the nop opcode between SH4 and SH4A, and some of our process-initialization files (inserted at link time) used the old form. This was fixed in QNX Neutrino 6.3.0. (Ref# 24701)

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

  • setupbsp:
    • The full path of the installation directory must not include spaces.
    • On Windows hosts, specify the full path to the setupbsp script (which is in $QNX_HOST/usr/bin/). For example:

      ksh C:/QNX640/host/win32/x86/usr/bin/setupbsp installation_dir archive

      (Ref# 50723)

    • On Windows, don't use a DOS-style relative path for the installation directory, or an error will occur during installation. For example, C:installdir is a DOS-style relative path (note there isn't a backslash after the C:). The path should always start with C:\, C:/, or /. (Ref# 38654)
    • The uninstaller that setupbsp creates removes the files that are listed in the shiplist, but leaves behind files added since you installed the BSP. (Ref# 38490)
    • If you specify the -v option for verbose output, setupbsp should send some of the output to stderr as well as to stdout. (Ref# 38453)
    • You can use setupbsp multiple times to set up a BSP in different working directories, but the uninstaller that setupbsp creates removes the only instance of the documentation for the BSP the first time that you run it; it should remove the documentation only when you uninstall the last instance of the BSP. (Ref# 38363)
    • setupbsp doesn't check to make sure you have enough disk space available before setting up the BSP. (Ref# 38249)
    • The uninstaller that setupbsp creates doesn't remove any directories. (Ref# 38241)

Known issues: Compiler and tools

gcc
  • On most platforms, the gcc options -fpic and -fPIC are synonymous, but on PPC they're different and incompatible. We chose -fpic over -fPIC for performance reasons, and our PPC OS is built that way. (Ref# 21947)

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

gdb
  • On PPC targets, ntoppc-gdb uses hardware watchpoints when they're available. If hardware watchpoints aren't available, gdb uses software watchpoints. The kernel has support for hardware watchpoints only on BookE. (Ref# 13133, 21293)
  • If you have two breakpoints exactly one instruction apart, the second breakpoint won't stop the debugger. (Ref# 20833)
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 Momentics 6.4.0. The resulting startup will work with 6.2.1, 6.3, and 6.4.0.

ldrel
The -S 0 option is no longer supported, but it's still listed in the use message and the documentation. (Ref# 62258)
pidin
  • New: The pidin mem command doesn't display the correct amount of memory if it exceeds 231 − 1 bytes. (Ref# 63642)
  • New: 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)
qcp
The qcp utility works only on x86 platforms. (Ref# 9500)
slogger
New: Because of a processing error when buffers wrap, sometimes garbage appears in the system log file. (Ref# 62025)

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.0 are incompatible with 6.4.0. 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.4.0. For updated source code, see Foundry 27 on our website, or contact Technical Support.

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

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

Block-oriented drivers (devb-*)

devb-*
High-priority threads can get starved off by lower ones via devb-* because the filesystem uses sleepon_*() functions, which don't inherit priorities. (Ref# 2109)
devb-adpu320
Reading DVD-RAM causes devb-adpu320 to become blocked on a CONDVAR. (Ref# 19772)
devb-doc, devb-doc3, dformat, dformat3
The Disk On Chip drivers were provided by the vendor. If you run use -i on them, the state is given as Experimental. (Ref# 23101)
devb-aha8
You can't restart this driver on IBM PPC405 boards. (Ref# 16018)
devb-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)

  • The devb-eide fails to detect EIDE devices on Renesas EDOSK7780 targets. (Ref# 60231)

Character drivers (devc-*)

devc-con
On x86 systems, the devc-con console manager doesn't work correctly when you're using a USB keyboard. (Ref# 62053)

Workaround: Use the devc-con-hid console manager instead.

Graphics drivers (devg-*)

  • New: With the move of Photon to the Graphics Framework in QNX SDP 6.4.0, we've lost the ability to rotate the display (formerly supported by devg-rotate90.so and devg-rotate270.so) because GF doesn't provide the infrastructure for rotation. We might support rotation for Photon applications again in a future release. (Ref# 57091)
  • New: When you start a QNX Neutrino system for the first time, it chooses a “safe” graphics driver (devg-svga.so or devg-vesabios.so, depending on the installed chipset). However, these generic VESA BIOS and SVGA drivers can negatively impact the timing of a system and affect realtime operations. We recommended you use an accelerated driver instead, if at all possible. (Ref# 68728)
  • 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 Fijitsu Carmine graphics card. (Ref# 61783)
  • If you use devg-radeon.so with two cards that have the same vendor and device IDs, the driver fails. (Ref# 61528)
  • The devg-radeon.so driver doesn't work properly on DVI-equipped monitors. If you're using an ATI Radeon PCI-Express Vendor ID 0x1002, and device ID 0x5B60, you may experience GUI failure during mode switching. (Ref# 41905)

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

  • If you use direct mode with the devg-i830.so driver, some images may not appear on the display. (Ref# 61008)
  • If you use devg-vesabios.so on a Dell 830, the system won't reset when you shut it down while in graphics mode. (Ref# 57168)

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

  • Switching from devg-matroxg.so to devg-svga.so via modeswitching will cause io-graphics and/or io-display to fault. (Ref# 61152)
  • All graphics drivers hang while trapping on (discontinued) Abit IS-20 (865GV) motherboards because of an issue in the BIOS. (Ref# 39626)

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

  • The planar YUV overlay format doesn't work properly in the devg-radeon.so driver. (Ref# 29014)
  • New: The -h and -w options of the phgrafx utility are no longer used. (Ref# 62431)

Human interface device drivers (devh-*)

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

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

Network drivers (devn-*, devnp-*)

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

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

  • If you use devn-asix.so with devu-uhci.so in a VMware session, and you remove the USB dongle, io-usb fails with a segmentation fault. (Ref# 61765)
devn-i82544.so
If you use more than 64 Tx descriptors, the PPC version of the driver is inoperative. (Ref# 22848)

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

devn-pcnet.so
  • This driver doesn't support Fiber PCNET cards with the AM79C971KC chip. (Ref# 12497)
  • We don't recommended that you use devn-pcnet.so on the BCM1250 platform, because it can lose receive interrupts. (Ref# 29714)
devn-pegasus.so, devn-rtl8150.so
Slaying io-net with the devn-pegasus.so and devn-rtl8150.so drivers isn't always successful. (Ref# 28602)

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

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

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

  • Multicast and promiscuous modes for the rtl8150 driver aren't currently supported. (Ref# 29352)
devn-tigon3.so
This network driver on the Dell PowerEdge 850 board will run only up to 100 Mbit/s, and not 1000 Mbit/s. Other boards work well at 1000 Mbit/s. (Ref# 39355)
devnp-axe.so
  • The devnp-axe.so USB-Ethernet dongle sometimes drops packets when used on slow systems or with UHCI. (Ref# 62088)

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

  • The version of this driver that we ship is compiled for x86 only. If you want to use it on other platforms, download the source code for it from Foundry27. (Ref# 61983)
devnp-bcm43xx.so
It isn't currently possible to unmount devnp-bcm43xx.so drivers using the ifconfig ... destroy command. We'll add this capability in the next revision of the driver. (Ref# 61710)
devnp-i82544.so
  • The io-pkt driver for the Intel i82544 doesn't support dual-port cards (did=0x1010). (Ref# 44299)
  • New: The documentation and usage message include some errors:
    • The default for the irq_thresh option is actually 9000.
    • The default for the transmit option is actually 4096.
    • This driver doesn't support the promiscuous option; the only way to enable promiscuous mode is by issuing an ioctl() command.

    (Ref# 62229)

USB drivers (devu-*)

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

    Unable to find remove id ###

    may appear on the console. This error message comes from the enumerator and is not an indication of an error condition. (Ref# 61971)

  • 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)
  • ETFS: file creation doesn't update parent directory times as POSIX requires. (Ref# 23243)
  • There's currently no flash probe utility. (Ref# 23136)
  • fs-flash3 doesn't have an iofdinfo() handler for mtree tests. (Ref# 18432)
  • If you create a 255-character filename using the 1.1.0 flash library (libfs-flash3) and the flash filesystem is subsequently mounted using an earlier version of libfs-flash3, the filename won't appear in the filesystem, but it is still present (i.e. if the filesystem is subsequently mounted again with the 1.1.0 libfs-flash3, the filename will reappear). This behavior applies only to forward compatibility whereby an older flash filesystem library is used to mount a newer filesystem. Backward compatibility (the ability of the new filesystem library to mount older filesystems) isn't affected.
  • During a power failure, the flash filesystem can be corrupted if the NOR device's power supply is in the indeterminate state. The solution is to design the hardware so that the NOR flash device enters RESET the moment the power supply drops below the proper operating range. (Ref# 24679)

Known issues: IDE

The IDE contains the following known issues:

Known issues: General

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

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

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

    (Ref# 51688)

  • If you choose Help-->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 CDT Class browser appears to function normally; however, the information is not always accurate due to CDT indexer issues. (Ref# 26736)
  • The IDE has problems when projects are located in a remote (network drive) directory, and the network isn't reachable. (Ref# 11719)

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

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

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

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

Known issues: Application Profiler perspective

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

  • The Application Profiler's sampling information shows “unknown” function names for MIPSBE targets. There is no workaround at this time. (Ref# 24510, 25938)

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 System Profiler can take a very long time to load and parse a .kev generated by a target system that's running Neutrino 6.3.0 SP1. The parsing is much faster for .kev files from a system with a later version of Neutrino. (Ref# 27221)
  • In the System Profiler's Timeline view, toggling the priority and event labels has no effect. (Ref# 42076)

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

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

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

Known issues: Memory Analysis perspective

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

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

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

    Workaround: Run only one Memory Analysis Tooling session and one IDE client at a time on the same target machine.

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

  • During a running session, if a running process exits, it usually terminates quickly; however, if the process receives a signal, it might take up to several minutes for the change in the session state to complete. (Ref# 46431)

Known issues: System Information perspective

  • The IDE's System Information perspective's Malloc Info view isn't updated correctly when Memory Analysis Tooling is active on the same process. (Ref# 28712)
  • If you open the Target File System Navigator for a target booted from .boot, and then attempt to drag the file .boot from a project and drop it into the / directory in the Target File System view, you will receive the following error message:
    Copy operation error: ....\.boot
    Remove Permission denied

    Copying of the boot image using drag-and-drop fails. (Ref# 46882; Ticket ID 77863)

  • In the System Information perspective, if you use continuous logging and the currently selected process ends, the IDE loses focus. (Ref# 41630)
  • Occasionally, in the System Information perspective for the APS (adaptive partitioning scheduler) view, the Partition Child Process and Threads information aren't available if the target is slow, or if you're using QNX Momentics 6.3.0 SP3 or the SP2 to SP3 upgrade. (Ref# 40651)
  • The APS view in the System Information perspective doesn't show all of the bankruptcy information, such as when the last bankruptcy occurred. (Ref# 40057)
  • In the APS view's CPU Usage and Critical Time Usage panes, newly added partitions display with the same color as some of the existing ones, and partitions aren't cleared when you switch targets. (Ref# 40626)
  • The APS CPU Usage view incorrectly starts the graph line at zero for the beginning of the trend line; the initial value can't be zero. (Ref# 45780, 42656)
  • In the Target Navigator view in the Systems Information perspective, if you right-click on a target where a red “X” is displayed (meaning that qconn isn't connected), you won't be able to launch a telnet session. (Ref# 45592)

    New: Workaround: Use the new Terminal view to run the telnet session.

Known issues: System Builder perspective

  • The System Builder doesn't currently have a way for you to enable the kernel dumper. (Ref# 56269)
  • If you add a host directory by specifying a root of target/x86 and a location of / in the image, you won't be able to save the build file; the root isn't added, and when you try to save, you'll get a null-pointer exception. (Ref# 62063)

    Workaround: You can't use a target directory of /. Instead, map boot onto /boot, lib onto /lib, and so on.

  • If you have an application project that has a dependency on a shared library project, if you clean the application project, then open the Project Settings dialog and change an option (e.g., enable Code Coverage), after you click OK and click Yes to rebuild, the build process will fail with the following error:

    ld: cannot find -lmy_lib

    This error occurs because the build that the IDE performs from the Project Settings dialog doesn't re-build any dependent projects.

    Workaround: Select your project from the Projects view, right-click and build your project by selecting Build Project from the context menu. (Ref# 45556)

  • 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)
  • If you disable the system builder console preference Always clear before each build (Window-->Preferences, and select QNX-->System Builder), the System Builder can't perform a build. (Ref# 45597, 57986)

    Workaround: Don't disable the setting Always clear before each build.

  • For a System Builder project, if you select the Clean Project option, the make clean defined in the makefile isn't properly invoked. (Ref# 45628)

Known issues: C/C++ development

  • The C/C++ search doesn't work for macros. The search relies on the indexer, which expands the macros when it parses the code. As a result, the search finds only where the macro is defined, not where it's used. (Ref# 23596)
  • If the Makefile for a regular C++ make project uses implicit rules such as the following:
    all : cc2
    
    cc2 : cc2.o
    
    cc2.o : cc2.cpp
      

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

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

    cc2 : cc2.o
            $(CXX) -o cc2 cc2.o -lang-c++
      
  • Assigning a hotkey to the Rebuild Project action has no effect (the hotkey doesn't work). This is a bug in Eclipse 3.0; see bug 99193 at http://www.eclipse.org. (Ref# 25616)
  • The IDE sometimes ignores an explicit build request for a project, such as those invoked by using the Build Project entry in the C/C++ Project view's right-click menu, if the project uses an externally built library. (Ref# 20966)

    Workaround: Use an explicit target in the make command.

Known issues: Team/CVS

  • If you check out an existing PhAB project from CVS, the IDE starts PhAB before checking the project out. PhAB creates some directories, and then the CVS checkout says that the files already exist. After telling the IDE to replace the files with the ones from CVS, PhAB still thinks that it's the old set of widgets (empty project). (Ref# 18405)

    Workaround:

    To check out an existing PhAB project from CVS:

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

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

    4. Click Next.
    5. In the Select Module window, enter a module name, or choose an existing module by selecting Use an existing module, and then browse the modules in the repository.
    6. Click Next.
    7. In the Check Out As window, select Check out as a project in the workspace.
    8. Click Next.
    9. In the Check Out As window, if not already checked, select Use default workspace location.
    10. Click Next.
    11. In the Select tag window, click Finish.
  • If you check a project out from CVS by using the New Project wizard, and you choose only one CPU with both debug and release versions, then when the wizard is done, the debug variant is always unchecked for SH, PPC, and x86. In addition, while the project is being checked out, a message displays indicating “The file has been changed on the file system, do you want to load the changes?”, but it doesn't indicate which file was changed. (Ref# 25422, Eclipse ref# 102659)

Known issues: Debugging

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

Known issues: Code Coverage perspective

  • The Code Coverage tooling that works with gcc 4.2.4 relies on data files that are created when an instrumented application exits normally. If you need code coverage data for server-type applications, you should create a signal handler that traps SIGTERM and calls exit(). Running the application and delivering a SIGTERM to it will then trigger the data dump. (Ref# 60457)

Known issues: Windows-hosted IDE

  • You can't do rename, delete, or move operations when the System Profiler editor is open. The editor maintains an open file pointer to the log file that it's working with; as long as that file is open, under Windows FAT32 filesystems, no modification can occur. (Ref# 28561)
  • If the IDE window spans two monitors, and you lock and then unlock your computer, the window is restored to be the size of one monitor. This is a general problem on Windows. (Ref# 28653)
  • When you do a build, stdout and stderr sometimes overlap, resulting in misleading error and warning messages. This is a general problem on Windows. (Ref# 15106)

Known issues: Documentation

  • New: Note that isalnum(), isalpha(), iscntrl(), isdigit(), isgraph(), islower(), isprint(), ispunct(), isspace(), isupper(), isxdigit(), tolower(), and toupper() take an integer argument, but the value must be representable as an unsigned char or be EOF; the behavior for other values is undefined. (Ref# 120364)
  • New: Note that iswalnum(), iswalpha(), iswcntrl(), iswdigit(), iswgraph(), iswlower(), iswprint(), iswpunct(), iswspace(), iswupper(), iswxdigit(), towlower(), and towupper() take a wint_t argument, but the value must be a wide-character code that corresponds to a valid character in the current locale, or must be WEOF; the behavior for other values is undefined. (Ref# 120364)
  • New: The ability to munmap() just a part of an area mapped with mmap() was introduced in QNX Neutrino 6.3.2, but the entry for munmap() in the Neutrino Library Reference says it isn't supported. (Ref# 80441)
  • New: The IDE's help system might not display all of the 6.4.0 documentation. (Ref# 63072)

    Workaround: Do the following:

    1. Choose Help-->Software Updates-->Manage Configuration.
    2. In the left pane of the resulting window, choose the 6.4.0 documentation (usually C:\QNX640\target\qnx6\usr\help\eclipse on Windows, and /opt/qnx640/target/qnx6/usr/help/eclipse/ on Linux).
    3. Select Enable from the list of available tasks.
    4. Restart the IDE.
  • Additional documentation is required to complete the topics for the following areas in the IDE User's Guide:
    • the fast method of launching a debug session
    • debugging a DLL/shared library
    • attaching to a running process with the debugger

    (Ref# 42437)

  • New: The SPI (Serial Peripheral Interface) Framework technote includes incorrect information about what the spi_read(), spi_write(), spi_xchange(), spi_cmdread(), and spi_dma_xchange() functions return. If successful, these functions return the number of bytes read, written, or exchanged. (Ref# 59977; Ticket ID 84471)

Known issues: Instant Device Activation

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

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

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

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

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

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

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

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

    In mini_serial.c:

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

    In minidriver-serscif.c, change this:

    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
  • On the HP XW6600 Workstation, you must plug a USB mouse and keyboard into a high-speed hub in order for them to be correctly detected by the io-usb subsystem. (Ref# 61680)
  • In some cases when unmounting DLLs and running the usb utility at the same time, some memory allocated by io-usb isn't freed. This is a rare situation. (Ref# 21716)
  • The io-usb server crashes if you repeatedly mount and umount and plug and unplug devices attached to the port. (Ref# 21556)
  • io-usb might crash with a SIGSEGV when you shut down the system and you don't have any USB devices inserted. (Ref# 29495)

Known issues: Licensing

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

Known issues: Multimedia

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

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

Multimedia TDK 1.0.1
QNX SDP 6.4.0 doesn't support Multimedia v1.x. Applications that depend on Multimedia v1.x will no longer resolve symbols or execute under 6.4. 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)
ifconfig
The commands:

ifconfig iface_name up
ifconfig iface_name scan

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

Workaround: Combine the commands:

ifconfig iface_name up scan

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

(Ref# 78737)

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

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

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

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

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

    If you now type:

    cat /proc/qnetstats
        

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


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

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

  • This module has many options to alter how Qnet functions (e.g. timeouts, retries, and idle times). You shouldn't use these options unless you're trying to overcome an issue related to your environment. Qnet is optimized to function with its default settings. (Ref# 21298)
  • Once Qnet has a domain, you can't set Qnet to not use a domain; you can only change the domain. (Ref# 38802)
  • Qnet treats the _CS_DOMAIN configuration string differently if it's undefined or set to a NULL string. If it's undefined, Qnet uses a domain of .net.intra; if it's set to a NULL string, Qnet applies that as the domain (for example hostname.). (Ref# 19676)
fs-cifs
  • The behavior of pwrite() isn't consistent with that on other Neutrino filesystems. If you open a file with O_APPEND, the offset supplied to pwrite() doesn't override O_APPEND. The data is written to the end of the file, regardless of the file offset supplied. (Ref# 38576)
  • If you unlink() a file on a CIFS mount point, any open file descriptors for that file become invalid. (Ref# 38574)
  • fs-cifs doesn't support POSIX file-locking functions. (Ref# 38570)
  • fs-cifs incorrectly sets an errno of EPERM instead of EBADF if you attempt to write to a file opened as O_RDONLY or O_ACCMODE. (Ref# 38565)
  • If a component of a pathname supplied to a function isn't a directory, fs-cifs should return ENOTDIR. It currently returns ENOENT. (Ref# 38564)
  • PATH_MAX for CIFS (and thus fs-cifs) isn't 1024 as in POSIX. This is set by both Windows and the CIFS specification. The pathname length can be up to 255 characters. (Ref# 38566)
fs-nfs2
  • fs-nfs2 doesn't support files larger than 2 GB. (Ref# 39060)
  • fs-nfs2 doesn't correctly implement the options -w size=n and -w number=n as described in the fs-nfs2 usage message. Don't use them. (Ref# 39031)
  • New: If a path ends in a slash, it must be a directory. When you access a link that has a trailing slash, fs-nfs2 immediately returns EINVAL, instead of resolving the link and reporting errors such as EPERM (permission denied) or ENOTDIR (not a directory) before returning EINVAL (invalid argument). This behavior was seen as an optimization to reduce network traffic, because this kind of file access will ultimately fail, and it's consistent with the behavior on other OSs. (Ref# 20877, J473236)
  • fs-nfs2 doesn't support a -B option greater than 8096. (Ref# 39022)
fs-nfs2, fs-nfs3
  • fs-nfs2 lets you modify the on-disk binary file of an executable that is executing. It should return an error with errno set to EBUSY. (Ref# 38563)
  • The NFS clients don't distinguish between a pathname ending or not ending in / when passed as the argument to mkdir(). (Ref# 38484)
  • NFS is a connectionless protocol. If a server stops responding to the NFS client, it continues to try to reach the server to complete an operation until the server becomes available, or the user stops the operation. While the fs-nfs2 and fs-nfs3 clients are trying to reach the server, NFS operations are blocked until they're successful. This isn't an issue if the client is talking only to one server, but if an fs-nfs2 process has mounted multiple servers, the blocked operation also block the client's ability to talk to the other servers. (Ref# 39084)

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

gns
  • New: There's a memory leak in gns; a message buffer is allocated but is never freed. (Ref# 78242)
  • A gns daemon can't act as both a client and server at the same time. If a local service is registered with a GNS client, the client can forward that information to redundant or backup servers; a server can't forward the information. (Ref# 21037)
  • Currently, GNS (name_attach()) isn't compatible with the resource manager framework. (Ref# 20062)

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

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

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

  • The way in which the SIOCGIFCONF ioctl() command was used in our io-net code was incorrect but it worked. We've changed the implementation, but applications that use the old method will no longer work. For more information, see the Migrating from io-net appendix of the Core Networking User's Guide. (Ref# 58035)
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)
pppd
If you use pppd with a serial port, io-pkt may become reply blocked. (Ref# 50977)

Workaround: Disable hardware flow control by clearing ihflow and ohflow:

stty -ihflow -ohflow < /dev/ser1
  
PPPOE
The LCP timeout has decreased from 3 seconds in io-net to 1 second in io-pkt, so some connections might get dropped. (Ref# 54799)

Workaround: You can increase the timeout to 3 seconds by using pppoectl:

pppoectl pppeo0 lcp-timeout=3000
  
slinger
When slinger is executing a CGI script and setting the environment variables to be passed to the script, the environment variable SERVER_ROOT is set to / instead of to the directory specified by HTTPD_SCRIPTALIAS. The actual current working directory of slinger is correct; it's just the environment variable that's wrong. (Ref# 20795)
TCP/IP v4 (now part of io-pkt)
  • If a packet is smaller than the minimum Ethernet packet size, the packet may be padded with random data, rather than zeroes. (Ref# 21460)
  • The TCP/IP stack doesn't maintain the statistics for outbound packets over VLAN interfaces. (Ref# 16684)
  • The TCP/IP stack doesn't maintain the statistics for the number of input and output bytes or packets if the packets are forwarded via the fast-forward feature. (Ref# 23041)
  • The TCP/IP stack doesn't maintain proper interface statistics for the link speed. (Ref# 27015)
  • If the default UDP socket receive-buffer size is set near its limit (for example sysctl -w net.inet.udp.recvspace=240000), UDP-based sockets become unreliable. (Ref# 27386)
TCP/IP v4 and v 6 (now part of io-pkt)
If a packet is smaller than the minimum Ethernet packet size, the packet may be padded with random data, rather than zeroes. (Ref# 21460)

Known issues: Graphics

io-display
New: The documentation incorrectly says that io-display supports PAL8 (the underlying Advanced Graphics framework doesn't support it). (Ref# 77854)
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)
Dual-head displays
On systems with a dual-head display and screens set up to display different portions of the logical desktop, some convenience functions — such as PtFileSelection() and PtNotice() — are always constrained to the first screen. (Ref# 59614)
PgBlitCx(), PgContextBlitAreaCx(), PgContextBlitCx(), PgMultiBlitCx()
New: The documentation says you can use these functions with any form of draw context, but they support only PhDrawContext_t and PdOffscreenContext_t draw contexts. (Ref# 181238)
phs-to-pcl
  • This print filter can have a segmentation fault when running with the -Q2 quality setting. (Ref# 55875, 60885)
  • New: We don't currently ship phs-to-pcl for PPCBE; it will be provided in a forthcoming release. (Ref# 61378)
Starting Photon
When you start Photon, you might see a “Cannot attach mouse input report (error code2)” message on the console. It's a benign message that you can ignore. (Ref# 29662)
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)
  • The template editor currently lets you delete or rename the widget template, but doesn't provide a way to restore the default value. (Ref# 21969)
  • If you're using bash as your shell in Neutrino, PhAB doesn't populate the list of targets when you try to build an application. (Ref# 22850)
PhAB for Windows
  • Applications created by one user can't be built another user. (Ref# 61333)

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

  • If you start PhAB through the IDE on a Windows XP host, several security-alert dialogs are displayed, because the Windows XP firewall detects the background TCP/IP communication between the PhAB application and the Photon server. (Ref# 22282)

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

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

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

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

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

  • You can't save a PhAB project in a path that contains spaces (e.g C:\Documents and Settings\some_user\my_phab_app). (Ref# 39883)
$HOME/.ph/phapps
Note that this file, which contains a list of the applications that you want Photon to launch automatically when it starts, must be executable. (Ref# 22196)
helpviewer
  • If you aren't using ksh or sh as your login shell, the environment variables that the helpviewer uses aren't initialized. (Ref# 27250)

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

  • The helpviewer might not display all the images in a document. (Ref# 57766)

    Workaround: Click the Options button, click the Others tab, and then increase the size of the image cache. Alternatively, you can view the documentation in a web browser.

Pt_ARG_HIGHLIGHT_ROUNDNESS
If you create a PtButton, and you set Pt_ARG_HIGHLIGHT_ROUNDNESS to a nonzero value, the button's border is rounded, but the gradient remains rectangular. (Ref# 24980)

Workaround: Either use a flat fill (i.e. set Pt_FLAT_FILL in Pt_ARG_BASIC_FLAGS), or use an image-based button.

PgSetLayerArg()
Pg_LAYER_ARG_EDGE_MODE (for indicating how a layer should behave if the source viewport is larger than the extent of the source data) isn't currently implemented. (Ref# 52431)

Known issues: System Analysis Toolkit

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

    Workaround: Use nondirect map mode instead.

Known issues: Host-specific

QNX Neutrino self-hosted

  • New: Some x86 systems can run in System Management Mode (SMM), where the BIOS installs special code that runs when a System Management Interrupt (SMI) occurs. SMI interrupts may be generated by the motherboard or peripheral hardware, and can't be masked by the operating system. When SMM is entered, normal operations — including the OS — are suspended, and the SMI handler runs at a high priority. Avoid using systems where SMM can't be disabled, because it can destroy QNX Neutrino's realtime performance. The OS can't do anything about the delays that SMM introduces, nor can the OS even detect that the system has entered SMM.
  • If you add a license in text mode (e.g. on the console or via a telnet session) using finstall -l, you won't be able to properly activate. The activation note is displayed but doesn't accept input; you're returned to the shell after finstall completes. (Ref# 62147)

    Workaround: Kill the running qnxactivate command:

    slay -s SIGKILL qnxactivate
      

    and then run qnxactivate manually to complete the activation:

    /usr/bin/qnxactivate
      

Windows hosts

Uninstalling QNX SDP
New: When you uninstall QNX SDP, Windows schedules the uninstaller for removal the next time you restart your system. If you don't restart your system, and you reinstall QNX SDP, its uninstaller will be removed the next time you restart your system. (Ref# 62183)
devg-vmware.so
New: VirtualPC and VMware require a Windows session that's operating with 32-bit graphics. (Ref# 60669)
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.
Documentation
On Linux and Windows, you might need to install some international fonts in order to display the Multilingual Input documentation. (Ref# 61950)
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)
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 includes a new account policy, called User Account Control (UAC), that will impact 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, you must have administrator privileges and disable UAC. (Ref# 44027)

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 Access Control by selecting the Enable UAC line and then clicking the Launch button.


Caution: Disabling UAC bypasses some of Vista's 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

  • The installers can't update the Gnome menu on some distributions of Linux. (Ref# 48770)
  • On some distributions of Linux, you might not be able to activate QNX SDP 6.4.0 immediately after installing it. (Ref# 59063)

    Workaround: Log out and back in again before trying to activate.

  • On Linux and Windows, you might need to install some international fonts in order to display the Multilingual Input documentation. (Ref# 61950)

Known issues: Web browsers

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

Getting started with the documentation

After you've installed QNX SDP 6.4.0, 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 (e.g. System Architecture, Programmer's Guide, Library Reference, Utilities Reference, etc.).


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

Technical support

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

List of fixes

The problems fixed in QNX SDP 6.4.0 include the following:

Software fixes

Change Ref#
The static libc now includes strptime(), which converts a string into a time. 9132
RAD and DEG now work correctly in phcalc. 8710
fs-cd will non longer crash when accessing a CD that has directory data at very high offsets. 7807
The flashcmp utility now properly removes the file extension, as documented. 7636
The current version of devg-poulsbo.so functions properly only in resolutions of 800 X 600, 1024 X 768, and 1280 X 1024. 62118
dev-tvia.so can have display artifacts, or cease to operate correctly, if the data bandwith if pushed to hard. It is not recommended to run higher than 800x600 resolution, or to use multiple layers at high resolution. 61711
Support for USB serial dongles has been added 61665
Phindows and phditto sessions to ppcbe targets now render offscreen contexts such at PtOSContainer correctly. 61541
For 6.4.0, the all installation documentation will be found under qconfig's base directory then under the subdirectory: install/qnxsdp/6.4.0. The old location, $QNX_TARGET/etc/readme directory, has been removed. 61318
Closed a window where the filesystem read code could be running before the entire partition is mounted. 61292
If the proportions of your background image are incompatible with the current display resolution, it is possible to end up your image not covering the entire backdrop. If you wish, you can configure Appearance, and deselect the 'Maintain Proportions' option, so that the image fills the entire backdrop. 61184
The on utility now has a -P option that spawns a process, setting the SPAWN_PADDR64_SAFE flag to indicate that the process is known to be 64-bit safe or doesn't care about the physical memory location. 61053
The <string.h> header file now brings in <strings.h> if _POSIX_C_SOURCE isn't set, as this is common practice on other platforms. 60983
A PpPrintContext_t job control (0xF2) subcommand (0x05 - Pp_ABORTED) has been implemented in libphrinter. As a result of this, older applications that continued to run when processing particular .phs files might now exit.

This condition is triggered when the PpPrintContext_t resource Pp_PC_MAX_DEST_SIZE is set via PpSetPC(), and the current draw stream being rendered exceeds that set value. If the Pp_PC_MAX_DEST_SIZE isn't set (the default), this condition will not be encountered. When Pp_PC_MAX_DEST_SIZE isn't set, memory is allocated to accomodate the current draw stream (the default).

The preview utility now sets verbosity level so that an error message will be sent to stderr and sloginfo if libphrinter encounters an error condition.

60888
We strongly recommend that you use the Advanced Graphics layering API instead of the Photon layering API, due to increased functionality and ease of use. 60878
Floating point OpenGLES is now available for ARM11 platforms. You can now build and run floating point OpenGLES applications. However our sample applications aren't included in this release and will be available in an upcoming patch. 60648
devg-poulsbo.so is now included in distribution. 60612
The qcc utility no longer needs a space between the -A option and its argument. 60511
Compiling C source with GCC now works when the source is hosted on a Linux Ext2 filesystem. 6049
Advanced Graphics now includes a touchscreen calibration tool called gf-calib. 60462
If you build a container project in the IDE, you've set the “stop on error” option on in the build configuration, and an error occurs in one of the projects, the build now stops correctly. 60281
The SMP version of the kernel now works properly on the Freescale MPC8572DS board. 60178
To prevent the rebuilding of projects in the incorrect order, we've added a Build referenced projects before rebuild? option in a “QNX C/C++ Project settings changed” dialog that appears after you've changed the QNX project properties. This option is checked by default. (Ticket ID 80054) 59992
The maximum number of threads for flash (devf-*) drivers has increased from 4 to 100. You can use the -t option to specify the number of threads. 59876
The usage message for mount now includes the -a option. 59722
There used to be a very small window in which the monotonic clock might by calculated incorrectly on an SMP system, causing the clock to move backwards instead of forwards. We've corrected this problem. (Ticket ID 84567) 59650
The shm_ctl() and shm_ctl_special() functions have a new flag, SHMCTL_LAZY. Setting this flag delays allocating memory until it's referenced. Calling mmap() with flags of MAP_ANON | MAP_LAZY | MAP_SHARED implicitly sets SHMCTL_LAZY on the underlying object. 59589
Running deflate on an empty file no longer causes a floating-point exception. 59515
The IDE now includes support for parallel building for QNX Projects. 59489
The _cmdname() function now correctly gives the full path that the current process was invoked from. Not only does this change make _cmdname() behave as documented, but it's necessary to make _cmdfd() work correctly. 59299
The License Guide can be found in base_dir/install/qnxsdp/6.4.0, where base_dir is where you installed QNX SDP. 59264
There's a new dispatch_create_channel() function that's similar to dispatch_create() but lets you specify the ID of the channel to use. 59009
QNX SDP 6.4.0 includes a Media Content Detector utility, mcd. 58826
We now support Windows XP SP3 as a development host. 58548
The PtMultiText widget no longer displays CR and LF characters. (Ticket ID 83992) 58416
In the IDE on Linux, if you aren't logged in as root, and you try to start the tftp server and bind to port 67 (which requires root privileges), the IDE now displays an error message. If you want to run tftp as a non-root user, change the port (e.g. to 6700), or make the proxy program set its user ID to root. For example:

su
chown root eclipse/plugins/com.qnx.tools.ide.tftp_VERSION/os/linux/proxy
chmod a+sx eclipse/plugins/com.qnx.tools.ide.tftp_VERSION/os/linux/proxy

(The actual commands may depend on the distro.)

58265
The phin utility now has -C, -p, and -r options that control which processes or regions to display information about. 58214
The PhAB language editor, phablang now correctly saves your translations. 58212
We've corrected a memory leak in io_close(), io_stream_read(), and io_stream_skip() for image_load_surface(). (Ticket ID 83864) 58086
PxConfigReadString() now terminates the string with a NULL character. (Ticket ID 83833) 57996
The atof() and strtod() functions no longer lose precision on certain values (e.g. 1000.00 to 1024.00). 57895
The IDE's Code Coverage tool now correctly shows covered lines as being covered. (Ticket ID 83755) 57852
Running code coverage on a binary with a shared library no longer causes the tool to crash. (Ticket ID 83759) 57851
We've deprecated psin. 57719
The IDE's Code Coverage tool can now import results when the source files and the makefile are located in different directories. 57708
We've fixed the parsing that the IDE does when you import a buildfile, so that it always recognizes a # character as the beginning of a comment. 57510
PgDrawGradientBevelBox*(), PgContrastBevelBox*(), and PgBevelBox*() now strictly constrain the incoming parameters as described in the documentation. The width parameter is inclusive, i.e. the inline, depth, and outline are constrained within the width. 57454
PgSetVideoMode() returns an error if more than one layer is active via the Pg layer family of calls. By default, io-graphics is already using one layer. 56988
The L2 cache on i.MX31 targets can now be enabled without causing intermittent kernel crashes when using procnto-v6 variants. 56856
The flash (devf-*) filesystems now have an extent cache to speed up random seeking within a file. 56650
The <termcap.h> file now defines the standard termcap variables, PC, BC, UP, and ospeed. The prototype to tputs() is now the standard: extern int tputs(char *, int, int (*)(int)); rather than the previous, extern int tputs(char *, int, int (*)(char));. 56632
The color model is now set correctly during multi-pass drawstream rendering. ARGB issues are now addressed correctly in OSC. (Ticket ID 82983) 56426
You no longer have to start setupbsp with "ksh setupbsp" 56178
Both phditto and phindows now have a dialog for confirming that you want to close the window. 56162
The IDE's Code Coverage tool now works with C/C++ Managed Projects. (Ticket ID 82862) 56075
Previously the application of a driver update would succeed and allow an installation but the subsequent rebuild of the customized boot image would fail under certain circumstances (VMware with a SCSI adapter as an example). This has now been resolved. 56042
MultiMedia v1.x support has been removed from 6.4. MultiMedia v1.x-dependent applications will not resolve symbols or execute under 6.4. Inquire of QNX regarding the Aviage MultiMedia Suite for multimedia support. 55967
The IDE now lets you edit the line number for a breakpoint. Right-click on the breakpoint, select Properties..., select the Common tab, and then edit the line number. (Ticket ID 82835) 55861
We created a function for properly converting encoded baud speeds (in termio and sgtty) into unencoded baud speeds for termios, as well as a function for properly converting unencoded baud speeds into encoded baud speeds. The functions were then employed in conversion functions between the non-POSIX sgtty and termio structs to the POSIX termios struct. 55791
The pidin mem command now correctly displays information about direct physical mappings. (Ticket ID 82035) 55718
GCC 4.2.* replaces calls to some functions such as strcpy() with calls to other functions such as memcpy(). As a result, memory analysis can show a different trap function name. To turn off this behavior, specify the -fno-builtin option when compiling. 55514
Duplicated projects showing up in "From Project..." dialog in Launch configuration Download tab is now fixed. 55453
We've discontinued 8-bit drivers and display modes in Photon. The phgrafx binary is for x86 only; we previously shipped it on other platforms, but crttrap, which it relies on, was an x86-only application, so phgrafx was never usable on non-x86 platforms. 55260
The Windows tools no longer have a dependency on Cygwin. You can no longer use Cygwin mountpoints or Cygwin-style path names. The toolchain (gcc, binutils and gdb) accepts only native Windows-style paths. Command-line users can build from either the Windows command shell or use an emulated shell such as ksh or sh. Under the emulated shells, the backslash character is treated as an escape character, so pathnames should use forward slashes, or they should have an additional backslash character. 55190
MsgCurrent() no longer causes a priority inversion. 55141
The PPC 600 startup library now ensures that the BAT settings used to map device memory are as small as possible. This ensures that a speculative prefetch can't hit an area of memory that is mapped but does not exist on the bus. (Ticket ID 82106) 55105
The mkifs command writes a minimum of 4 bytes for the image header mountpoint. If the mountpoint is less than 4 bytes long (e.g. the default value of /), mkifs now writes zeroes for the remaining bytes. 55091
The PtOSContainer widget now correctly translates coordinates. 55060
The static libc now includes insque() and remque(), which you can use to add and remove elements of a doubly linked queue. 54815
The phauxrender library (used by some print filters) now renders Bezier curves better. 54688
If you use the -w option, etfsctl now writes the image to the correct location in flash, whether a raw partition is present or not. 54677
When the IDE is parsing a project tree to collect variants, it no longer interprets paths for header files such as public/ppc as a CPU - class directory. (Ticket ID 81806) 54545
In the IDE's Breakpoints view, the breakpoints are now sorted by default first by file, then by line. (Ticket ID 81602) 53934
If you view STL string variables in the IDE's Variables view, the view no longer becomes inactive. (Ticket ID 81536) 53928
The IDE's Debugger can now display 64-bit variables in hexadecimal. 53871
PgDrawTextAreaCx() now properly processes the number of bytes. (Ticket ID 81546) 53733
The nto.link linker script has been updated to work with gcc 4.2. 53712
We provide utilities to completely remove a QNX installation from your system. This may be required in the event of an interrupted or failed installation. Utilities for Linux and Windows have been provided on the DVD in the Utilities folder. 53536
The chapter Debugging in the IDE in the IDE User's Guide contains information about the added support for GDB catchpoints, such that you can set event breakpoints for these types of events: exception caught and exception thrown. For more information, see “Adding event breakpoints”. 53300
When you're doing postmortem debugging in the IDE using a core file, and the application has a shared library object, the symbols for the shared library are now loaded. 53210
When you duplicate an image in the IDE's System Builder, all properties are now copied properly. 53164
We now support Linux SuSE 10.3 as a development host. 52938
In the IDE's Variable view, if you cast a variable from a base class to a derived class, the cast variable is now displayed correctly; the extra members added by the derived class are now displayed. (Ticket ID 81276) 52907
The IDE's Variable view no longer shows the private/public subgrouping for member variables. (Ticket ID 81267) 52895
In order to conform to POSIX, pthread_cond_timedwait() and pthread_cond_wait() now return EPERM instead of EINVAL if the current thread doesn't own the mutex. 52798
The IDE now lets you select a variable in the Variables view, and then do a “show memory”, which opens the Memory view for that location. 52686
The IDE's Debugger now supports Event Breakpoints (which correspond to gdb catchpoints). The number of types of event breakpoints actually supported depends on the version of gdb you're using. 52683
The IDE's Debugger now lets you attach gdb commands to a breakpoint. These commands are executed automatically when the breakpoint is hit. 52682
The IDE's Disassembly view has a new feature that lets you jump to an arbitrary address and show the disassembly of that code. 52680
The IDE's C/C++ editor now has a context menu that lets you add watch expressions. 52679
The IDE's Debugger is now better at locating source code. 52658
We've addressed some issues with drivers/frameworks software that assume physical addresses of memory are less than 4 GB (or aren't 64-bit paddr-safe ). We've also added a new -m[~]P option to procnto, as well as a new SPAWN_PADDR64_SAFE flag for spawn*().

The new procnto -m option variant is -mP, which turns on full allocation of high memory for all processes (the default is to limit anonymous allocation below the 4 gigabyte mark - i.e. -m~P). This is mostly useful only for testing.

The new spawn flag is SPAWN_PADDR64_SAFE which allows the selective spawn of an application that is known to be 64-bit safe or that doesn't care about the physical memory location. (Ticket ID 80995)

52392
The system monitor in Photon's shelf now correctly displays memory usage on machines with 4 GB of RAM. 52342
We've updated the phs-to-pcl filter so that it's based on the new HP APDK library, and hence supports more printers. For more information, see the entry for phs-to-pcl in the Utilities Reference. 52331
You can now drag lines, words, and text blocks in the IDE's editor. 51890
POSIX doesn't specify what should happen if you call getcwd( NULL, 0). The Neutrino version (like many others) now allocates a buffer for the name of the directory; it's up to your application to free the buffer when you no longer need it. 51435
The shm_ctl_special() function now lets you set some hardware-specific cache attribute bits in the page table entries. For more information, see the QNX Neutrino Library Reference. 51227
The IDE's System Builder now determines the format of a BSP's IPL. If it's in binary format, the System Builder doesn't needlessly convert it. (Ticket ID 80149) 50938
We've fixed a bug in the construction of Pg_SET_USER_CLIP draw commands that used to corrupt the draw stream. (Ticket ID 79669) 50581
The Photon file manager, pfm, now properly handles character encoding when creating files. 50536
PhAB no longer crashes when you paste PtBitmap widgets. (Ticket ID 79943) 50322
The fdisk utility now attempts to determine the type of loader (if any) on the disk. 50293
You can now access /dev/shmem on ARM targets over Qnet. (Ticket ID 79776) 49874
The Memory view of IDE's System Information perspective displays better information about anonymous memory mapped by a process. 49751
The Malloc Information view in the IDE's System Information now displays the maximum allocatible memory for a process, instead of the number of outstanding blocks multiplied by the maximum size of the range. 49703
There's a new -c option to slogger that you can use to open the log file with O_SYNC to commit the log events to disk. (Ticket ID 78782) 49153
We've corrected the unmasking of interrupts in the SH version of the kernel, significantly reducing the latency times. 49127
In the IDE, if you build a debug variant of a project that's in a Container project, and the debug folder is missing, you now get a message in the output for the container project that the debug variant doesn't exist and that the release variant won't be built. 48887
The IDE now includes a Full Trace Event Log view that shows more events and lets you use the scrollbar to view more events. You can open this view via the Window-->Show View dialog. 48847
Square caps on the end of thick lines now always match the thickness of the line itself. (Ticket ID 79056) 48674
The rpcgen utility now looks for the C preprocessor in the right place on QNX Neutrino hosts. (Ticket ID 76034) 48650
The rpcgen compiler now correctly handles arrays of booleans. (Ticket ID 79034) 48648
The makefiles for new QNX projects in the IDE now work correctly with new versions of make on Linux. 48365
PgDrawEllipse() no longer experiences a sign inversion when the radius is greater than 1000. (Ticket ID 78772) 48313
When you create a new QNX project, the IDE now prompts you if the default file will overwrite an existing file in the project directory. The New Project wizard now also lets you disable the generation of a default file. (Ticket ID 78551) 48298
The kernel no longer hangs when you start procnto with the -ml~i option and then use ftruncate() to reduce the size of a shared memory object. (Ticket ID 77976) 48061
The Extreme2 graphics driver no longer displays the initial TV output as a pink or light blue screen. It's now black. (Ticket ID 78491) 48019
We've added a QCONN_ALT_MALLOC environment variable that you should use when starting qconn to specify the name of any special version of libc that you're using (e.g. QCONN_ALT_MALLOC=libspecialLib.so.2 qconn). Without this name, the IDE's System Information perspective shows incorrect memory information because it can't find the right malloc() information. (Ticket ID 78507) 47976
In the IDE's System Profiler, you can now synchronize trace events with the time from the Neutrino target's hardware clock. 47816
The UNALIGNED_RET64() macro now works correctly on PPC targets. (Ticket ID 78366) 47759
The Print selection button in the print dialog for Photon applications now functions correctly. (Ticket ID 77972) 47747
The kernel can now support more than 256 MB of RAM on SH systems. For more information, see “What's new: Kernel” earlier in the release notes. 47671
You will notice performance improvements with the Memory Analysis Tooling application if you use "Memory Errors" options. There are no performance improvements in the area of memory events collection. However, you will notice the following caveats:
  • The option Perform full integrity check on every allocation/deallocation does a linear heap traverse by definition.
  • We recommend that you not use the Perform full integrity check on every allocation/deallocation option for applications with more than 100 MB of heap allocation.
  • The option Perform leak check every (ms) will also require a complete heap traversal.
  • We recommend that you set the Perform leak check every (ms) option to 0 for applications with more than 100 MB of heap allocation. While the application is running, you can open the settings page of the Memory Analysis Tooling editor, and you can request any leaks manually.

In addition, a new option to remove all optimizations has been added that sets the MALLOC_USE_CACHE environment variable to 0. You can also change the malloc cache size (using the save variable). The default is value is 32. This value should be power a of 2, and should be between 1 and 2048.

47353
Memory errors are now flushed out from qconn into the IDE even if memory tracing is disabled. 47352
In the IDE's Memory Analysis, there's now a backtrace for memory errors even if memory tracing is disabled. 47351
Fill patterns now function correctly with the phs-to-ps filter. (Ticket ID 78087) 47330
Phindows now detects when the target has disconnected unexpectedly. 47183
Error and Memory allocation backtracing in the IDE now work properly for non-x86 targets and for C++ code. 47072
The name_open() function once again gives an error of ENOENT instead of ENOSYS if the given name doesn't exist. (Ticket ID 77801) 47032
You can now copy and paste projects using the IDE's Project Explorer view. 47010
The IDE now supports parallel builds for QNX projects. 47003
You can now drag and drop files from the filesystem into the IDE and edit them there. 46998
When you import a container project, the IDE now remembers the project's previous location. 46989
The IDE's Problems view now shows line numbers for assembly errors. To enable assembly error parsing,enable Assembly Error Parser in the project properties. 46980
The IDE now remembers whether local variables were expanded or collapsed in the Variables view. 46979
The macro _DEXTRA_VALID() in <dirent.h> no longer generates a “comparison between signed and unsigned integer expressions” warning. (Ticket ID 77874) 46757
When you copy scripts in the IDE's Target Filesystem Navigator, execute permissions are retained if the host system allows it. (Ticket ID 77855) 46726
You can now use the update site for the IDE over an HTTPS proxy. 46580
On PPC targets, if dlopen() reports a missing symbol after loading a DLL, it now correctly returns and indicates a failure, instead of calling exit(). (Ticket ID 83069) 46504
The system logger, slogger, no longer displays a message on the console when it switches between log files, unless you start it in verbose mode. 46349
POSIX requires that mmap() fail with EINVAL if the flags argument doesn't contain either MAP_SHARED or MAP_PRIVATE. This now happens unless you request that the memory manager use backward-compatibility mode. For more information, see the section on POSIX PSE52 conformance in these notes. 46288
The libmalloc library (and the librcheck replacement library) now use less stack memory for operations. 46266
The IDE now lets you disassemble any piece of code starting with known address. You have to obtain the address of the function and use the Disassembly view action Go to address to jump to the specific function. 46197
The pidin mem command no longer shows more than one entry of memory usage for shared libraries. 46114
We've improved support for unnamed namespaces in the IDE's Debugger. 46107
The gf_display_set_mode() function now returns GF_ERR_OK on success (as documented). 46077
You can now use gzip to compress and expand files in a RAM (/dev/shmem) filesystem, but you need to specify the -f option. 46076
The gf_cursor_t structure formerly used an anonymous enum for the cursor type, but this caused errors when you compiled C++ programs. The enumerated type is now called gf_cursor_type_t. (Ticket ID 77430) 46045
Added checking in FFS(devf) filesystem recovery to support new cleanup mechanism. 45992
The fprintf() and fscanf() functions now use the given stream's _Flock mutex instead of the one belonging to stdout or stdin. (Ticket ID 77106) 45900
We've fixed some issues with profiling large applications with more than 6 shared libraries in the IDE. 45767
We've improved the IDE's C/C++ indexer (used in code navigation). 45765
By default, the IDE now uploads the stripped versions of shared libraries. The Upload tab in the Launch Configuration dialog has an option for changing this behavior. 45764
The IDE's Application Profiler can now load symbols for a shared library when explicitly set in the Shared Library path field in the Launch Configuration dialog. 45711
If you use the shortcut icon for preferences in the IDE's TFTP view, you no longer get an error message when you save your changes by clicking the Apply and then the OK button. 45704
An EBADFSYS error will now fall-through opens on a union filesystem (as ENOENT, ENOSYS, ENXIO, ESRCH, EROFS currently do) and allow pathname resolution to another mountpoint. 45631
In the Statistics window of the IDE's Memory Analysis Tool, the number of errors reported is now the actual number of errors that occurred as displayed in the Errors view. 45443
The Extra Libraries dialog that is available in the IDE by right-clicking on Properties, and then selecting QNX C/C++ Project-->Linker-->Extra libraries now includes Up and Down buttons for reordering the libraries, and it provides a scrollbar if the list of extra libraries becomes too long to display. (Ticket ID 75996) 45353
In the IDE, if you change a QNX C/C++ Project indexer setting for a container project, the C/C++ index and a progress icon in bottom right of the Workbench window are now displayed. 45081
PhAB now preserves the grid position of icons in its workspace. (Ticket ID 76763) 44951
On Windows Vista, the IDE's Memory Analysis Tooling perspective now displays the actual Vista host's time, not UTC. 44861
The phs-to-pcl filter can now print on PPCBE targets. 44845
The IDE's launch configuration now lets you use binaries that are located outside the workspace. 44808
We've added extern "C" {...} to <sys/cache.h>, so libcache now works with C++ code. 44679
Clipping is now processed correctly when multiple PtOSContainer widgets are children of a common parent widget. 44677
The ph script now uses waitfor to test for existence of devices. 44675
The IDE's System Profiler now includes a Thread Call Stack view that shows the call stack of the currently selected timeframe. If address translation is enabled, you will get the actual function name instead of the address. For this feature to work, you need to instrument the binary with Functions Instrumentation. It supports navigation to the source code if address translation is enabled. 44593
If you pass mmap() a suggested result address and size parameters that, when added together, are a value that exceed what can fit into a pointer (i.e. the addition wrapped around), the system now adjusts the suggested result address so that no wraparound occurs before seeing if it can use the value. 44567
PgConfigScalerChannel() can now set the brightness and contrast. It previously ignored them. 44564
The debugging messages from the shared library loader in libc.so when DL_DEBUG is set are now clearer. 44495
PgGetScalerCapabilities() now indicates Pg_SCALER_CAP_BRIGHTNESS_ADJUST and/or Pg_SCALER_CAP_CONTRAST_ADJUST capabilities if supported by the driver. 44492
When performing memory analysis in the IDE, if you use a time-based collection method for memory leaks, you no longer get results that show duplicate memory leaks. 44473
We no longer ship the x86 Runtime Kit, but we provide a technote that describes how you can create your own CD based on an existing QNX Neutrino 6.4.0 CD. 44103
Phindows now draws thick lines in the correct position. (Ticket ID 76189) 44028
The system monitor in Photon's shelf now displays large RAM values correctly. (Ticket ID 76001) 44014
When you create a QNX project in the IDE, a static+shared+debug dependency now results in the correct library name. 43844
The timeouts for waitfor across /net are now more accurate. (Ticket ID 75782) 43696
Timeouts for on -W across /net are now more accurate. (Ticket ID 75782) 43695
In the IDE's System Profiler, if you open a .kev file and select a timeline with obvious activity, and you then zoom in, the thread timelines and events no longer disappear. 43684
In the IDE's Memory Analysis Tool, if you select a region that has only one allocation, (e.g., a region in the Usage view) and select Show in Trace to obtain a graphical representation, the graph now displays a single bar that corresponds to the only allocation. 43494
Dual graphics display configuration is essentially a manual procedure. By default, the graphics subsystems attempts to disable any secondary graphics device. This is done for several reasons: 1) Particular graphics cards, when activated, can lock up the system, and there's no safeguard to protect against such incompatibilities. 2) Particular graphics cards, even when just installed in the same system, will lock up the system when powered on. 3) Special configuration of the secondary device is often required, especially on BIOS equiped boards. Usually this special configuration is accomplished via a graphics configuration file (they reside in /usr/photon/config). Although several examples are provided, many will require altering for the specific chipset being utilized. One thing to ensure is that the memory window specified in the configuration file is correct for the particular card being utilized.

The use of a graphics configuration file is specified in /etc/system/config/display.conf, with the modeopts option to the driver.

43357
Our libsocket.so no longer uses a QNX-specific itoa(), so if an application defines its own itoa(), the application's version no longer causes calls to socket() to fail. 43281
In the Image Combine dialog box in the IDE's System Builder, the fields are automatically populated with information from the IFS properties. If you change the information for the fields in this dialog box, the values are now correctly saved and the IFS properties are updated. 43188
The IDE's System Builder now lets you add the contents of an entire directory from the host site into the image. 43118
We've added dependency checking for libraries to the IDE. If a library changes, the main application is relinked (QNX projects). 43028
POSIX requires that the error numbers in <errno.h> have unique values. In order to satisfy this requirement we're changing the value of EALREADY. For details, see the section on POSIX PSE52 conformance in these notes. 42983
In the IDE, if you delete a target, you can now reuse the name. 42778
There's a new Advanced Graphics flag, GF_SURFACE_CREATE_SHAREABLE, that allows server side surfaces to be allocated via gf_surface_create(). 42774
Postmortem debugging in the IDE now works correctly with multiple shared libraries. (Ticket ID 75316) 42678
When running io-display, you can now prevent a display from shutting down when all applications exit by setting the noautoshutdown option to 1 in the display.conf configuration file. 42650
We've added two functions, mq_timedsend_monotonic() and mq_timedreceive_monotonic() (defined in <mqueue.h>), that let you set monotonic kernel timeouts. Note that the timeout parameter is an absolute time relative to the montonic clock. For example:

ClockTime(CLOCK_MONOTONIC, NULL, &timenow);
to.tv_sec = timenow/1000000000LL + my_timeout_secs;
to.tv_nsec = timenow % 1000000000LL;
result = mq_timedsend_monotonic (mq, msg, sizeof (msg), 0, &to);

42549
There is now a shared version of the libgf library. 42530
You can now use the SOFT3D_NAME environment variable to specify a software fallback library for 3D rendering. This allows you to use a library other than devg-soft3d.so. 42529
The pidin utility now displays dashes instead of zeroes for the code, data, and stack sizes if no memory information for the process is available from procnto. 42519
If you choose a debugger other than gdb, the IDE no longer gives you an “Invalid debugger type” message. 42127
Self-hosted Neutrino systems no longer include two different versions of qconfig. 42105
In the IDE, the System Profiler's Inter CPU Communication chart now has a heading of “Cross CPU Messages” instead of “Total Migrations.” 42037
FPU is supported on the AMCC440EP processors with the appropriate startup 41996
The kernel no longer crashes if you call TraceEvent() with unaligned data, although the kernel call will fail with EFAULT. 41995
We've added a gf_context_unset_surface() function that lets you remove a surface from a context. 41972
Prior to 6.4.0 there was no way to track pulse leaks -- that is, a process not receiving pulses. This can cause a growth in kernel memory usage, since pulse structures are allocated in the kernel. With 6.4.0 a pidin channels command will show the length of the send/receive/reply and pulse queues. 41882
An ETFS filesystem is no longer mounted by default; you can use the -m option or mount -tetfs /dev/etfs2. (Ticket ID 74912) 41841
We've added a devn-rtl8169.so driver that supports the Realtek 8110SB (GigE) Network Interface. This driver is currently available only for x86 platforms. 41800
Advanced Graphics now supports 32-bit ARGB ordered surface formats (GF_FORMAT_ARGB8888). 41663
The tinit utility now has an -f option that lets you specify the file that lists the commands to start. The default is /etc/config/ttys. 41658
The phrelay utility now uses wframe_updated.so from /usr/photon/dll. 41547
The Photon file manager, pfm can now execute applications from other locations than /usr/photon/bin. (Ticket ID 74650) 41318
The -V (verbose) option now works for phs-to-ps. 41194
Printer filters no longer run ready when they encounter broken .phs files. 41180
We've fixed fs-dos so that it doesn't continually recalculate the free cluster count for removable devices. 41085
In the IDE, you can now create a project whose name includes a number sign (#). 40957
In the IDE, if you stop a build, a subsequent build is now an incremental one instead of a complete rebuild. (Ticket ID 74311) 40927
You can now import an EFS buildfile into a project in the IDE. 40682
For conformance to POSIX, pthread_create() and pthread_join() can no longer be interrupted by a signal (i.e. they can no longer fail with an error of EINTR). 40666
The libphrender library's spanlist processing no longer suffers from 16-bit overflow. (Ticket ID 73681) 39888
The lsm-qnet.so module has a max_num_l4s option that lets you specify the number of interfaces. 39728
Continuously calling select() with a timeout of 0 no longer causes an internal signal queue to grow in an unbounded manner. 39687
The dumper utility now has a -z option that you can use to compress the core files. 39662
You can now profile shared libraries without needing to specify -Wl,-E to the linker when building the application. 39600
Repeatedly running tracelogger in ring mode no longer makes the system leak memory. 39178
Phindows now correctly displays window titles that contain non-ASCII characters, specified by the -s option. 38770
The tracelogger utility now exits properly in ring mode, even when you specify -n0. 38753
If you use the mount command to mount an NFS server, and you specify the argument -o ver3, and fs-nfs3 isn't running, fs-nfs2 no longer accepts the mount request. 38640
Pt_ARG_MENU_TEXT_FONT widget resource has been added to PtPanelGroup for the popup menu in single-tab mode. (Ticket ID 73009) 38582
Photon now supports a user-defined event type, Ph_EV_USER. (Ticket ID 73092) 38579
The fs-cifs filesystem now returns the errno when the mkdir() function call fails as those returned by the local filesystem. 38573
If you perform a socket operation on a file descriptor of a file on a fs-cifs mountpoint, the operation fails, and the errno returned is now correctly ENOTSOCK. 38572
Both fs-nfs2 and fs-nfs3 now support fchdir(). 38548
The exit status for fs-nfs3 is now correct. 38512
The debug path note is no longer automatically added when use messages are added and effect the program name of the executable. 38408
Long executable names no longer cause a buffer overflow. 38199
If you use the instrumented kernel to trace events while you're using mq, emitting _NTO_TRACE_COMM_SMSG communication-class events no longer causes your application to crash with an EFAULT when it calls mq_send(). 38082
The devc-con[-hid] console driver now supports international keyboard layouts. By default, the original US101-layout is used. If at startup time the file /etc/kbd.tbl is present, it's loaded and used instead. You can reload this file at runtime by pressing Ctrl-Alt-Space. The default US-101- and a DE-102- (German) layouts are provided as ${QNX_TARGET}/etc/kbd.tbl.*. 37638
We now provide an optimized version of memcpy() for all platforms. 37231
The libPtWeb.so shared object now processes Pp_PC_MAX_DEST_SIZE correctly as a ulong_t, which prevents printer drawstreams from being corrupted or truncated. 30040
phs-to-ps no longer runs READY or segfaults when processing aborted printer jobs. 29940
The gf_display_snapshot() function provides screen snapshots on Carmine cards. 29893
FIFO scheduling is now honored correctly with SMP. 29847
We've corrected our recursive makefiles to clear and later reset the NAME environment variable (if it exists), so they no longer use its value to name the resulting binary. 29843
Trying to slay something on a node in a domain other than your own now works. 29840
The kernel no longer crashes when you use ClockPeriod() to set the ticksize to a very small value and you then invoke the SCHED_APS_PARTITION_STATS command to SchedCtl() at a very high frequency. 29827
You can now configure the memory allocator using various options and tuning parameters. These options are described in the Heap Analysis chapter of the QNX Neutrino Programmer's Guide. 29730
If you have multiple writable mappings to the same region of a memory-mapped file (in different processes, for example), then calling msync() with MS_SYNC no longer causes a deadlock. 29574
The pidin command no longer crashes when you specify -F "%M" and a process has no memory objects. 29522
The PtMultiText widget no longer leaks memory for text attribute font strings. (Ticket ID 72352) 29421
If you use QWinCfg on Windows to switch to QNX Momentics 6.2.1, the value of the QNX_HOST environment variable now correctly contains backslashes (“\”). 29368
The devg-radeon.so driver now works, even when you have more than 512 MB of system RAM. 29339
When you're using tr, you can now specify ranges of characters with or without square brackets. 28971
The PtWebClient widget now has a new Pt_CB_WEB_STATUS type called Pt_WEB_STATUS_CONTENTS. The information passed in the description field for this new status type is the string contents of the PtText or PtMultiText type-in field that just got focus. The contents string is preceded by an ordinal number identifying the control on the web page, and a colon. Currently only FORM-EDIT, FORM-PASS and FORM-TEXTAREA controls are supported. 28874
PxLoadImage() no longer misreads ARGB1555 as RGB565. 28821
The snapshot utility now works with phrelay (phditto, phindows). 28671
The devn-speedo.so driver now has a probe_phy option that controls automatic probing of the PHY device. 28648
The tracelogger utility now reports additional attributes, and you can add attributes to the log. For more information, see the Utilities Reference. 28612
devc-con[-hid] now supports international keyboard layouts. By default, the original US101-layout is used. If at startup time the file /etc/kbd.tbl is present, it is loaded and used instead. You can re-load this file at runtime by pressing Ctrl+Alt+Space (If using VMWare, you may need to press this twice). The default US-101- and a DE-102- (German) layouts are provided as ${QNX_TARGET}/etc/kbd.tbl.* 28465
Umounting removable or not present filesystems no longer causes a devno leak. 28376
We've removed a potential deadlock from the malloc library that could have occurred when you used vfork() and exec() if the vforked child received a termination signal while holding the malloc library mutex. 28161
The kernel will no longer report a crash in "vmm_fault" if you happen to pass in an address in that is a particular address range to a kernel call. The range is unique to each architecture, but is always outside of the normal user space addresses. 28048
When using high warning levels on the compiler, you no longer get duplicate prototype warnings when including <stdio.h>. 27983
In order to conform to POSIX, we've changed the ino_t type from signed to unsigned. For more information, see the section on POSIX PSE52 conformance in these notes. 27903
Prior to 6.4.0 the -m option to dumper would create a core file that didn't contain any non-stack memory. This prevented gdb from determining which shared libraries were loaded at the time of the core.

Now, dumper -m dumps just enough of the non-stack memory to allow gdb to determine the loaded shared objects.

27412
The phlocale utility now lets you specify up to three different keyboard layouts, as well as a key combination for switching between them. (Ticket ID 70693) 27351
The PgDrawArc() function, when you use the Pg_ARC_PIE flag, now gives more consistent results when using thick lines. (Ticket ID 70706) 27266
The phlogin2 utility now scrolls user icons when there are more than 8 users registered in the system. (Ticket ID 70499) 26944
Phditto now properly reads the length field from incoming message headers, and so no longer runs READY. 26824
There's a new showmem utility that displays memory information. For more information, see the Utilities Reference. 26719
PhAB grouping no longer breaks widget anchoring. (Ticket ID 69002) 26634
Horizontal scrolling now works properly in the IDE's System Profiler. 26628
We've added more information to the “Out of interrupt events” message. If you suspect that you have an issue with too many interrupts, add the -vv option to procnto in your buildfile in order to get the additional details. 26545
Blocked resources in PtCompoundClass_t are now properly defined as Pt_ARG_IS_POINTER. (Ticket ID 70199) 26522
PhAB no longer displays the Pt_ARG_ARM_COLOR and Pt_ARG_ARM_FILL resources for PtNumericInteger and PtNumericFloat widgets. (Ticket ID 70195) 26494
The performance of large block writes to /dev/shmem has improved. 26280
The PtMTrend widget now properly renders when data is added via PtMTrendAddData(). (Ticket ID 70044) 26155
You no longer lose your keyboard configuration when you change the machine's hostname. 26052
PfGenerateFontName() now returns a mapped font entry if the requested font name, and/or size isn't available. (Ticket ID 69964) 26043
Backtraces in the IDE's Memory Analysis now work reliably on ARM targets. 26035
Focus is now processed correctly in the PhAB resource editor when a widget was instantiated via Ctrl-W. (Ticket ID 69636) 25790
PtGenList column formatting now works correctly via phrelay. 25733
Black-box regression tests for watchpoints in gdb no longer fail for ARM targets. 25599
The PhAB resource palette no longer overrides the default count for PtTimer. (Ticket ID 69508) 25494
The PtScrollbar is now updated correctly when you remove an item from a PtList or PtTree. (Ticket ID 69522) 25472
The phabmsg now generates the filename extension during a “Save as ...” operation. (Ticket ID 69427) 25308
If you reset your target board while you're debugging from the Windows-hosted IDE, and you've clicked Terminate and remove in the IDE Debug view, the ntoCPU-gdb.exe process no longer runs ready, consuming 100% of CPU. 25174
Photon has two new functions: PgGetSurfaceGFSid() and PdCreateOffscreenContextGF(). 24996
The Korean input method, kpim, no longer displays “illegal option” if you use the -x or -y command-line option. 24827
PtTreeModifyItemString() no longer truncates the string to the longest displayed string length. (Ticket ID 69249) 24819
The PhAB color editor's custom color palette is now saved between edits and between sessions. The information is stored in the user's photon configuration area, in a file called $HOME/.ph/phab/abcpal.cfg. A new Reset button under the custom color palette lets you reset it to its default state.

If there is no color information stored in your configuration area, PhAB looks for an abcpal.cfg file in the system directory where the PhAB executable (ab) is running from. It will also look in this system area when you press the Reset button.

24705
The phrelay utility now supports the display of offscreen contexts. 24530
The mkifs utility now adds a dummy startup header that indicates the compression type to compressed, non-bootable image filesystems. 24471
PtNumericInteger and PtNumericFloat no longer render focus if the Pt_FOCUS_RENDER flag bit is cleared from Pt_ARG_FLAGS. (Ticket ID 68900) 24345
The Pt_ARG_NUMERIC_TEXT_FONT resource is deprecated, and so is no longer displayed in the editor in PhAB. (Ticket ID 68691) 24111
Pt_ARG_FILL_COLOR is now shown correctly as grey for PtNumericInteger and PtNumericFloat in PhAB. (Ticket ID 68680) 24093
The PtNumericInteger and PtNumericFloat widgets' up and down keys are now properly mapped when the widget orientation is Pt_HORIZONTAL. (Ticket ID 68647) 24063
The phfont server now processes fontext rules in the order they're entered. (Ticket ID 68193) 24002
The pwm hooks now draw borders correctly. (Ticket ID 68475) 23992
PtConnection now works over QNET. 23906
24-bit images are now displayed correctly on PPCBE. (Ticket ID 67709) 23825
Compose sequences now work for Phindows and PhAB for Windows. (Ticket ID 68354) 23810
The pppd daemon now uses the /etc/ppp/options.ttyname option file. 23743
PtMultiText now honors the setting of Pt_ARG_MARGIN_WIDTH. (Ticket ID 68038) 23280
If you pipe the output of pidin to another command, it no longer displays couldn't fill_info messages. 22989
Phindows now processes mouse wheel scroll events. 22835
Filled polygons have an improved filling algorithmn. 22383
Rounded rectangles are now rendered correctly when the fill color is Pg_TRANSPARENT. 22177
The rint() function no longer crashes with a SIGFPE on ARMLE targets. (Ticket ID 67292) 22165
Added ISO9660 Interchange Level 3 support to fs-cd. 22087
The cp utility no longer crashes when you give it a source path that's longer than the maximum allowed. 22002
Certain tools, such as bindres and usemsg, which are needed for building PhAB applications, now work correctly on Windows, even if you don't have write permission in the root of your local drive. (Ticket ID 66893) 21849
We've fixed some heap memory leaks in snapshot, and we've made the program use shared memory more efficiently. (Ticket ID 66820) 21776
The tinit utility now has a -t option that makes tinit not mask the suspend signal (SIGTSTP) in spawned processes. 21751
Chinese and Korean are now listed as supported languages in phlocale. (Ticket ID 66783) 21685
The PtRect widget now handles thick lines stroke outlines properly. (Ticket IDs 66784, 75898) 21684
The phditto program now functions the same way Phindows does in when handling -x and -y region offsets when the -u option is passed. (Ticket ID 66776) 21659
On the SH4 platform, gdb no longer sometimes displays “finish meaningless on outermost frame” when trying to step out of a DLL when stop-on-solib-events is on. 21502
If you have a C/C++ project that returns a value of 10, and you run it in the IDE, the Console window reports the correct return value. (Ticket ID 66347) 21300
Spawning a process remotely no longer causes the remote procnto to leak file descriptors. 21182
The pv utility now displays images correctly on PPCBE. 20732
The gdb debugger no longer displays a “Compiled with unknown debugging format” warning. 20658
The tftp utility no longer terminates with a floating-point exception when printing statistics from a get or put command when you're using verbose mode. 20615
Setting the Pt_ARG_SCROLLBAR_WIDTH resource for a PtList or for a compound widget that includes a PtList now has the correct effect. 20431
The tftp utility no longer faults if you press Enter at the “To” prompt without supplying the host parameter. 20064
The IDE's Debug Variables view no longer lists the this pointer twice. 20063
The open dropdown list for a PtComboBox is longer displayed in front of the “blank” screensaver. 19767
We now ship comm, a POSIX utility that selects or rejects the lines that are common to two files. 19760
Signals are no longer left pending on SMP systems. 19321
If you use PpSetPC() with Pp_PC_FILTER or Pp_PC_DRIVER, the print context now correctly uses the specified print filter. (Ticket ID 64836) 19182
The nto*-* binutils are now built for specific targets; there are no more ntomulti- variants. 19174
The getcwd() function now follows POSIX, which states that the returned path won't contain components that are symbolic links. You can revert to the old behavior by exporting the DIR_KEEP_SYMLINK environment variable. example (new default POSIX behaviour): # cd /tmp # mkdir adir # ln -s adir alink # cd alink # /bin/pwd /tmp/adir example (old behaviour) # DIR_KEEP_SYMLINK=1 sh # cd /tmp # mkdir adir # ln -s adir alink # cd alink # /bin/pwd /tmp/alink 18912
Multiple concurrent calls to shm_unlink() for the same shared memory object no longer cause kernel corruption and crash the kernel. 18121
Phindows now supports alpha-blended images with a global source value (i.e. a constant alpha multiplier for all pixels). (Ticket ID 63678) 17548
The IDE now supports extensions of cpp and cxx for C++ source files. 17409
The micro-embedded shell, uesh now accepts a script file as an argument. 17048
Photon has improved window moving performance on SMP machines. 17017
The phditto program now flushes serial connections after an open(). (Ticket ID 62119) 16733
Phrelay message headers now support 32-bit sizes, eliminating draw buffer overflows. 16565
The mountpoint specification is optional for fs-cifs, fs-nfs2, and fs-nfs3. 15446
You can no longer link a program that doesn't have a main() function. 15055
Our implementation of dlopen() now supports RTLD_NEXT. 13416
You can now use the Tab key to complete the names of files and commands in ksh. 13090
The snapshot utility now works in a phditto session. 11487
We've changed the message send/signal pending/sync waiting queues to a new data structure so that we can quickly find the proper insertion point for new items, maintaining a priority-ordered list. This improves performance when (for example) many pulses are queued. 10963
24-bit memory contexts now work correctly on PPCBE. 10751

Documentation fixes

Change Ref#
The n argument to the mbsrtowcs() and mbstowcs() functions is the number of wide characters, not the number of bytes. 62130
We've added posix_spawn() to the description of process primitives in the Process Manager chapter of the System Architecture guide. 61972
We've removed pthread_once(), pthread_testcancel(), pthread_setcancelstate(), and pthread_setcanceltype() from the list of POSIX pthread*() functions that don't involve any microkernel thread calls. See the QNX Neutrino Microkernel chapter of the System Architecture guide for the corrected list. 61870
In the Profiling an Application chapter in the IDE User's Guide, various procedural steps and their corresponding figures were updated to reflect the new and updated features in the Application Profiler tool. For information about these enhancements, see the What's New chapter. 61269
The Common Wizards Reference chapter in the IDE User's Guide contains information about the new option Use parallel builds on the Behavior tab that lets you determine whether the IDE can perform builds in parallel, and if so, how many can occur. 61092
A returned value of NULL from readdir() is ambiguous; if you need to determine if it indicates an error (as opposed to the end of the directory stream), set errno to EOK before each call to this function. 60916
We now package BSPs as zip files (as well as putting them in a repository on Foundry27). We've updated the Working with a BSP chapter of Building Embedded Systems to suit. 60886
The rtsold daemon now has an -a option that lets you autoprobe the outgoing interface. 60742
The rwhod daemon now has -i and -u options for setting the broadcast interval and the user to run as. 60701
The data files that ruptime, rwho, and rwhod use are now in /var/rwho instead of /usr/spool/rwho, to conform to the Filesystem Hierarchy Standard. 60700
In the chapter Developing C/C++ Programs in the IDE User's Guide, instructions were added to “Creating the equivalent of a make project” that describes how to create a Makefile that can be launched outside the IDE. 60679
The Migrating from Earlier Releases chapter in the IDE User's Guide was updated to include the steps required to upgrade the IDE for this release. 60506
QNX SDP 6.4.0 includes a new On-line Technical Support guide that will help you set up your myQNX account, register your support plans, and help you send files to QNX Technical Support. 60374
We've deprecated crttrap, and it's no longer used by the current architecture. It's been replaced by dispconf and the OS enumerator. 60303
If you're using Instant Device Activation on an ARM platform, your minidriver handler function must be written as Position Independent Code (PIC). This means that when your handler is in the MDRIVER_KERNEL, MDRIVER_PROCESS, or MDRIVER_INTR_ATTACH state, you must not use global or static variables. 60274
The What's New chapter in the IDE User's Guide was updated to include the new features and improvements made to the IDE for this release. 59949
The msync() function sets errno to EINTR if the call is interrupted by a signal. (Ticket ID 84291) 59870
All references to MIPS were removed from the IDE User's Guide. 59845
If the number of elements on the specified message queue is equal to its mq_maxmsg, and O_NONBLOCK wasn't set (in the oflag argument to mq_open()), the call to mq_send() blocks. We've corrected the documentation. (Ticket ID 84498) 59814
The entry for random in the Utilities Reference now describes /dev/urandom in addition to /dev/random. This server sends any error messages to slogger, not to stderr. 59021
We've updated the description of the default thread attributes in the entry for pthread_attr_init() in the Neutrino Library Reference. 58991
We've corrected the synopsis for img_load_resize_file() in the Advanced Graphics Developer's Guide. 58926
The section on time zones in the Neutrino User's Guide now reflects the changes to North American time zones that went into effect March 1, 2007. Note that the libraries interpret short specifications of a time zone (e.g. EST5EDT) according to the new rules. 58906
We've corrected the prototype for end_of_draw() in the entry for disp_draw_miscfuncs_t in the Graphics DDK documentation. 58763
We've removed references to Pg_IMAGE_DIRECT_555 from the documentation. It's identical programatically to Pg_IMAGE_DIRECT_1555, but ensure the alpha bit is set accordingly if you're modifying offscreen memory directly. 58719
The wcstol(), wcstoll(), wcstoul(), and wcstoull() functions are declared in <wchar.h>, not <stdlib.h>. 58697
If you destroy a mutex by calling pthread_mutex_destroy(), don't reuse it without reinitializing it first by calling pthread_mutex_init(). 58491
We've removed the lists of entries arranged by category from the Neutrino Library Reference and Utilities Reference. For information about the types of entries, see the index in each book. 58365
The jtag_reserve_memory() function in the startup library clears the memory only if the resmem_flag argument is zero. We've corrected the description in Building Embedded Systems. 58131
We've updated the platform-specific limits for SH and ARMv6 in the Understanding System Limits chapter of the Neutrino User's Guide. 58102
We've corrected the example in the entry for PtFileSel in the Widget Reference. 57928
In the Building OS and Flash Images chapter in the IDE User's Guide, a workaround was added in “Creating a project for an OS image” to describe how to create an EFS project, because the QNX System Builder EFS Project is no longer available in the Import wizard. 57853
The chapter Managing Source Code in the IDE User's Guide contains information about the included support for Subversion (the SVN Team Provider and Subversive SVN connectors). For information about using SVN, see “SVN and the IDE.” 57519
We've removed references to the deprecated flashcmp utility from the documentation, and we updated the “Building a flash filesystem image” section of the Making an OS Image chapter of Building Embedded Systems. 57499
The kernel keeps an array of the running threads (one per processor); the running thread isn't at the front of the Ready queue. We've corrected the System Architecture guide and the Neutrino Programmer's Guide. 57392
The start, requires, and driver clauses in the scripting language for enum-devices now support a /wait option that makes the enumerator pause until the command associated with the clause terminates. 57346
The chapter Using Code Coverage in the IDE User's Guide contains various updates for the new features and improvements made to the IDE for this release. For a list of these enhancements, see the What's New chapter. 57345
Throughout the IDE User's Guide, many updates were made to include changes based on the integration with the Eclipse 3.3 Platform, and the integration with CDT 4.0. For a list of changes, see the http://www.eclipse.org website. 57342
We've corrected the descriptions of the bwidth and ileave values for the -s option for the flash filesystem (devf-*) drivers in the Utilities Reference. These values must be powers of 2, but you don't specify them as powers of 2. For example, if the width of the data bus is 8, specify a bwidth of 8, not 3 (for 23). 57300
We've corrected the information about the alignment of struct stat structures in the data returned by a resource manager. See the “Returning directory entries from _IO_READ” section in the Writing a Resource Manager chapter of the Neutrino Programmer's Guide. 57274
It's safe to call snprintf(), sprintf(), sscanf(), swprintf(), and swscanf() from a signal handler if you aren't printing or scanning floating-point data. 57261
We've added the -o option to the entry for traceprinter in the Utilities Reference. You can use this option to send the output to a file. 57173
Neutrino supports two new filesystem utilities: chattr for changing filesystem attributes, and fsysinfo for displaying filesystem statistics. 57169
We've updated the sections on limits for the CD-ROM and DOS filesystems in the Neutrino User's Guide. 56945
We've corrected the note about valid dates in the System Architecture guide. Valid dates on a QNX Neutrino system range from January 1970 to at least 2038. The time_t data type is an unsigned 32-bit number, which extends this range for many applications through 2106. The kernel itself uses unsigned 64-bit numbers to count the nanoseconds since January 1970, and so can handle dates through 2554. 56749
The System Architecture guide and the Neutrino Programmer's Guide now describe the automatic unmasking and masking of interrupts as handlers are attached and detached. 56704
The resmgr_handle_tune() and resmgr_iofuncs() functions are declared in <sys/resmgr.h>; we've corrected the documentation. 56558
It is safe to call ClockCycles() from an interrupt handler. 56293
We've corrected an example of using message queues with Photon so that it correctly uses mq_notify(). (Ticket ID 82904) 56130
The Utilities Reference now includes an entry for devn-micrel8841.so. 56090
If you specify the -V option, the devf-* drivers display the filesystem and MTD version information, and then exit. 55958
In the Debugging in the IDE chapter in the IDE User's Guide, documentation was added for the Debugger tab to describe the new option Use full path to set breakpoints that lets you set breakpoints for files with the same name in the project, but their paths are different, and you want to ensure that the breakpoints are set for the appropriate file. (Ticket ID 82239) 55779
The example in the documentation for socketpair() now points out that if you write to fd[0], you read from fd[1], and vice versa. 55765
The table of UNIX commands and their Neutrino equivalents in the Neutrino User's Guide now includes the Linux dmesg command and its equivalent, slogger. 55503
It does matter whether or not the name of a typed memory object starts with a slash. We've corrected the documentation for posix_typed_mem_open(). 55385
The documentation for chkfsys no longer says that the utility prevents itself from operating when files are open for writing on the drive. 55247
We've updated the default linker specification in the documentation for mkifs. (Ticket ID 82413) 55150
The bind() function sets errno to ENOTSOCK if the given file descriptor isn't for a socket. 55103
The handler function that you attach using ado_attach_interrupt() runs in user space, not in the kernel space. 54999
We've corrected the list of where dlopen() looks for shared objects. 54951
We've added more details to the documentation for pidin about the information that the fds argument gives. 54781
The len argument to PgDrawTextArea() specifies the number of bytes required to store the string. 54218
We've added entries for devh-egalax.so and devh-touchintl.so to the Utilities Reference. 53593
Resource managers use the _IO_FLAG_* bits internally to indicate permissions; we've updated the documentation. 53463
The Message Passing chapter of Getting Started with QNX Neutrino no longer says that priority inheritance happens only one level deep. 53452
We've corrected the description of the SPAWN_CHECK_SCRIPT flag in the inheritance structure in the documentation for spawn(). 53327
The chapter Debugging in the IDE in the IDE User's Guide contains updated information about the new features in this release. For a list of these changes, see the What's New chapter. 53306
The Debugging in the IDE chapter in the IDE User's Guide contains information about how to use the Abatron BDI2000 JTAG Debugger, the Lauterbach Trace32 In-Circuit, and the Macraigor Usb2Demon Debugger with a QNX Neutrino kernel image. For more information, see “Using JTAG debugging.” 53277
The chapter Profiling an Application in the IDE User's Guide contains detailed information about the many new feature updates made to the Application Profiler tool. For a list of these features, see the What's New chapter. 53262
The chapter Finding Memory Errors in the IDE User's Guide contains information about how to export trace data session information in either CSV or XML format, and how to import memory analysis sessions from a trace file or XML format. 53241
The Debugging in the IDE chapter in the IDE User's Guide contains information about how to use various JTAG debuggers to write a QNX Neutrino image directly into RAM. 53222
The Utilities Reference now includes an entry for devn-rtl8169.so. 52783
We've updated the phs-to-pcl filter to be based on HP's Appliance Printing Development Kit (APDK), a library that generates PCL output for a wide range of HP printers. 52595
ConnectAttach() can give an error of ENXIO; we've updated the documentation. 52523
We've corrected the example in the documentation for pthread_cond_timedwait() so that it will work for timeouts of less than one second. 52174
The System Architecture guide, the Neutrino User's Guide, and the Utilities Reference now describe the Power-Safe filesystem, fs-qnx6.so. 52024
We've corrected the list of options in the entry for calib in the Utilities Reference. 51964
The accept() function gives an error of EINVAL if you called it on a socket that you hadn't called listen() on. 51915
The mem_offset() function gives an error of EOVERFLOW (not E2BIG) if the address is too large for the 32-bit off_t. 51779
The ntpd daemon adjusts the operating system's time, but doesn't set the hardware clock; you can use rtc to do this. 51161
The timeout value starts timing out when you call TimerTimeout(), not when the blocking state is entered. It might be possible to get preempted after calling TimerTimeout() but before the blocking kernel call. We've mentioned this in the documentation. 50428
We now support a read-only Universal Disk Format filesystem, via fs-udf.so. 50246
We've corrected the description of CLOCK_SOFTTIME in the entry for timer_create() in the Neutrino Library Reference. 50115
We've updated the entries in the Neutrino Library Reference for _RESMGR_NPARTS() and _RESMGR_PTR() to clarify that these macros return the negative of the number of parts (to distinguish the number of parts from error codes that the resource manager's handler functions might return. A return of -1 from iofunc_notify() thus indicates success. (Ticket ID 79542) 50026
The I2C framework currently implements only a single-threaded resource manager; we've corrected the I2C (Inter-Integrated Circuit) Framework technote. 49900
The phshutdown utility has a new -u option for “unattended” shutdown. This initiates system shut down without displaying the shut down type dialog. 48161
Our documentation for pppd now links to the NetBSD documentation, which includes the exit codes for the daemon. (Ticket IDs 78436, 83868) 47882
In the chapter Finding Memory Errors in the IDE User's Guide, a note was added to “Analyzing a running program” to describe that if a program uses fork, the control thread of the Memory Analysis tool must be disabled because attaching the Memory Analysis tool creates a second thread, and fork only works with single-threaded programs. In addition, steps were added to show how to disable the control thread option for memory analysis. 47858
Qnet doesn't support the combination of bind=ip and resolve=file. (Ticket ID 77285) 47612
We've documented the retries, timeout, and verbose options for cam-cdrom.so, cam-disk.so, and cam-optical.so. 46821
The Help icon for the Introduction step in the “Neutrino Inter Process Communication” cheat sheet now correctly links to the help topic about “Inter Process Communication.” 46147
The chapter on Qnet in the System Architecture guide now describes how you can use the tx_retries option to control how long it takes Qnet to decide that a link is down. 46000
We're now using the NetBSD 3.0 version of tftpd, so we've updated its entry in the Utilities Reference. 45378
The description of disp_mode_info_t in the Graphics DDK documentation now describes the max_virtual_height and max_virtual_width fields. 42401
The entry for devi-hid in the Utilities Reference no longer refers to calib; you need a calibration file only for touchscreens. 42252
We've corrected the description of the abort() function in the Neutrino Library Reference. 41794
We've corrected the description of the %a and %A formatting codes for the -fprintf and -printf arguments to the find command. 41544
The socket() function sets errno to EAFNOSUPPORT if the specified address family isn't supported. 41440
We've corrected the information about returning struct stat structures from a resource manager. See the “Returning directory entries from _IO_READ” section in the Writing a Resource Manager chapter of the Neutrino Programmer's Guide. 41335
The Interprocess Communication chapter of the System Architecture guide now includes a section on typed memory. 41310
The qconfig utility doesn't list the packages in any particular order. 40881
The documentation now mentions that if you use slay to change the runmask for a process, the processor for blocked threads doesn't change until the threads become unblocked (or never if the threads remain blocked). 40730
The documentation for InterruptAttach() no longer implies that Neutrino supports paging. 40135
The entry for malloc() in the Neutrino Library Reference now describes the environment variables that you can use to control memory allocation. You can also set these variables with mallopt(). 39608
We've corrected the descriptions in the Neutrino Library Reference of what iofunc_fdinfo_default(), iofunc_lseek(), and iofunc_lseek_default() return. 39595
The Writing an Interrupt Handler chapter of the Neutrino Programmer's Guide now has a section on the potential problems of using shared interrupts. 39363
The entry for mkifs in the Utilities Reference now includes the -s option, which you can use to specify which sections of an ELF binary not to strip. 39285
We've now documented the asynchronous I/O (aio_*) functions. 39104
Asynchronous I/O (aio_*()) works across Qnet, but asynchronous messaging (asyncmsg_*()) doesn't. 39103
If you ask pidin to display thread names, and a thread doesn't have a name, pidin displays the thread's ID instead. 39027
You don't have to be root in order to set or get a thread name. We've corrected the documentation for pthread_getname_np() and pthread_setname_np(). 39026
The entry for mount in the Utilities Reference now describes the -a option, which you can use to mount all the devices listed in /etc/fstab. 38763
We've corrected the description of the MS_CACHE_ONLY flag (a QNX Neutrino extension) in the entry for msync() in the Neutrino Library Reference. 38584
We've updated the section on multimedia in the System Architecture guide to describe what's in the QNX Aviage Multimedia Suite. 38498
The Writing Shell Scripts chapter of the Neutrino User's Guide now has a section on the handling of the #! line of a script. 38464
For portability, use pthread_sigprocmask() instead of sigprocmask() in multithreaded processes. 38215
We've expanded the entries for posix_typed_mem_get_info() and posix_typed_mem_open() in the Neutrino Library Reference. 38122
We've corrected the description of the contig_len argument in the entry for posix_mem_offset() in the Neutrino Library Reference. 38121
We've updated the sample programs in the Audio Developer's Guide. 29922
We've corrected the example in the documentation for mq_timedreceive(). 29795
The documentation for ham_action_control() now says that when an action item is enabled (the default), it's executed when the condition associated with it is triggered. 29791
The entry for SchedCtl() and SchedCtl_r() in the Neutrino Library Reference now mentions that the SCHED_APS_JOIN_PARTITION command indicates an error of EINVAL if the partition with the given ID doesn't exist. 29298
The depth member of the AOAudioFormat_t structure is in bytes, not bits. 28572
The entry for devc-sersci in the Utilities Reference now lists the FIFO and RTS trigger values for the SH7760, 7770, and 7780. 27945
The documentation for flashctl now describes the filesystem information that it displays if you specify the -i option. 27875
The documentation for phrelay now mentions the /etc/system/config/noditto file. If this files exists, then users aren't allowed to ditto existing Photon sessions. 27146
If io-pkt runs out of threads, it sends a message to slogger, and anything that requires a thread blocks until one becomes available. 26568
We've updated the usage message and documentation for tracelogger to reflect the current options. (Ticket ID 73381) 26514
In PhAB, you can now hold down Shift and drag a widget by its resize handle. 26437
If an Ethernet packet is shorter than ETHERMIN bytes, padding can be added to the packet to reach the required minimum length. In the interests of performance, the driver software doesn't automatically pad the packets, but leaves it to the hardware to do so if supported. If hardware pads the packets, the contents of the padding depend on the hardware implementation. We've mentioned this in the Core Networking User's Guide. (Ticket ID 66506) 25338
The entry for _amblksize in the Neutrino Library Reference now describes how and when you can change the value of this variable. 25273
The entry for tinit in the Utilities Reference now describes how the utility parses its configuration file. 24931
If name_attach() creates a channel, the channel will have the _NTO_CHF_DISCONNECT, _NTO_CHF_COID_DISCONNECT, and _NTO_CHF_UNBLOCK flags set. 24908
There are now entries for ham and hamctrl in the Utilities Reference. 24739
The df utility rounds its figures into 512- or 1024-byte blocks (depending on the options), and it always rounds down. If the filesystem doesn't use a block size that's a multiple of 512 bytes, some rounding errors will occur. We've noted this in the entry for df in the Utilities Reference. 23715
PtWebClient now supports three new Pt_ARG_WEB_OPTION options to control how Javascript displays dialogs: "fDisableJavascriptAlert", "fDisableJavascriptConfirm" and "fDisableJavascriptPrompt". These options are supported in Netfront only. 23297
We've corrected the list of flags that you can specify when you call the experimental asyncmsg_channel_create() function. 23137
We've updated some examples in Building Embedded Systems to use fs-nfs3 instead of fs-nfs2. 22936
Specifying the -as option to procnto on SH platforms is the same as specifying -ad, not -ae. 22858
The documentation for pidin now describes the syspage argument. 22599
We've updated the list of supported adapters in the entry for devb-ncr8 in the Utilities Reference. 22482
We've added some information about enabling and disabling hardware checksumming to the entries for devn* in the Utilities Reference. 22051
If a name server isn't responding, there's a timeout of 1.5 minutes per name server. You can't change this timeout, but many TCP/IP utilities have a -n option that you can use to prevent name lookups. (Ref# 21660; Ticket ID 66749) 21660
A note was added to “Controlling your profiling sessions” in the Profiling an Application chapter in the IDE User's Guide to define the meaning of the term Unknown, and to describe the circumstances when binaries and libraries would appear in the Tree view. 21177
We've added the pauseignore and pausesuppress options to the entry for devn-i82544.so in the Utilities Reference, and updated the default values for the receive and transmit options. 20893
There's now an entry for phrelaycfg in the Utilities Reference. 20709
We've made some minor corrections to the entry for slogger in the Utilities Reference, including the description of /dev/console, what happens when multiple applications open /dev/slog for reading, and the example of alternating between files. 18978
We've corrected the description of _amblksiz in the documentation for malloc(). 18003
The entry for phuser in the Utilities Reference now explains how to choose an icon to represent a user in the login screen. 17889
The thread that receives a sigevent of type SIGEV_SIGNAL_THREAD depends on the functions associated with the sigevent. The documentation now specifies which thread gets the sigevent. 17720
The documentation for the resource database manager (rsrcdbmgr_*) functions now describes the use of names for resources. 16828
The Dynamic Linking chapter of the System Architecture guide now gives the correct order of locations where the runtime linker searches for shared libraries. 16407
The bootfile in a mkifs buildfile typically sets the _CS_PATH configuration string, and might set _CS_LIBPATH. The documentation now states that you can set environment variables, such as PATH and LD_LIBRARY_PATH, in a script file. 16063
We recommend that you use dinit to initialize the filesystem, and dloader to make it bootable. The dinit bootloader options are for backwards compatibility reasons, but aren't generally used anymore. 15828
The entry for pppd in the Utilities Reference now refers you to the NetBSD documentation for most of the information. Our documentation describes the Neutrino-specific options. 15616
The description of the rsrc_request_t structure in the documentation for rsrcdbmgr_attach() now includes the RSRCDBMGR_FLAG_NAME and RSRCDBMGR_FLAG_LIST flags, and the name member. 14438
We've removed the entries for the board-specific devf-* drivers from the Utilities Reference. All the flash filesystem drivers use the same options as devf-generic. 12749
We've added more details about thread priorities and how to change them. See “Scheduling algorithms” in the Programming Overview chapter of the Neutrino Programmer's Guide, as well as the System Architecture guide and the entries for the associated functions in the Neutrino Library Reference. 12218
The PtBarGraph widget is now documented. 10082