Date of this edition: June 26, 2008
 |
Changes to these notes since September 7, 2007 are highlighted below
with this icon:
 |
Target OS: This development suite produces software that's
compatible with targets that are running QNX® Neutrino® 6.3.2.
Host OS: You can install this package on the following host OSs:
- Microsoft Windows Vista, XP SP2, or 2000 SP4
- QNX® Neutrino® 6.3.2
- Linux Red Hat Enterprise Workstation 4 or 5,
Red Hat Fedora Core 6 or 7, Ubuntu 6.0.6 LTS or 7.0.4, or SUSE 10
 |
We no longer support QNX Momentics on the following hosts:
- Windows NT
- Linux Red Hat 8 and 9
- Solaris
QNX Neutrino 6.3 supports only the new flash filesystem
(FFS3). The older flash filesystem (FFS2) has been
discontinued. |
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 notes, go to our website,
www.qnx.com,
log into your myQNX account, and then go to the Download area.
 |
Make sure that Plug and Play OS is disabled in the BIOS before you
run QNX Neutrino self-hosted. |
QNX Momentics 6.3.2 is a roll-up release that incorporates the following:
- QNX Momentics 6.3.0 Service Pack 3
- IDE 4.0.1, including the Eclipse SDK
- QNX Neutrino Core OS 6.3.2
- Adaptive Partitioning TDK
- Critical Process Monitoring TDK
- Extended Networking TDK
- Flash Filesystem & Embedding TDK
- Instant Device Activation TDK
- Multicore TDK
- TCP/IP Daemon Security Patch (Patch ID 42)
- Maintenance Patch for the QNX Momentics Extended Networking TDK 1.0.1 TCP/IP Stack (Patch ID 236)
- libgcc Patch for gcc 2.9.5 on SH (Patch ID 269)
- libc Patch for IDE 4.0 (Patch ID 383)
- qconn Patch for IDE 4.0.1 (Patch ID 486)
- Changes to Daylight Saving Time Patch (Patch ID 518)
- Windows Vista Patch (Patch ID 522)
- IDE 4.0.1 Memory Analysis Target Patch (ID 525)
- JVM Update for QNX® Momentics® Products (Patch ID 585)
- devb-* Patch (Patch ID 703)
- Subversion (SVN) Command-Line Client patch (Patch ID 705)
- FLEXlm Linger Time Patch (Patch ID 715)
- BSP Utilities Patch (Patch ID 725)
- use Patch (Patch ID 728)
- Filesystems Patch (Patch ID 738)
- libgcc Patch for gcc 3.3.5 on SH (Patch ID 745)
- Cygwin Suspend Patch (Patch ID 748)
- Integrated Development Environment (IDE) 4.0.1 — for details
about the new features, see the What's New chapter of the
IDE User's Guide
- GCC 3.3.5 support — enhanced C++
ABI (smaller footprints); improved
code-generation/performance (especially for ARM/XScale);
compatible with third-party offerings (e.g. Intel
icc compiler for x86).
- We've improved the way that you install and boot a self-hosted
QNX Neutrino system.
The improvements include:
- support for USB keyboards and mice (Ref# 23671, 25445, 39555)
- support for SATA disks (Ref# 38956)
- the ability to update the drivers on your system (Ref# 39248)
- the ability to install QNX Neutrino in partitions of type 77, 78,
or 79 (Ref# 39387)
- displaying drive identifiers when you're asked to choose a drive
(Ref# 39187)
- the ability to install QNX Neutrino from a second CD drive (Ref# 18982)
For more information, see the installation note for Neutrino hosts.
- Version coexistence — you can install 6.3 and
still build 6.2.1 target systems. (See the section below.)
- Enhanced IDE:
- v3.2.2 of the Eclipse framework
- v3.1.2 of the Eclipse C/C++ Development Tools (CDT) framework
- Code Coverage plugin
- Enhanced System Profiler plugin (new editor; event statistics views)
- Better integrated System Builder plugin (BSP
integration; Builder projects can be built outside the IDE;
Builder-specific navigator; support for adding directories;
independent EFS generation)
- Numerous other enhancements (improved new-project
wizard; more flexible project layouts; configurable
keyboard shortcuts; improved build control; faster
navigation; easier launch facility; and more).
- BSPs (binaries/bootable images) for several platforms.
 |
For 6.3 and beyond, BSPs are available only from our website. |
- In QNX Momentics 6.3.2, separately packaged technology
development kits (TDKs) augment the base Neutrino OS with
specialized, value-added technologies.
The base QNX Momentics suite includes the operating system
and services required for most embedded systems (e.g.
filesystems, GUI, IP networking technologies). The
value-added TDKs, which are available from the Download area on our
website, help you control costs and achieve overall
lower TCO for QNX Momentics-based systems.
The TDKs currently include:
- Acoustic Processing
- Advanced Graphics
- Multimedia
- Web Browser
For more details, please contact your QNX sales representative.
- USB 2.0 stack (with mass storage class driver)
- Updated TCP/IP stack to NetBSD 1.6 source base
 |
The default TCP/IP stack is version 4.
To use TCP/IP for IPv6 packets, make /lib/dll/npm-tcpip.so a
symbolic link to /lib/dll/npm-tcpip-v6.so.
|
- SCTP protocol support
- Asynchronous messaging (experimental implementation — may change)
- Qnet — new lightweight architecture featuring improved
throughput, better reliability, and support for multiple simultaneous interfaces
over various media.
- Global name service for Qnet
- IPFilter — for NAT and IP filtering (firewall) support
- Multilink PPP
- NTP (Network Time Protocol) client/server
- Process resource limits
- Performance Counter API
- Standardized (unpublished) performance benchmarks and interpretation documents
- Added support for PowerPC Book E Architectures (IBM440 and Freescale PowerQUICC-III)
- Added support for physical addresses above 4 GB on PowerPC, MIPS, and x86.
- New flash filesystem offers improved resistance to power-loss corruption.
- The OS now supports 256 priority levels.
- The io-net, io-char, and io-graphics
I/O subsystems
have been enhanced to support future power-management features.
Applications developed with QNX Momentics 6.3 will continue to work.
The new functionality will be made fully available in a future release of
Power Management.
- mkimage can now parse flash filesystem version 3 images.
(Ref# 20386)
 |
The OS images that we ship start procnto with the -v
option, so that the kernel provides you with more information when a signal
terminates a process. |
- Extensible widget model (greater reuse of implementation
code; widget layout managers; architectural footprint enhancements)
- GB18030-2000 Chinese character encoding
- 3D graphics (accelerated, OpenGL-based).
- New multimedia playback features (player/browser plugin
using new multimedia framework; new readers/playback formats (MIDI; CD audio).
- Various other enhancements (io-graphics
handles commands via config file; multi-headed displays;
most Pg* functions are context-specific;
added security to Photon clipboard [note that clipboard
files are no longer compatible between 6.3 and previous
releases]; clipboard changes cause a new event to be
emitted; ped now supports drag and drop from the
file manager; added support for the SGI image file format; and more).
- The default permissions on
/dev/photon are now 600, but you can
use chmod to change the permissions if you want to let other
people look at your Photon session and inject keys into your
pterms.
 |
The Photon Application Builder (PhAB) is available only for
Windows and QNX Neutrino hosts.
If you're using a Linux host, but you still want
to use PhAB, consider installing a QNX Neutrino host to a
second partition or an x86 simulator (e.g. VMware). |
The QNX Momentics development suite lets you
install and work with multiple versions of Neutrino (from
6.2.1 and later). Whether you're using the command line or
the IDE, you can choose which version of the OS to build
programs for.
 |
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. |
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.
On Windows hosts, you'll find a configuration program
(QWinCfg) for switching between versions of QNX
Momentics.
You launch QWinCfg via the start menu (e.g. ).
For details on using QWinCfg, see its entry in
the Utilities Reference.
If you're using the command-line tools, use the
qconfig utility to configure your machine to use
a specific version of Neutrino:
 |
In the above command, you must use the “back tick” character
(`), not the single quote character
('). |
When you start the IDE, it uses your current
qconfig choice as the default version of the OS;
if you haven't chosen a version, the IDE chooses an entry
from the directory identified by
QNX_CONFIGURATION. If you want to override
the IDE's choice, you can choose the appropriate build
target. (For more information, see the section
“Version coexistence” in the Concepts chapter
of the IDE User's Guide.)
 |
Coexistence of 6.3 and 6.2.1 is supported only on Windows hosts. |
Neutrino uses these environment variables to locate files on
the host machine:
- QNX_HOST
- The location of host-specific files.
- QNX_TARGET
- The location of target-specific files on the host machine.
- QNX_CONFIGURATION
- The location of the qconfig configuration files.
- MAKEFLAGS
- The location of included *.mk files.
The qconfig utility sets these variables
according to the version of QNX Momentics that you
specified.
- gcc
- QNX Momentics 6.3.2 includes both gcc 2.95.3 and 3.3.5.
Note that the newer version contains some alignment changes
and adjustments. For details, see the 6.3 and 6.2.1
Compatibility note posted on our website.
- gcc 2.95.3 is the default compiler version. To get the
default compiler, simply run:
nto$CPU-gcc
or:
qcc -Vgcc_nto$CPU
To get a specific version, run:
nto$CPU-gcc-$version
or:
qcc -V$version,gcc_nto$CPU
Examples:
Command |
Compiler version |
ntoarm-gcc |
2.95.3 |
ntoarm-gcc-2.95.3 |
2.95.3 |
ntoarm-gcc-3.3.5 |
3.3.5 |
qcc -Vgcc_ntomipsle |
2.95.3 |
qcc -V2.95.3,gcc_ntomipsle |
2.95.3 |
qcc -V3.3.5,gcc_ntomipsle |
3.3.5 |
 |
To change the default compiler in the IDE, use the
Compiler Tab in the project Properties dialog. |
- GCC 3.3.5 has deprecated the preprocessor cpp0; this functionality is
now merged in the compiler cc1.
- We've corrected the symbol information for the __movstr()
function in libgcc.a.
The incorrect symbol type for this function caused runtime errors
if you used -Os optimization.
(Ref# 38980, 38981)
- ld
- Our linker used to behave such that any path specified with the
-L option would also be added to the list of
paths to be searched for shared objects.
This behavior is being deprecated; it will be removed in a future release.
The correct method is to use the -rpath-link option.
- ldrel
- If you run ldrel on a binary that contains
segment relocations, the relocations will be stripped.
If you don't want them stripped, specify the -r option.
- make
- If you're using the QNX recursive makefile hierarchy,
make needs to be able to find the makefile
fragments (.mk files) with the rules for
building QNX projects. These are stored in
$QNX_TARGET/usr/include.
The environment variable MAKEFLAGS gives extra command-line
flags to make; by setting it to
-I$QNX_TARGET/usr/include, these .mk files will be found.
 |
Microsoft's nmake also uses
MAKEFLAGS, so if there's a mixed environment,
you can use GNUMAKEFLAGS, which is an
extension to standard make and exists only in the
QNX-supplied version. |
- mkifs
- The -n option forces all modification times
of inline files to be 0. This enables the checksum value to
be repeated on subsequent builds.
- The mkifs utility attempts to shrink the size of executables and
shared objects that it puts in the image filesystem by removing
data that isn't absolutely needed for execution of the program.
You can disable this by using the +raw attribute.
The mkifs utility keeps the following ELF sections
by default, even without the +raw attribute:
- QNX_Phab
- QNX_info
- QNX_usage
You can use the -s command-line option to name
sections that you want mkifs to keep.
 |
If you specify -s, only the sections that you specify are kept.
You need to explicitly specify the above names if you want to keep them as
well. |
- Asynchronous messaging
- Asynchronous messaging is a communication model that relies
on a store-and-forward technique. Compared to regular
reply-based communication in client-server systems, the
messaging infrastructure ensures delivery, even if a
participant is temporarily offline, busy, or unobtainable.
In this technique, the sender doesn't need a response from
the recipient. This provides more flexibility and
scalability as the senders and receivers are decoupled and
are no longer required to execute in lockstep.
 |
Asynchronous messaging is an experimental feature in 6.3; its implementation may change.
For more information, see the Asynchronous Messaging technote
in the online documentation, as well as the asyncmsg_*() entries
in the Neutrino Library Reference. |
- C++
- Some class definitions are stricter in 6.3.
For example, the set class requires unique keys;
you can no longer modify keys that you've already added to the set,
because you could create duplicates.
This change could cause code that compiled on 6.2.1 not to compile on 6.3.
(Ref# 21773)
- dinit
- In 6.3, dinit now creates long filenames by default.
You can disable support for long filenames by specifying the -N
option. (Ref# 17642)
 |
This is the reverse of the behavior of 6.2.1; the -N
option formerly enabled support for long filenames. |
- fcntl()
- We fixed problems with side-channel connections and errno values
reported. (Ref# 16959, 16960)
 |
The OS now prevents _NTO_SIDE_CHANNEL connections from being
duplicated (via dup(), dup2(), or
fcntl(F_DUPFD)). This is to
maintain consistency with the concept of side-channels forming
a separate file-descriptor space that isn't subject to normal
process-inheritance rules.
If you are dup()ing side-channels, then they must
now be attached as normal file descriptors.
Note also that the low-level ConnectAttach()
doesn't allow the specification of a specific side-channel
index, which is required by dup2(). |
- FD_SETSIZE
- The value of FD_SETSIZE has changed from 32
to 256. This affects the size of the fd_set
objects that you pass to select().
This means that by default the highest allowable
fd number for FD_SET(fd, &set)
is 255.
To change the value, #define FD_SETSIZE before including
<sys/select.h>,
but make sure you do this consistently throughout your
modules.
- Instrumented kernel
- The instrumented kernel (procnto-instr) is
the default kernel for QNX Neutrino self-hosted systems.
- LD_LIBRARY_PATH
- For security reasons, the path(s) specified by
LD_LIBRARY_PATH for
setuid/setgid binaries isn't
searched when loading shared objects.
Instead, only the path(s) defined by the
_CS_LIBPATH configuration string are
used. You can examine or modify the value of
_CS_LIBPATH using the getconf and
setconf utilities.
 |
In a buildfile, you can set the initial value of
_CS_LIBPATH via the
LD_LIBRARY_PATH= part of the
“procnto” line. For example:
PATH=/proc/boot:/bin:/usr/bin LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll procnto
|
- libpm and libpmm
- The pm_power_mode_t type has changed from
8-bit to 32-bit. This means that all code that includes
<sys/pm.h> must be recompiled and relinked
against the latest libpm.a and
libpmm.a libraries.
- The prototype for the mode_init() policy
function in libpmm changed from a void
function to a return type of pm_power_mode_t.
This function is now intended to return the initial power
mode that the device should be set to. This will typically
be PM_MODE_ACTIVE.
- POSIX Message Queues
- QNX Momentics 6.3 ships with an optional alternate
implementation of POSIX message queues. This implementation
uses asynchronous messaging
to buffer the messages within the kernel itself, and
eliminates the (context-switching) overheads of using an
external server (mqueue) in each message-queue
operation, thus greatly improving the performance of POSIX
message queues.
For more information, see Managing POSIX Message Queues in the
QNX Neutrino Technotes in the online documentation.
- Priority levels
- The OS now supports 256 priority levels.
Non-root processes can use only priority levels 1
to 63. Only root processes (i.e. those whose effective
uid is 0) are allowed to set priorities above 63.
You can change the allowed priority range for non-root
processes with the procnto -P priority option.
Here's a summary of the ranges:
Priority level |
Owner |
0 |
idle thread |
1 through priority − 1 |
non-root or root |
priority through 255 |
root |
- resmgr_handle_tune()
- This is a new function that you can use to tune some of the
parameters used internally by the resource manager layer
when performing the client fd - ocb
mapping.
For more information, see the Neutrino Library Reference.
- select()
- The select() function used to make use of the
functions _select_event() and
_select_block(). The latter two functions weren't
documented (other than being prototyped in /usr/include/sys/select.h.)
As of 6.3, these two functions are no longer used
internally. However, they've been left in
libc for the time being, but may be removed
altogether in a future release. For reference, here is the
old implementation of select():
/*
Copyright 2001, QNX Software Systems. All Rights Reserved
This source code has been published by QNX Software Systems
(QSS). However, any use, reproduction, modification,
distribution or transfer of this software, or any software
which includes or is based upon any of this code, is only
permitted under the terms of the QNX Realtime Platform End
User License Agreement (see licensing.qnx.com for details)
or as otherwise expressly authorized by a written license
agreement from QSS. For more information, please email
licensing@qnx.com.
*/
#include
#include
#include
#include
#include
#include
#include
/* The routine implements the Unix select call. When
semantics differ the BSD
semantics defined in APUE (pg. 396-400) are followed.
*/
int select(int nfds, fd_set *readfds, fd_set *writefds,
fd_set *exceptfds, struct timeval *tvptr)
{
struct sigevent event;
struct timespec ts;
if(tvptr)
{
if (tvptr->tv_sec < 0 || /* don't bother
checking upper ends, roll over will catch really bad overflows */
tvptr->tv_usec < 0)
return errno= EINVAL, -1;
ts.tv_sec= tvptr->tv_sec ;
ts.tv_nsec= tvptr->tv_usec * 1000L ;
}
event.sigev_notify = SIGEV_SIGNAL_THREAD;
event.sigev_signo = SIGSELECT; /* This signal is
always SIGBLOCKed */
/* event.sigev_value will be modified as needed by
select_sigevent() */
event.sigev_code = SI_NOTIFY;
event.sigev_priority = -1;
return _select_event(nfds, readfds, writefds, exceptfds, tvptr ? &ts : 0, &event, _select_block, 0);
}
- 64-bit “large file” libc/filesystem support
- QNX Neutrino 6.3 implements the X/Open Largefile Support
extensions. For details, see the 6.3 and 6.2.1
Compatibility note posted on our website.
- Startup library
- The startup library supports 64-bit physical addresses
for the MIPS, PPC, and x86 architectures. Two versions of
the libstartup.a are built:
- libstartup.a with paddr_t defined as 32 bits
- libstartup-64.a with paddr_t defined as
64 bits
By default, startup programs will compile
and link with the 32-bit version. If a board needs 64-bit physical
addresses, add the make macro PADDR_SIZE=64 to the board's
pinfo.mk file (see startup/boards/440rb/pinfo.mk for an example).
- System page
- The system page no longer contains the meminfo
section, nor is the
SYSPAGE_ENTRY(system_private)->ramsize field
filled in. This is because they're restricted to 4 GB. Code
referencing those syspage items should be modified to use
the asinfo section (which has been generated since Neutrino
2.0).
- The add_mem() function has been removed from
the startup library.
Here's replacement code for SYSTEM_ENTRY(system_private)->ramsize:
uint64_t
get_total_mem(void) {
char *str = SYSPAGE_ENTRY(strings)->data;
struct asinfo_entry *as = SYSPAGE_ENTRY(asinfo);
uint64_t total = 0;
unsigned num;
for(num = _syspage_ptr->asinfo.entry_size / sizeof(*as); num > 0; --num) {
if(strcmp(&str[as->name], "ram") == 0) {
total += as->end - as->start + 1;
}
++as;
}
return total;
}
For code that scans meminfo, replace the check of
the type field with a strcmp() of the
appropriate asinfo entry name (as above) and scan
asinfo.
- /etc/rc.d/rc.local
- For your convenience, 6.3.2 installs an empty, executable version of
/etc/rc.d/rc.local, with permissions of
of 750 (read, write, execute for the user; read, execute for the group;
no permissions for others).
(Ref# 22665)
- Fast mutex optimization (SH4 and ARM)
- Renesas SH4 and ARM/XScale processors don't include atomic operations
(atomic compare-swap or load-linked/store conditional), so
these instructions are emulated on these platforms.
As these instructions are used for mutexes, the cost of this emulation
is significant.
6.3.2 includes a new scheme that instead includes a specific code sequence
that, when coupled with updates to the kernel, allows the implementation
of mutexes using normal (nonemulated) assembly sequences.
This provides a significant performance improvement for uncontested mutexes.
- Threads
- Threads now have names, which can make debugging easier.
(Ref# 27085)
The following commands now support thread names:
- pidin now displays the thread names
- dumper maintains the thread-name information in core files
- the IDE System Information view now shows the thread names
- the IDE Debugger now reads the thread names
The QNX Neutrino Core OS 6.3.2 includes a completely rearchitected
virtual memory (VM) manager.
This provides significant benefits and functionalities, as follows:
- consistent POSIX mmap() behavior across all supported architectures
- partial munmap() is now supported on all processor families
- POSIX memory-mapped files are now supported
- POSIX memory locking is supported
- POSIX typed memory is supported
Here are more details:
- System headers
- We've changed the following header files to make them more
POSIX_compliant:
- <limits.h> (Ref# 26160)
- <setjmp.h> (Ref# 26162)
- <stdlib.h> (Ref# 26163)
- <stdint.h> (Ref# 26166)
- <confname.h> (Ref# 26167)
- <wordexp.h> (Ref# 26171)
- <sys/platform.h>
- We've removed the obsolete XBS_ILP32_* symbols and
replaced them with the _XBS5_ILP32_* equivalents.
If you use the old definitions, you should update your code.
(Ref# 26159)
- fork()
- Physically contiguous areas are now preserved across a
fork().
If one process
does a mmap() with MAP_ANON|MAP_PHYS to obtain a
physically contiguous memory (drivers and the like), and
then forks, the child process now enforces contiguous
areas when copying the parent's mappings.
(Ref# 17531)
- If you do a mmap() with
MAP_ANON|MAP_SHARED with permissions of
PROT_NONE, and use mprotect() to change
a single page to PROT_READ|PROT_WRITE, and then
fork(), the permissions of the MAP_ANON|MAP_SHARED
mapping are now correctly set per-page.
(Ref# 24585)
- iofunc_funcs_t
- The iofunc_funcs_t structure is now larger, and
the _IOFUNC_NFUNCS count has increased.
If you use memset() to initialize this structure, the change
in size won't affect your resource managers.
If your resource managers use this callout table to install their own
OCB allocation routines, and you didn't use memset(),
recompiling your resource managers will cause the new callouts (for
OCB locking) to be used.
The libc library is backwards-compatible in that
resource managers that haven't been recompiled won't attempt to use the
new callouts, and a NULL callout means to use the
default/old behavior.
- pthread_getname_np(), pthread_setname_np()
- You can use these functions to get and set the name of the threads in
your applications.
- remove()
- If path names a directory, remove(path)
is now equivalent to rmdir(path) instead of
unlink(path), due to a change in POSIX.
(Ref# 19534, 28319)
- sigevent
- Future versions of the library might use hidden bits in the
sigev_notify member of the sigevent structure.
To avoid problems in the future, don't compare this member directly to
a constant; use the new SIGEV_GET_TYPE() macro.
For example, instead of:
if( my_event.sigev_notify == SIGEV_PULSE)
use:
if( SIGEV_GET_TYPE(&my_event) == SIGEV_PULSE)
- siginfo_t
- The siginfo_t structure now has a new field,
si_bdslot.
When a signal is caused by a program exception (SIGSEGV,
SIGILL, etc.), the field is nonzero if the faulting
instruction is in a branch delay slot on architectures with them
(MIPS, SH).
 |
- This is currently implemented only for MIPS.
- Earlier versions of procnto left this field as a random value,
so code should check the procnto version number before examining
the field.
|
- on
- This utility now supports these new options (Ref# 13645):
- -R runmask — set the CPU affinity to
runmask.
You can use this option multiple times to specify masks that are
more than 32 bits long.
- -C cpunum — set the CPU Affinity to
cpunum, where the first CPU is 0.
You can use this option multiple times.
If you use both the -C and -R options or multiple
instances of them, the resultant mask is the bitwise
ORing of all -C and -R options.
(Ref# 28501)
- pidin
- This utility now supports these new formatting codes:
- H — display scheduling-specific information for
each thread
- h — display the thread name
- i — display the runmask
- l (“el”) — show the last CPU a thread
ran on
and these new arguments:
- sched — display useful scheduling parameters for each
thread
- extsched — display details of the active extended
scheduler configuration
- fds — show information about the process's file
descriptors
- rmasks — display the process's runmask.
(Ref# 27982, 28098)
- slay
-
- tracelogger
- If you specify a duration for the log (with the -s option),
then the number of iterations logged is once again unlimited instead of
being set to 32.
(Ref# 26823)
- use
- This utility has a new -s option that you can use to
display the version numbers of the source used in the executable.
(Ref# 47698, 48222, 47907)
- deva-ctrl-sblive.so is no longer supported.
New drivers:
- devb-umass (USB mass storage):
- A reduced SCSI command set model was implemented.
This increases interoperability with nonstandard devices that don't
function properly when encountering SCSI commands that they don't support.
- The SCSI_INQUIRY command now requests only 36 bytes.
Some devices fail when asked for the full 96 bytes.
(Ref# 22105)
- devb-umass now works correctly with devices (such as
the San Disk Cruzer Mini) that return invalid data for CSW.
You can now specify the csw_ignore option on the command line.
(Ref# 22104)
- devb-umass now correctly detects a Y-E Data floppy drive.
(Ref# 29552)
- If a driver attempts to attach to a device that's already controlled by
another driver (i.e. usbd_attach() returns EBUSY),
io-usb no longer aborts the endpoints for that device after the
attach fails.
This problem caused other drivers to fail when the URBs were aborted for
no reason.
(Ref# 29562)
- devb-umass now handles devices that return invalid sense data
(NO_MEDIA).
(Ref# 29600)
- devb-adpu320 (SCSI driver for Adaptec Ultra320 adapters).
Fixed issues:
- devb-mvSata
- This driver now correctly initializes the mvSata card with
a PCI device ID of 0x6081.
(Ref# 48942)
- devb-eide and devb-ahci
- These drivers now support:
- AMD/ATI SB600
(Ref# 48366)
- JMicron/Intel ESB controllers
(Ref# 47332)
- ATA pass-through interface
(Ref# 47145)
The devb-eide driver supports the following chipsets:
Manufacturer
|
Chip
|
Vendor Id
|
Device Id
|
Revision
|
Xfer Mode |
Intel
|
82371FB
|
0x8086
|
0x1230
|
|
BIOS |
Intel
|
82371SB
|
0x8086
|
0x7010
|
|
MDMA 2 |
Intel
|
82371AB
|
0x8086
|
0x7111
|
|
UDMA 2 |
Intel
|
82443MX
|
0x8086
|
0x7199
|
|
UDMA 2 |
Intel
|
82801AA
|
0x8086
|
0x2411
|
|
UDMA 4 |
Intel
|
82801AB
|
0x8086
|
0x2421
|
|
UDMA 4 |
Intel
|
82801BAM
|
0x8086
|
0x244A
|
|
UDMA 5 |
Intel
|
82801BA
|
0x8086
|
0x244B
|
|
UDMA 5 |
Intel
|
82801CA
|
0x8086
|
0x248B
|
|
UDMA 5 |
Intel
|
82801CAM
|
0x8086
|
0x248A
|
|
UDMA 5 |
Intel
|
82801DB
|
0x8086
|
0x24CB
|
|
UDMA 5 |
Intel
|
82801DBM
|
0x8086
|
0x24CA
|
|
UDMA 5 |
Intel
|
82801DB
|
0x8086
|
0x24CB
|
|
UDMA 5 |
Intel
|
82801EB
|
0x8086
|
0x24DB
|
|
UDMA 5 |
Intel
|
82801ESB
|
0x8086
|
0x25A2
|
|
UDMA 5 |
Intel
|
82801FB
|
0x8086
|
0x266F
|
|
UDMA 5 |
Intel
|
82801EB
|
0x8086
|
0x24D1
|
|
SATA |
Intel
|
82801ER
|
0x8086
|
0x24DF
|
|
SATA |
Intel
|
82801FB
|
0x8086
|
0x2651
|
|
SATA |
Intel
|
82801FR
|
0x8086
|
0x2652
|
|
SATA |
Intel
|
82801FBM
|
0x8086
|
0x2653
|
|
SATA |
Intel
|
82801ESB
|
0x8086
|
0x25a2
|
|
UDMA 5 |
Intel
|
82801ESB
|
0x8086
|
0x25a3
|
|
SATA |
Intel
|
82801GB
|
0x8086
|
0x27df
|
|
UDMA 5 |
Intel
|
82801GB
|
0x8086
|
0x27c0
|
|
SATA |
Intel
|
82801GB
|
0x8086
|
0x27c4
|
|
SATA
|
Promise
|
PDC-20262
|
0x105a
|
0x4d38
|
|
UDMA 4 |
Promise
|
PDC-20267
|
0x105a
|
0x4d30
|
|
UDMA 4 |
Promise
|
PDC-20265
|
0x105a
|
0x0d30
|
|
UDMA 5 |
Promise
|
PDC-20269
|
0x105a
|
0x4d69
|
|
UDMA 5 |
ServerWorks
|
OSB4
|
0x1166
|
0x0211
|
|
UDMA 2 |
ServerWorks
|
CSB5
|
0x1166
|
0x0212
|
|
UDMA 4 (untested) |
ServerWorks
|
CSB5
|
0x1166
|
0x0212
|
0x92+
|
UDMA 5 |
HighPoint Tech
|
HPT-366
|
0x1103
|
0x0004
|
0x01
|
UDMA 4 (untested) |
HighPoint Tech
|
HPT-370
|
0x1103
|
0x0004
|
0x03+
|
UDMA 5 |
HighPoint Tech
|
HPT-372
|
0x1103
|
0x0005
|
|
UDMA 6 |
HighPoint Tech
|
HPT-374
|
0x1103
|
0x0008
|
|
UDMA 6 |
AMD
|
PCB-756
|
0x1022
|
0x7409
|
|
UDMA 4 (untested) |
AMD
|
PCB-766
|
0x1022
|
0x7411
|
|
UDMA 5 (untested) |
AMD
|
PCB-768
|
0x1022
|
0x7441
|
|
UDMA 5 |
nVidia
|
|
0x01bc
|
0x10de
|
|
UDMA 5 (untested) |
ACER Labs
|
M5229
|
0x10b9
|
0x5229
|
0x19-0xc1
|
UDMA 2 |
ACER Labs
|
M5229
|
0x10b9
|
0x5229
|
0xc2-0xc3
|
UDMA 4 |
ACER Labs
|
M5229
|
0x10b9
|
0x5229
|
0xc4
|
UDMA 5 |
ACER Labs
|
M5287
|
0x10b9
|
0x5287
|
|
SATA |
ACER Labs
|
M5289
|
0x10b9
|
0x5289
|
|
SATA
|
ATI
|
(IXP-150/200/250)
|
0x1002
|
0x4349
|
|
UDMA 5
|
SiS
|
SiS-5513
|
0x1039
|
0x5513
|
0xd0
|
UDMA 2/4 |
SiS
|
SiS-5517
|
0x1039
|
0x5517
|
|
UDMA 6 |
SiS
|
SiS-5518
|
0x1039
|
0x5518
|
|
UDMA 6 |
SiS
|
SiS-180
|
0x1039
|
0x0180
|
|
SATA |
SiS
|
SiS-181
|
0x1039
|
0x0181
|
|
SATA |
VIA Tech
|
82C586B
|
0x1106
|
0x0571
|
82686B PCI-ISA bridge 0x40+
|
UDMA 5 |
VIA Tech
|
82C586B
|
0x1106
|
0x0571
|
8231 bridge
|
UDMA 5 (untested) |
VIA Tech
|
82C586B
|
0x1106
|
0x0571
|
8233 bridge
|
UDMA 5 (untested) |
VIA Tech
|
82C586B
|
0x1106
|
0x0571
|
8233C bridge
|
UDMA 5 (untested) |
VIA Tech
|
82C586B
|
0x1106
|
0x0571
|
8233A bridge
|
UDMA 6 |
VIA Tech
|
82C586B
|
0x1106
|
0x0571
|
8235A bridge
|
UDMA 6 (untested) |
VIA Tech
|
82C586B
|
0x1106
|
0x0571
|
8237 bridge
|
UDMA 6 (untested) |
VIA Tech
|
8237
|
0x1106
|
0x3149
|
|
SATA |
VIA Tech
|
82C586B
|
0x1106
|
0x0571
|
0x6+
|
UDMA 2 |
Winbond
|
W83C553F
|
0x10ad
|
0x0105
|
|
MDMA 2 |
PCMCIA
|
Any
|
—
|
—
|
—
|
PIO 0 |
PCI IDE
|
Any
|
—
|
—
|
|
BIOS |
The devb-eide driver now:
- scans for slave devices on Intel SATA controllers
(Ref# 40474)
- supports UDMA modes on VT8251
(Ref# 41450)
- supports UDMA modes on AMD Geode LX800 (AMD CS5536)
(Ref# 41463)
- works on the Dell Dimension 3100 (ATA mode only, not RAID)
(Ref# 41505)
The devb-ahci driver supports the Intel AHCI SATA controller
with the following device IDs:
- ICH-6 82801FB_SATA 0x2651
- ICH-6 82801FBM_SATA 0x2653
- ICH-7 82801GB_SATA 0x27c1
- ICH-7 82801GBM_SATA 0x27c5
 |
You need to enable AHCI mode in the BIOS. |
This driver now correctly detects the hard drive on the IBM ThinkPad T60.
(Ref# 40126)
The devb-mvSata driver supports
Vendor ID 0x11ab with the following device IDs:
Device ID
|
Chipset |
5080
|
88SX5080 |
5081
|
88SX5081 |
5040
|
88SX5040 |
5041
|
88SX5041 |
Driver |
Controller |
Target CPU |
devg-chips.so (replaces
devg-chip_hiqv.so) |
Chips & Technologies 65550 and greater |
MIPSLE, PPCBE, SHLE, x86 |
devg-coral.so |
Fujitsu Coral B & Coral P |
ARMLE, PPCBE, SHLE, x86 |
devg-i830.so |
Intel 82830, 82845, 82855, 82865, 82915G, 82915GM, 82945G, and 82945GM |
x86 |
devg-orchid.so |
Fujitsu Orchid |
PPCBE, SHLE, x86 |
devg-radeon.so
|
ATI Radeon 9200, 9600, 9800, Mobility M9, X300, X600
|
PPCBE, x86 (see below) |
devg-ravin.so |
NEC RavinE |
MIPSLE, PPCBE, x86 |
devg-sis630.so |
SiS 300 & 630 |
x86 |
devg-smi7xx.so |
Silicon Motion 712, 722 & 731 |
ARMLE, MIPSLE, PPCBE, SHLE, x86 |
devg-smi5xx.so |
Silicon Motion 501 |
ARMLE, MIPSLE, PPCBE, SHLE, x86 |
devg-tvia.so (replaces devg-igs5300.so) |
TVIA 52xx and 53xx |
MIPSLE, SHLE, x86 |
Other changes include:
- devg-radeon.so
- The x86 version of this driver initializes secondary cards for multicard
displays.
- The devg-radeon.so driver now supports the
Radeon M22 (Mobility X300).
(Ref# 39723)
- Polygon acceleration
- We added polygon acceleration support for some chipsets
(e.g. Fujitsu Coral, Orchid).
- $QNX_TARGET/etc/system/enum/devices/graphics
- We updated the enumerator to detect the supported chipsets.
- devn-dm9102.so — for Davicom DM9102 controller.
- New MDI/PHY routines for Network drivers.
Many drivers now have a probe_phy option that
lets you select whether or not the PHY is probed at regular
intervals to see if the duplex setting and/or the speed on the connection
has changed (e.g. the cable has been unplugged and plugged into a different
hub or switch.
For more information, see the devn-* entries in the
Utilities Reference.
6.3.2 also addresses the following issues:
- devn-asix.so
- This is a new driver for SMC2209 USB/Ethernet adaptors.
CPU targets provided: x86, ARMLE, MIPSLE, MIPSBE, PPCBE, SHLE
Location:
$QNX_TARGET/x86/lib/dll/devn-asix.so,
$QNX_TARGET/armle/lib/dll/devn-asix.so,
$QNX_TARGET/mipsle/lib/dll/devn-asix.so,
$QNX_TARGET/mipsbe/lib/dll/devn-asix.so,
$QNX_TARGET/ppcbe/lib/dll/devn-asix.so,
$QNX_TARGET/shle/lib/dll/devn-asix.so
Supported device IDs / chipsets:
- device 0x1a00 # Dlink DUBE100
- device 0x1720 # SMC 2209
- devn-bcm43xx.so
- We've updated this driver (for Broadcom BCM43xx Wireless Ethernet
controllers) to add support for WPA and WPA2.
CPU targets provided: x86, PPCBE, SHLE
Location:
$QNX_TARGET/x86/lib/dll/devn-bcm43xx.so,
$QNX_TARGET/ppcbe/lib/dll/devn-bcm43xx.so,
$QNX_TARGET/shle/lib/dll/devn-bcm43xx.so
Supported device IDs / chipsets:
- device 4301 # BCM4301_D11B
- device 4307 # BCM4307_D11B
- device 4320 # BCM4306_D11G
- device 4325 # BCM4306_D11G
- device 4303 # BCM4303_D11B
- device 4321 # BCM4306_D11A
- device 4324 # BCM4306_D11 DUAL
- device 4318 # BCM4318_D11G
- device 4319 # BCM4318_D11 DUAL
- device 431a # BCM4318_D11A
- device 4311 # BCM4311_D11G
- device 4312 # BCM4311_D11 DUAL
- device 4313 # BCM4311_D11A
- devn-hermes2.so
- This is a new driver for Agere Wireless Ethernet controllers.
CPU targets provided: x86
Location:
$QNX_TARGET/x86/lib/dll/devn-hermes2.so
Supported device IDs / chipsets:
PCMCIA manufacturer ID 156 device 3 # PCMCIA Hermes2 - Proxim Orinoco 802.11b
- devn-i82544.so
- We've updated this driver (for Intel 82544 Ethernet LAN adapters)
with support for new chipsets.
CPU targets provided: x86, PPCBE
Location:
$QNX_TARGET/x86/lib/dll/devn-i82544.so,
$QNX_TARGET/ppcbe/lib/dll/devn-i82544.so
Supported device IDs / chipsets:
- device 1008 # Intel 82544EI Gigabit
- device 1009 # Intel 82544EI Gigabit
- device 100c # Intel 82544GC Gigabit
- device 100d # Intel 82544GC Gigabit
- device 100e # Intel 82540EM Gigabit
- device 100f # Intel 82545EM Gigabit
- device 1010 # Intel 82546EB Gigabit
- device 1011 # Intel 82545EM Gigabit
- device 1012 # Intel 82546EB Gigabit
- device 1013 # Intel 82541EI Gigabit
- device 1015 # Intel 82540EM Gigabit
- device 1016 # Intel 82540EP Gigabit
- device 1017 # Intel 82540EP Gigabit
- device 1018 # Intel 82541EI Gigabit
- device 1019 # Intel 82541EI Gigabit
- device 101d # Intel 82546EB Gigabit
- device 101e # Intel 82540EP Gigabit
- device 1026 # Intel 82545GM Gigabit
- device 1027 # Intel 82545GM Gigabit
- device 1028 # Intel 82545GM Gigabit
- device 1075 # Intel 82541GI Gigabit
- device 1076 # Intel 82541GI Gigabit
- device 1077 # Intel 82541GI Gigabit
- device 1078 # Intel 82541ER Gigabit
- device 1079 # Intel 82546GB Gigabit
- device 107a # Intel 82546GB Gigabit
- device 107b # Intel 82546GB Gigabit
- device 107c # Intel 82541PI Gigabit
- device 108a # Intel 82546EB Gigabit
- device 108b # Intel 82573V Gigabit
- device 108c # Intel 82573E Gigabit
- device 109a # Intel 82573L Gigabit
- devn-pcnet.so
- Packet processing now occurs only after the driver has fully registered
with io-net, in order to prevent an assertion with the debug
version of io-net.
(Ref# 23068)
- This driver now includes the probe_phy option, as
described above.
(Ref# 28634)
- Promiscuous and multicast support for the devn-pcnet.so
driver is controlled via command-line options rather than
by devctl() due to observed NIC-reset problems when the modes
are switched in the hardware.
The default mode is promiscuous Rx disabled and all-multicast Rx enabled. This allows TCP/IP v6 to run it's routing daemons.
You can enable promiscuous mode by specifying the promiscuous
command-line option to the driver.
You can disable multicast mode by specifying the nomulticast
command-line option to the driver.
(Ref# 29378)
- This driver now provides more information when you use
nicinfo.
- We've fixed an issue that affected duplex operations at 10 Mbit/second.
- We've added the _NPKT_PROMISC flag to received packets.
- devn-rtl.so
- The correct duplex setting is now negotiated when the speed is 10 Mbit.
(Ref# 17146)
- This driver now works on MIPSBE targets.
(Ref# 24259)
- This driver now includes the probe_phy option, as
described above.
(Ref# 28637)
- Issuing a umount /dev/io-net/en1 no longer causes
io-net to crash.
(Ref# 29470)
- You can now start a second instance of io-net using the
RTL driver.
(Ref# 29488)
- nicinfo now reports the correct speed and duplex setting
when they're specified.
(Ref# 29489)
- The devn-rtl.so driver no longer loses packets during
a receive on PPCBE targets.
(Ref# 29680)
- devn-rtl.so now scans and automatically detects Dlink
DFE-528Tx Rev E1 with vendor ID 0x1186 and device ID
0x1300, with NIC labeled DL10038D.
(Ref# 29729)
 |
The Dlink DFE-538TX Rev D2 with a NIC labeled DL10038C
that also has the same vendor and device IDs as the DFE-528TX card isn't
apparently 100% rtl-8139-compatible and doesn't appear to work correctly.
|
- We now provide an SHLE variant of this driver.
- We've added a caching API for SH.
- devn-pegasus.so
- The devn-pegasus.so driver now works with newer
8513-based chips.
(Ref# 27727)
- This driver now includes the probe_phy option, as
described above.
(Ref# 28647)
- Multicast and broadcast statistics are now correctly displayed with
nicinfo.
(Ref# 29130)
- devn-rtl8150.so
- This is a new driver for SMC2208 USB/Ethernet adaptors.
CPU targets provided: x86, ARMLE, SHLE
Location:
$QNX_TARGET/x86/lib/dll/devn-rtl8150.so,
$QNX_TARGET/armle/lib/dll/devn-rtl8150.so,
$QNX_TARGET/shle/lib/dll/devn-rtl8150.so
- devn-tigon3.so
- This is a new driver for the Broadcom BCM57xx Ethernet controller.
CPU targets provided: x86
Location:
$QNX_TARGET/x86/lib/dll/devn-tigon3.so
Supported device IDs / chipsets:
- Broadcom BCM5705
- Broadcom BCM5721
- Broadcom BCM5751
- Broadcom BCM5752
- Broadcom BCM5787
- libdrvr*
- If you forced the speed on the command line, the first link's speed
was negotiated properly, but subsequent renegotiations didn't honor
the override speed, performing a normal auto-negotiation instead.
We've now corrected this.
- We've corrected an auto-negotiation problem with gigabit Ethernet.
- We've added the unit option as an alias for the
lan option.
- We've corrected the display of memory addresses.
- pccard-launch
- This is a new Pccard launch utility.
CPU targets provided: x86, ARMLE, MIPSLE, MIPSBE, PPCBE, SHLE
Location:
$QNX_TARGET/x86/usr/sbin/pccard-launch,
$QNX_TARGET/ppcbe/usr/sbin/pccard-launch,
$QNX_TARGET/shle/usr/sbin/pccard-launch
- pci-bios
- We've updated this PCI server to add PCI-to-PCI bridge support.
CPU targets provided: x86
Location:
$QNX_TARGET/x86/sbin/pci-bios
- startup-bios
- We've added support for the Supermicro Supero x6DLP-EG2 x86 SMP platform
based on the Intel Sossaman.
CPU targets provided: x86
Location:
$QNX_TARGET/x86/boot/sys/startup-bios
- We added support for the x86 NX (no-execute) page table bit.
On processors that support it (AMD64, IA-32e), mmap()'d
memory no longer lets you execute instructions in that memory unless
you've specified the PROT_EXEC permission flag.
If not specified, a SIGSEGV occurs.
 |
You must have installed the QNX Neutrino Core OS 6.3.2 and
enable page-table extensions (with the -x
startup option) in order for the NX bit to be effective.
|
You can turn off support by putting -F ~0x4000 on the
startup command line.
(Ref# 40162)
- fs-*.so
- Mounting a disk filesystem with an invalid option no longer causes
a memory leak.
(Ref# 22341)
- fs-cd.so
- Because of a firmware bug, some CD-ROM devices return random addresses
when queried for multisession information.
We've modified fs-cd.so to work around this bug by
returning to session 0 if it can't mount the last session.
(Ref# 47233)
- fs-dos.so
- This filesystem now correctly handles volume labels that contain spaces
or non-ASCII characters.
Note that labels are 8.3 only, are not also stored as long filenames in
Unicode, and if they're non-ASCII, you must specify the appropriate
codepage= option (at fs-dos.so mount time)
to decode/display it.
(Ref# 44704, 45433)
- fs-qnx4.so
-
- We've fixed a race condition in fs-qnx4.so concerning
the allocation of inodes.
(Ref# 48016, 49966)
- fs-qnx4.so now correctly reclaims inode slots when
you rename files.
(Ref# 29627)
- io-blk.so
-
- A small cache size no longer makes io-blk.so become
deadlocked with FAT16 filesystems.
(Ref# 48742)
- If multiple threads unmount files simultaneously,
io-blk.so no longer becomes deadlocked.
(Ref# 19408)
- Trying to create new_directory/. (where
new_directory doesn't exist) now fails with an error
of ENOENT.
(Ref# 26377)
- If you specify the blk verbose option, the output now
goes to the system logger, slogger, instead of to
standard output.
(Ref# 38719)
- Other improvements:
-
- improved fsync() and delayed-write algorithms
- vnode versioning to eliminate a rare LRU/recycle race condition
- improved DOS volume recognition and mounting
- minor chages to conform with POSIX
- the ability to preallocate all io-blk caches and data
structures
- Qnet
- We now ship two versions of Qnet:
- npm-qnet-l4_lite.so — the new lightweight Qnet
- npm-qnet-compat.so — the pre-6.3 version.
The default version is the new lightweight Qnet
(npm-qnet.so is a link to
npm-qnet-l4_lite.so). If you wish to use the older
version of Qnet, have npm-qnet.so link to
npm-qnet-compat.so, and then restart io-net.
 |
- The new Qnet (npm-qnet-l4_lite.so) isn't
compatible with the pre-6.3 version.
- You can't have an instance of
npm-qnet-l4_lite.so and npm-qnet-compat.so active
at the same time on the same node.
- You can't unmount Qnet (either version) from
io-net in 6.3.2.
|
- npm-qnet-l4_lite.so
-
- We've added a new Qnet IOMSG,
_NETMGR_QOS_FLUSH.
This message lets an application force a retransmission
instead of waiting for Qnet to activate its own timeout.
This is useful for periodic detectable hardware failures where the
application can take action, instead of enabling shorter timeout
periods for Qnet, which adds more load to the system.
(Ref# 38260)
Here's an example:
#include <sys/netmgr.h>
#include <sys/netmsg.h>
extern int __netmgr_send( void *smsg1, int ssize1, const void *smsg2,
int ssize2, void *rmsg, int rsize);
int main (void)
{
struct _io_msg msg;
msg.type = _IO_MSG;
msg.combine_len = sizeof(msg);
msg.mgrid = _IOMGR_NETMGR;
msg.subtype = _NETMGR_QOS_FLUSH;
__netmgr_send(&msg, sizeof(msg), 0, 0, 0, 0);
}
- SCTP
- SCTP currently supports only IPv4; its API may be subject to
change.
- Although SCTP (lsm-sctp.so) supports only the
IPv4 protocol family, it must be used in combination with
the npm-tcpip-v6.so DLL. You can't mount
lsm-sctp.so while using the
npm-tcpip-v4.so DLL. This is due to internal
dependencies. Note that npm-tcpip-v6.so also
supports IPv4 along with IPv6 and other features.
- The TCP/IP stack (npm-tcpip.so) must be
started with the option stacksize using a larger
value than the default. For example,
io-net -d -ptcpip stacksize=4096 when using SCTP
(lsm-sctp.so).
- IPFilter
- IPFilter (lsm-ipfilter-[v4|v6] can be used only
with the matching TCP/IP stack (i.e. lsm-ipfilter-v4.so with
npm-tcpip-v4.so; lsm-ipfilter-v6.so with npm-tcpip-v6.so).
- Full TCP/IP stack and other updates
- The full TCP/IP stack (npm-tcpip-v6.so;
npm-tcpip-v4.so) has been updated to overcome the
vulnerabilities in the TCP protocol. For details, see the
security advisories NISCC Vulnerability Advisory
236929 and CERT Advisory TA04-111A.
 |
Although our Tiny TCP/IP stack (npm-ttcpip.so)
hasn't been updated to address the TCP vulnerabilities, we
anticipate that embedded devices using our tiny stack have
applications that use short-lived TCP connections and are
therefore not as vulnerable. |
- RPC library has been updated to support RPC Bind version 4.
- dhcpd and dhcprelay have been
updated to ISC dhcp version 3.0 p2.
- New binaries: rpcbind, rpcgen,
ntpd, ntpupdate, ntpdc,
ntpq, ntptrace, gns
- New DLLs: nfm-autoip.so
npm-qnet-l4_lite.so,
npm-qnet-compat.so, lsm-ipfilter.so and lsm-sctp.so
- New libraries: libipsec, libsctp
- rpcbind
- By default, rpcbind executes in
“secure” mode and uses Unix Domain Sockets for
local communication.
If you wish to use an older RPC application with
rpcbind or to use rpcbind in
combination with the Tiny TCP/IP stack, you'll need to refer
to the -L and -i options to
rpcbind.
 |
The service rpcbind must be defined for
both UDP and TCP in the /etc/services file.
While the default /etc/services provided has
these modifications, if you choose to use the current
/etc/services file at installation time,
these definitions will be missing and rpcbind
will fail to function. The required lines are:
sunrpc 111/tcp rpcbind portmap
sunrpc 111/udp rpcbind portmap
|
- sysctl, npm-tcpip-v4.so,
<netinet/icmp_var.h>
- The TCP/IP stack would always respond to the ICMP timestamp request.
You can turn this feature off with the sysctl utility or
the sysctl() function.
The object to control this is net.inet.icmp.tstamprepl; the
default is 1 (on).
(Ref# 23329)
- sysctl, npm-tcpip-v4.so,
<netinet/in.h>, <netinet/ip_var.h>
- The TCP/IP stack by default uses sequential IP header IDs.
You can enable random IP header IDs, by using the sysctl
utility or the sysctl() function.
The object to control this is net.inet.ip.random_id; the
default is 0 (off).
(Ref# 23328)
- fs-cifs
-
- fs-nfs2, fs-nfs3
- NFS requests always have a unique identifier (xid) value.
If a NFS server stops responding (for example because of a temporary
network failure) fs-nfs2 and fs-nfs3 try to
remount the server and resend the request.
We've found that some servers refuse to reply to a request if the
request's xid hasn't been changed after a remount, which
is against the NFS specification.
We've added an -x option to work around this problem;
it causes the client to change the xid of the request after
a remount.
(Ref# 25402)
- fs-cifs, fs-nfs2, fs-nfs3
- The usage message now correctly states that you don't need to specify a
server-export/mountpoint combination on the command line when
you launch fs-cifs, fs-nfs2, or fs-nfs3.
You can invoke the mount command later to add mountpoints.
(Ref# 15446)
- SRI SNMP suite
- QNX Momentics includes an SNMP package that consists of the
EMANATE/Lite technologies (15.3.1.23) developed by
SNMP Research International (SRI).
This package has been ported to QNX Neutrino.
For more information on SRI products, including release notes, visit:
www.snmp.com/products
The software is installed in the /usr/snmp15.3.1.23 directory.
QNX Momentics includes EMANATE/Lite runtime binaries;
if you need to develop your own MIBS, etc., you should purchase a full SNMP
package from one of our partners (e.g. SRI/Emanate, NuDesign).
- Photon File Manager
- The Photon File Manager's
preferences dialog lets you select a filename-encoding
scheme. This feature allows PFM to properly display
filenames that aren't encoded in valid UTF8. For details,
see the pfm entry in the Utilities
Reference.
- phfont
- The design architecture has evolved from 6.2.x. Under 6.2.x,
io-graphics was able to load the font server into
its own data segment in order to speed up rendering
services. This interface has been taken to a new level,
through libfont, by allowing several system
configurations:
- An external font server and a client font instance within
io-graphics.
- Benefit:
- Increased speed.
- Cons:
- Increase in memory footprint. Although
io-graphics instantiates a client font instance,
it can use greatly reduced resources, since it isn't
concerned with other application requests.
- A server font instance within io-graphics.
This is the same behavior as 6.2.x. If an external font
server isn't started, io-graphics will attempt to
start a server font instance.
- Benefits:
- Good speed; middle memory footprint.
- Cons:
- Slower than option 1, since the graphics driver may have
to wait for an outside client font request to complete.
- An external font server only.
- Benefit:
- Minimal memory footprint
- Cons:
- Slowest option
Client applications may also load a private client font
instance, resulting in maximum speed when making font
requests. Please read the new documentation for phfont,
fontadmin, and libfont (Font
Library Functions, specifically Pf*Dll() API calls).
Under the 6.3 architecture, rendering plugins are utilized
by phfont. These DLLs are located in /lib/dll/font. Each
rendering DLL has an embedded use message; just type
use dllname.
The following binaries are no longer required:
- phfontphf
- phfontpfr
- phfontFF
- phfontFA.
Please read the documentation on phfont for
further details. Options for the DLLs are set via the
fontopts file; see the docs on
fontadmin for further details.
Due to the new library (libfont), when
linking against a static libph you must also
link against libfont.
- embed_font
- You can use this script to copy all the font system binaries
and libraries to a target build image. Usage is simple:
embed_font target_root_directory
- fontview
- The fontview program is a font-viewer application that
can display glyphs from any font format supported by
phfont, without having to install the
font file. For more information, see the usage message (type
use fontview from a pterm).
The fontview utility uses the same rendering plugins as
phfont.
- io-graphics
- Supports the following wide-screen video modes:
- WXGA (1280x800)
- WXGA+ (1440x900)
- WSXGA+ (1680x1050)
- WUXGA (1920x1200)
These are the standard display sizes for laptops with wide screens.
(Ref# 25744)
- TrueType fonts
- We fixed a problem where PhAB for Windows wouldn't recognize
and render user-supplied TrueType fonts. (Ref# 19865)
To install a TrueType font:
- Use the Windows Control Panel to install the font.
- Add the .ttf file to the following
directory:
%QNX_TARGET%\usr\photon\font_repository directory
- Run mkfontdir so that the font appears in the font index file (fontdir).
- Photon hook
- You can pull in and execute a block of user code
during the initialization of Photon applications. For
details, see the widget styles section of the Managing
Widgets in Application Code chapter of the Photon
Programmer's Guide.
- Photon clipboard
- The Photon clipboard has been enhanced with added security.
You can no longer get access to another user's clipboard files,
unless you're running as root.
Clipboard files are no longer compatible between
6.3.0 and previous releases. This also means that Photon
applications built against libph.so.2 can't
share the clipboard with Photon applications built against
libph.so.3.
You're no longer limited to 64 KB when
you cut and paste text; the limit is now your system RAM.
- Clipboard Changed Event
- Clipboard changes cause a new event to be
emitted. The event is a Ph_EV_INFO, with a subtype of
Ph_CLIPBOARD_CHANGED. The data associated with the event
contains the input group number and the “clip
type” string, so that the listener can call
PhClipboardRead() to paste the data just copied.
The old region-changed event has been deprecated, but for
now will still be emitted when the clipboard changes.
- phlogin
- The default login application is now phlogin2, which provides a user icon that you can select to log in.
If you remove phlogin2 from the path, phlogin (the
original GUI login from 6.2) is used automatically.
- savercfg
- There's now support for power-saving modes and enhanced
password protection.
- Format of the config file has changed, but the new
savercfg/saver are able to read both
old and new formats.
- The new savercfg writes only the new format,
so the old format will be lost once you change your
settings. The transition is essentially transparent from the
user's point of view, but anyone sharing their homedir
between 6.3/6.2.x platforms should be aware of this.
- Security
- New versions of the following files fix some security vulnerabilities
in Photon reported by iDefense.com:
- target/qnx6/armle/usr/lib/libAp.a
- target/qnx6/armle/usr/lib/libph.so.3
- target/qnx6/armle/usr/lib/libApS.a
- target/qnx6/armle/usr/lib/libph.a
- target/qnx6/armle/usr/lib/libphS.a
- target/qnx6/armle/usr/lib/libAp.so.3
- target/qnx6/armle/usr/photon/bin/fontsleuth
- target/qnx6/mipsle/usr/lib/libAp.a
- target/qnx6/mipsle/usr/lib/libph.so.3
- target/qnx6/mipsle/usr/lib/libApS.a
- target/qnx6/mipsle/usr/lib/libph.a
- target/qnx6/mipsle/usr/lib/libphS.a
- target/qnx6/mipsle/usr/lib/libAp.so.3
- target/qnx6/mipsle/usr/photon/bin/fontsleuth
- target/qnx6/ppcbe/usr/lib/libAp.a
- target/qnx6/ppcbe/usr/lib/libph.so.3
- target/qnx6/ppcbe/usr/lib/libApS.a
- target/qnx6/ppcbe/usr/lib/libph.a
- target/qnx6/ppcbe/usr/lib/libphS.a
- target/qnx6/ppcbe/usr/lib/libAp.so.3
- target/qnx6/ppcbe/usr/photon/bin/fontsleuth
- target/qnx6/shle/usr/lib/libAp.a
- target/qnx6/shle/usr/lib/libph.so.3
- target/qnx6/shle/usr/lib/libApS.a
- target/qnx6/shle/usr/lib/libph.a
- target/qnx6/shle/usr/lib/libphS.a
- target/qnx6/shle/usr/lib/libAp.so.3
- target/qnx6/shle/usr/photon/bin/fontsleuth
- target/qnx6/x86/usr/lib/libAp.a
- target/qnx6/x86/usr/lib/libApS.a
- target/qnx6/x86/usr/lib/libph.so.3
- target/qnx6/x86/usr/lib/libph.a
- target/qnx6/x86/usr/lib/libphS.a
- target/qnx6/x86/usr/lib/libAp.so.3
- target/qnx6/x86/usr/photon/bin/fontsleuth
This change fixes these issues:
- Local exploitation of a format string vulnerability in the fontsleuth command allows attackers to gain root privileges — iDefense Security Advisory 02.07.06. (Ref# 29447)
- Local exploitation of a stack-based buffer overflow vulnerability libAp allows local attackers to gain root privileges — iDefense Security Advisory 02.07.06. (Ref# 28807)
- Local exploitation of a stack-based buffer overflow vulnerability in libph allows local attackers to gain root privileges — iDefense Security Advisory 02.07.06. (Ref# 29448)
QNX Momentics now includes clients for both CVS and Subversion.
(Ref# 47520, 47901, 47486)
For more information about Subversion (svn), see:
- Collins-Sussman, Ben, Fitzpatrick, Brian W., Pilato, C. Michael. 2004.
Version Control with Subversion.
Sebastopol, CA: O'Reilly & Associates.
ISBN: 9780596004484
We now provide two shells:
- Bash shell (bash.exe)
- Korn shell (ksh.exe)
You'll find these executables under ${QNX_HOST}/usr/bin
(e.g. C:\QNX632\host\win32\x86\usr\bin). You
may want to create desktop shortcuts for these or other executables you'll use often.
QNX Momentics 6.3.2 contains known issues in these areas:
 |
We're actively investigating all known issues. |
- 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.
- Fujitsu Coral cards don't support text mode,
so on x86 systems, you need two video cards: one to use in text mode,
and the Coral card.
- QNX Neutrino might not boot on machines with an
ICH6 chipset with the hard drive on SATA, and a CD drive on EIDE.
The OS detects the SATA device and then hangs on EIDE detection.
(Ref# 40446)
Workaround: We've added a new -R command-line option to
diskboot and a new “Hit space...” option,
F3.
Using these prevents diskboot from restarting a devb-
driver.
The drivers are restarted if only a CD-ROM is found.
In the case of this issue, the restart means devb-ahci and
devb-eide compete for the same bus, which results in a hang.
- 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.
- gcc
-
- If you're using gcc 3.3.5 with the deprecated GNU
libstdc++ library, cout/cin doesn't work
on SH targets. Use the Dinkum C++ library instead.
- MIPS C++ support with gcc 3.3.5 works only with the Dinkumware
NO_EXCEPTION libraries. Anything else will generate a
SIGILL error.
- On MIPS, code that uses exceptions in shared libraries generates a
SIGILL or other signal. Exceptions work as expected
in static libraries and executables.
(Ref# 23355)
- There's an alignment issue with gcc 2.95.3, where an
__attribute__((__aligned__(N))) applied to a
typedef also applies that alignment to the base
type.
(Ref# 18662)
For example, the following code applies an alignment of 8 to both
my_long_long_t and the long long:
typedef long long my_long_long_t __attribute__((__aligned__(8)));
Workaround: Make a duplicate typedef of a
dummy type:
typedef long long my_dummy_t;
typedef my_dummy_t my_long_long_t __attribute__((__aligned__(8)));
- Nested functions (i.e. one function declared inside another) aren't
standard C or C++, and they can
cause problems on SH and PPC platforms.
We recommend that you not use GNU extensions to ANSI C; for more information,
see “Extensions to the C Language Family” in the gcc
documentation at
www.gnu.org.
- With gcc 2.95.x and 3.x,
C++ shared objects can optionally use
__cxa_atexit(), which allows their destructors
(normally registered with atexit())
to be called at dlclose() time. This feature
isn't yet supported; as a result, you can't use dlopen()
and dlclose() on C++ shared objects.
(Ref# 19702)
Workaround: Add the following to your C++ shared library:
#include <dlfcn.h>
/*
* stick around for atexit(dtors)
* add to common.mk:
* CCFLAGS += -DSONAME_STR=\"$(notdir $(FULLNAME)$(VERSION_TAG_$(BUILD_TYPE)))\"
*/
extern void hackslash(void) __attribute__((constructor));
void hackslash(void) {
dlopen(SONAME_STR,RTLD_NOW);
}
- On most platforms, the gcc 3.3.5 options
-fpic and -fPIC are synonymous, but on PPC they're
different and incompatible.
We chose -fpic over -fPIC for performance reasons,
and our PPC OS is built that way.
(Ref# 21947)
Workaround: If you see problems (such as relocation-truncation
errors) at link time when building shared objects, consider splitting
your shared object into multiple shared objects.
- When you're compiling with gcc 3.3.5 for MIPS, you might
get this error:
relocation truncated to fit: R_MIPS_GPREL16
(Ref# 22822)
Workaround: Pass the -Wac,-G4 option to qcc.
- gcc 2.95.3 ignores #pragma pack() directives
for global structures on the ARM platform.
For example, the structure in this code is still padded to 8 bytes
instead of the expected 5:
#pragma pack(1)
struct five {
unsigned char a;
unsigned b;
};
struct five five;
(Ref# 5151)
Workaround: This problem doesn't affect code generated with
gcc 3.3.5.
- Both gcc 2.95.3 and 3.3.5 report parsing errors
for seemingly simple code.
(Ref# 20409)
Workaround: See “Parse errors for simple code” in
gcc.gnu.org/bugs.html#known.
- If you use the -Os option with gcc 3.3.5 to
optimize for size, you might get some compile errors.
This issue will be fixed in gcc 3.4.
(Ref# 19955, 21347).
- gdb
-
- Watchpoints don't work on the Freescale 8540ADS and Lite5200
platforms.
(Ref# 21293)
- Black-box regression tests for watchpoints fail for ARM targets.
It appears that the watchpoint isn't correctly set.
(Ref# 25599)
- If you have two breakpoints exactly one instruction apart, the
second breakpoint won't stop the debugger.
(Ref# 20833)
Workaround: Disable breakpoints in code that you're
single-stepping through.
- gdb may display a “Compiled with unknown
debugging format” warning when debugging binaries compiled
with gcc 3.3.5. This doesn't seem to affect the
debugger in any way.
(Ref# 20658)
- If you run gdb over phditto,
gdb hangs, because
the Photon server spawned by phrelay inherits
phrelay's set of ignored signals including
SIGUSR1, which gdb relies on.
(Ref# 24817)
Workaround: Launch pterm windows using pwm's
Desktop Menu (press Alt-Enter
or right-click on the desktop background)
instead of using the Terminal button on the shelf.
Only pterm windows started by shelf inherit the ignored
SIGUSR1.
Another option is to write a wrapper around gdb to reset
SIGUSR1.
- On SH4 targets, gdb sometimes displays
“finish meaningless on outermost frame” when trying to
step out of a DLL if stop-on-solib-events is on.
(Ref# 21502)
Workaround: Disable stop-on-solib-events, or
download an experimental version of gdb from our website.
- If you reset your target board while you're debugging from the
Windows-hosted IDE,
and you've clicked Terminate and remove in the IDE Debug view,
the ntoCPU-gdb.exe
process may run ready, consuming 100% of CPU.
(Ref# 25174)
Workaround:
There is no workaround (other than not following this sequence of events).
If gdb does run ready, you must terminate it from the
Windows Task Manager.
This problem will be fixed in a future version of gdb;
you can get an experimental version from the Download area of our
website.
- 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.
Workaround: Rebuild the startup binary using QNX Momentics
6.3.2. The resulting startup will work with both 6.2.1 and 6.3.
- Version 2.12.1 of ld produces bad
R_386_NONE relocations if you're using gcc 2.95.3
and C++ to build shared objects.
(Ref# 20433)
Workaround: SP3 also includes version 2.10.1, and the qcc
configuration files have been set up to use the older linker only if
you're using gcc 2.95.3 and C++ to build shared objects.
- make
-
- qcc
- In order to use gcc 3.3.5's support for the PPC Altivec
extensions, add this option:
-I $QNX_HOST/usr/lib/gcc-lib/powerpc-unknown-nto-qnx6.3.0/3.3.5/include
to the qcc command line.
This tells qcc where to find the <altivec.h>
header file.
GCC doesn't need this workaround, as it knows to search its own include
directories.
(Ref# 26109)
- qcp
- The qcp utility works only on x86 platforms.
(Ref# 9500)
- Windows-specific
-
- procnto
- Physical memory fragmentation can occur when a lot of
threads are created and remain alive for a period of time before
most of them are destroyed.
This fragmentation might cause problem for device drivers that need
physical, contiguous memory (passing the MAP_PHYS flag to
mmap()) for DMA and other device-related operations.
This problem doesn't affect normal memory allocation, such as that using
malloc().
When physical, contiguous allocations fail, malloc() and other
normal memory-allocation operations still work.
Also, this problem describes a situation when it isn't possible to
allocate 4 MB physical, contiguous memory in a system that has 64 MB RAM.
It may still be possible to allocate small chunks of physical, contiguous
memory.
As most device drivers need only small chunks of physical, contiguous
memory (e.g. 32 KB), this problem may not be a concern for them either.
When creating a thread, the OS kernel uses _smalloc() to
allocate memory for various internal data structures called
objects.
When the thread is destroyed, the kernel releases the memory to
a pool of free objects for reuse the next time an object is needed.
When a free-object pool reaches a certain size, the OS releases objects
directly back into a kernel memory pool that only the kernel uses.
The kernel does not return the memory to the free pool of general memory
that all the processes in the system use.
Physical memory can get fragmented when kernel holds on pages of memory
here and there; eventually large (4 MB and greater) physical, contiguous
allocations could start to fail.
(Ref# 16405)
Workaround: Reserve enough physical contiguous memory before hand
to make sure it's always available when needed.
- The 74xx series PPCs with a 60x bus (not MBX) don't
support 16-byte bus transactions. This limitation can cause
unexpected alignment exceptions when using Altivec
instructions to/from uncached memory regions. Symptomatic of
this issue, passing messages to or from uncached memory regions
can result in a kernel crash, due to the 60x bus limitation.
(Ref# 14878)
Workarounds:
- Don't pass messages to or from uncached memory regions.
- Disable the PPC_CPU_ALTIVEC feature flag in
startup-* code to avoid using Altivec
instructions in a message pass. (This also means that the OS
won't save and restore the Altivec register set on a context
switch.)
- On Broadcom MIPS BCM1250 and BCM1125 chips, the startup program
doesn't add cache callouts for the onboard L2 cache.
This causes msync() operations that attempt to flush the
cache not to force the data all the way to main memory.
This isn't normally a problem, because the L2 cache uses a bus-snooping
protocol and maintains consistency with the main memory anyway.
You might have problems if you have the same region of memory mapped both
with and without the PROT_NOCACHE attribute.
(Ref# 21855)
- Programs that you execute in place (XIP) in an image
filesystem (IFS) on PPC targets might randomly crash in rare cases.
PPC targets have separate caches for data and instructions.
If the IFS is copied (or decompressed) when the data cache is enabled,
the startup needs to flush the data cache.
The kernel maps in the code or data segment directly from IFS for XIP;
if the cache isn't flushed, the instruction cache may be loaded
incorrectly, because it's loaded from the underlying memory directly,
which may be different from the contents in the data cache.
As the first-level data cache size is relatively small, the chance
of running into this problem is low.
We haven't seen any such crash in our kernel regression tests, and
we aren't aware of any problem report from customers or internal
sources which may be related to this problem.
(Ref# 24783)
Workaround: If you aren't using a mini-driver, you can add
the following code segment to the startup program
startup/lib/ppc/cpu_startnext.c to flush the data cache
for IFS areas:
void cpu_startnext(uintptr_t eip, unsigned cpu) {
unsigned start, size, vaddr, dcache_linesize;
/* First, flush the cache for ifs so that kernel can load executables
from it without problems.
*/
dcache_linesize = 1 << ppcv->cache_lsize;
start = shdr->image_paddr + shdr->startup_size;
vaddr = start & ~(dcache_linesize - 1);
size = shdr->imagefs_size + (start - vaddr);
for( ;; ) {
icache_flush(vaddr);
if(size <= dcache_linesize) break;
vaddr += dcache_linesize;
size -= dcache_linesize;
}
If you're using a mini-driver, please contact us for a fix.
- When you're debugging an application on a system that's using floating
point emulation (i.e. you passed -fe to procnto),
attempts to step over floating point instructions cause the system to hang.
(Ref# 26049)
Workaround: Don't use floating point emulation, or don't step
over floating point instructions (use a run-to-breakpoint instead).
- Multiple concurrent calls to shm_unlink() for the same
shared memory object can cause kernel corruption and crash the kernel.
(Ref# 18121)
- 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 the QNX Neutrino Core OS 6.3.2
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.3.2.
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# 26280, 27831, 29341)
- A potential deadlock exists in the malloc library when
you're using vfork() and exec() if the
vforked child receives a termination signal while
holding the malloc library mutex.
(Ref# 28161)
- If you spawn or fork a process with open file descriptors to a
mixture of machines,
you get a “cannot fork” error.
For example, this can happen
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:
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.
- 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 writable mappings to the same region of the file
(in different processes, for example), then calling msync()
with MS_SYNC can cause a deadlock.
- 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# 29574, 29440, 29380)
- 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() causes the lazy pages to get allocated and mapped
in.
(Ref# 29647)
- procnto-booke
- The kernel might crash on the Freescale Power Quicc III board when
there's a heavy networking load.
This problem occurs only when the core-to-system clock ratio is set to 2:1.
The problem also exists with earlier releases of QNX Neutrino.
We're still determining the root cause.
(Ref# 27079)
- procnto-smp
- When using floating point emulation on MIPS processors, internal
filesystem sanity tests have resulted in SIGILL exceptions.
This problem doesn't occur if you use a hardware floating point unit.
(Ref# 25206)
- mq
- If you use the instrumented kernel to trace events while you're using
mq, emitting _NTO_TRACE_COMM_SMSG
communication-class events might cause your application to crash with an
EFAULT when it calls mq_send().
We've encountered this problem on SHLE boards.
(Ref# 38082)
Workaround: Filter out the _NTO_TRACE_COMM_SMSG events
by doing one of the following:
The side effect of filtering out these events is that the IDE's
System Profiler won't be able to show you any message-passing.
- ENDIAN_*()
- This release includes inline assembly optimization on
some platforms for the ENDIAN_*() (byte-swapping) routines.
These routines are macros that determine the best
method to perform the byte-swapping (as inline math using
shift-and-mask operations that may be constant-folded
at compile time, or as inline assembly using native CPU
instructions at runtime).
Due to a bug in the gcc 2.95.3
__builtin_constant_p() implementation, code compiled
with gcc 2.95.3 always selects the assembly variant.
This means that if you use an ENDIAN_*() expression as
a static initializer, it fails to compile.
For example, if you use gcc 2.95.3 to compile the following code:
static uint32_t numbers[] = {
ENDIAN_LE32(0x39c39c39),
ENDIAN_BE32(0x39c39c39)
};
you'll get an initializer element is not constant
compile error.
(Ref# 27099)
Workaround: Do one of the following:
- If you're defining the structure inside a function body,
remove the static qualifier, which causes
the data structure to be initialized at runtime rather than
compile time, at which stage inline assembly is valid.
- Compile affected code with gcc 3.3.5,
which has a fixed __builtin_constant_p() that allows
detection of a constant expression and implements the byte-swapping with
shift and mask operations.
You can choose gcc 3.3.5 by
specifying the appropriate -V compiler version to
cc or gcc, or by setting
GCC_VERSION=3.3.5 within a Makefile or
common.mk environment.
 |
This affects only static initializers containing
ENDIAN_*() expressions, and doesn't apply to any
runtime use of these ENDIAN_*() macros.
|
- Bessel functions
- According to POSIX 1003.1, the Bessel functions —
j0(), j1(), jn(), y0(),
y1(), and yn() — should be declared in
<math.h>.
They currently aren't declared in any header, but the functions are in
libbessel.a and libbessel.so.
(Ref# 23554)
Workaround: Declare them in your program; for the correct
prototypes, see the entries for these functions in the
Neutrino Library Reference.
- ELF64_R_INFO()
- The definition of this macro is incorrect in <sys/elf.h>.
It uses Elf32_Xword() instead of the Elf64_Xword()
macro.
(Ref# 40936)
Workaround: Edit the header file and change this line:
#define ELF64_R_INFO(s,t) ((((Elf32_Xword)(s))<<32) | ((Elf64_Xword)((t)&0xffffffff)))
to this:
#define ELF64_R_INFO(s,t) ((((Elf64_Xword)(s))<<32) | ((Elf64_Xword)((t)&0xffffffff)))
- fork()
- In extremely limited cases, it's possible that a call to
fork() may fail and set errno to EINTR.
This issue is limited to only x86, PowerPC, and SH architectures and
usually occurs only when stacks have dynamically allocated all backing
store (e.g. a 512 KB stack has 512 KB memory allocated)
through heavy stack usage followed by a call to fork().
(Ref# 18408)
- libmalloc
- When using libmalloc_g, if you enable
MALLOC_FILLAREA and MALLOC_CKCHAIN
and do too many heap over- or underruns, then your process may fault.
This occurs because the underruns and overruns may corrupt the metadata
associated with heap allocations.
Once the heap is corrupted, the reliability of the checking is also
compromised.
This is described in the section on libmalloc_g in the
Neutrino Programmer's Guide.
(Ref# 24428, 23322)
- The libmalloc implementation of string.c
may corrupt the heap on PPC targets.
(Ref# 24394)
- An internal string.c test case
fails for the libmalloc string implementation.
The libmalloc implementation of strcmp()
and strncmp() incorrectly compares the two strings based
on the difference between the characters treated as signed values
instead of the difference between the characters treated as unsigned
values.
(Ref# 24369)
- mprobe() sometimes causes the caller to fault.
(Ref# 24423)
- The libmalloc macro DH_ULEN() always returns
0 because of a bug in the definitions in the header files.
If MALLOC_GUARD is undefined, DH_ULEN() is
defined to be 0 in <malloc_g/malloc-lib.h>.
If your code also includes <malloc_g/malloc.h>, the file
explicitly undefines MALLOC_GUARD before including
<malloc_g/malloc-lib.h>, resulting in the
DH_ULEN() value of 0.
(Ref# 24454)
Workaround: Include <malloc_g/malloc.h> after
<malloc_g/malloc-lib.h>, as follows:
#define MALLOC_DEBUG
#define MALLOC_GUARD
#define MALLOC_PC
#include <malloc_g/malloc-lib.h>
... other includes/code that depends on MALLOC_GUARD ...
#include <malloc_g/malloc.h>
- Memory traces may incorrectly show that allocations made before
main() are associated not with a particular function,
but possibly with a variable name.
(Ref# 19486)
- When you're using the libmalloc library, stack
information for memory events is implemented only for x86, PPC, and
SH4 architectures.
The result is that line-number information and call traces aren't
available for display when memory events occur on other architectures.
This is a feature deficiency and will be corrected in a future release.
The offset within the function where the event occurred is provided.
(Ref# 12611)
- The libmalloc backtrace information is missing for
architectures other than x86, PPC and SH4.
This will be implemented in future release.
(Ref# 25393)
- RPC Library (librpc.so, librpc.so.2,
librpc.a, librpcS.a)
- If all available memory is exhausted, the RPC library can potentially
fault if a malloc() call fails during the first execution of
either a clnt_broadcast() call or a rpc_broadcast()
call.
Memory corruption may occur if all thread-specific data keys are
exhausted before the RPC library functions have been called.
(Ref# 21945)
- spawn()
- On ARM targets with low-memory conditions, attempts to create a new
process may result in an EINTR error instead of
ENOMEM as might be expected.
This happens when, during process creation, attempts to fault in the
stack result in an out-of-memory condition, at which point a
SIGBUS is delivered to the process, causing it to return
EINTR.
If the out-of-memory condition is detected before the stack is
allocated, ENOMEM is returned.
(Ref# 24406)
- <stdio.h>
- A duplicate declaration of vsnprintf() causes compile
warnings.
(Ref# 21880)
- sysconf()
- The value that sysconf( _SC_OPEN_MAX ) returns might not
be correct if you've used the -F option to procnto
to change the maximum number of file descriptors per process.
(Ref# 16966)
- tempnam()
- The entry for tempnam() in the
Neutrino Library Reference doesn't accurately describe
how the function determines the directory portion of the temporary
file's name.
(Ref# 27332)
Workaround: See the entry for tmpnam(); this function and
and tempnam() use the same method for determining the
directory.
 |
The tempnam() function's behavior doesn't conform to POSIX.
|
- 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)
- 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.3.2 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
- mkefs
- Under Windows, if you redirect the output from mkefs to a
file, the end-of-line characters will be DOS-style (CR, LF) instead of
UNIX-style (CR).
(Ref# 19065)
Workaround: Under Windows, use this syntax:
mkefs buildfile outputfile
instead of redirecting the output:
mkefs buildfile > outputfile
- mkifs
- Executables compiled with the -Nstacksize option
and then included in images built using mkifs don't (by default)
use the stacksize parameter.
(Ref# 23573)
Workaround: Specify [+raw] in the build file for any
executables that you compiled with the -Nstacksize
option.
For more information about the raw attribute, see the entry
for mkifs in the Utilities Reference.
- QNX_HOST, QNX_TARGET
- The development environment variables
(QNX_HOST, QNX_TARGET, etc.) aren't set
if you have a login shell other than the default (sh).
This environment is picked up automatically from
/etc/profile.d/qnxsdk.sh but if SHELL is
set to ksh, then /etc/profile looks for
*.ksh in the directory instead of *.sh
and finds nothing.
(Ref# 24660)
Workaround: Copy /etc/profile.d/qnxsdk.sh to
/etc/profile.d/qnxsdk.ksh.
- rtc
- To enable reading from the RTC on a machine with a ServerWorks chipset
on it (observed on a SuperMicro SuperServer 8060), you must first set the
OS date and then set the RTC from the OS date:
# date 200607191700
Wed Jul 19 17:00:01 EDT 2006
# rtc -s hw
(Ref# 26324)
- startup-bios
- Don't use the -x option on machines that don't support
extended addressing, or else pci-bios won't start.
(Ref# 40404)
- tracelogger, traceprinter
-
- slay
- Trying to slay something on a node in a domain other than
your own will fail.
For example, if you're in domainX, and you try to slay
something on node foo in domainY, you'll see this:
# slay -n foo.domainY process_name
slay: Unable to find process 'process_name'
(Ref# 29840)
- use
- If you specify both the -i and -s options,
use displays only the information for the -s option.
(Ref# 49624)
The I2C (Inter-Integrated Circuit) Framework technote
refers to a multithreaded resource manager, but we currently support
only a single-threaded one.
(Ref# 49900)
- 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)
- 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-umass
- The usage message says to use the devnn
option to specify the USB address of the device.
The correct name of the option is devno.
(Ref# 24347)
- devb-eide
- DMA modes don't work on these drives:
- Hitachi-LG Data Storage DVD WRITABLE/CD-RW DRIVE, ROM VER.E111,
May 2006
- Toshiba Samsung Storage Technology TS-H352C/DELH, DE02,
May 2006
(Ref# 41600)
- Starting Photon with multiple cards fails after running crttrap trap. When running
crttrap trap, devg-vesabios.so will put the secondary card in a bad state,
causing devg-radeon.so to fail to initialize (Ref# 39511).
Workaround: Do the following:
- Boot into text mode.
- Run crttrap trap.
- Configure the system to start both cards.
- Reboot before starting Photon.
After this, you should be able to start and stop Photon on
both cards properly.
You'll need to follow the steps above only if you run crttrap trap
again.
- All graphics drivers hang while trapping on (discontinued)
Abit IS-20 (865GV) motherboards because of an issue in the BIOS.
(Ref# 39626)
Workaround: Use the onboard graphics controller instead.
If you set the onboard display as the primary controller, any installed
PCI graphics cards will still be detected / trapped.
- The planar YUV overlay format doesn't work properly in the
devg-radeon.so driver.
(Ref# 29014)
- If you have more than 512 MB of system RAM, the
devg-radeon.so driver won't work.
(Ref# 29339)
Workaround: Reduce the system RAM to 512 MB or use the
devg-vesabios.so graphics driver.
- The devg-radeon.so driver doesn't work properly on
ViewSonic VP2030b monitors; none of the resolutions work.
(Ref# 41905)
Workaround: Use the devg-vesabios.so graphics driver
instead.
- devn-asix.so
- This driver doesn't support the 1000 MB/s interface of the
Linksys Gigabit USB Adapter (model no. USB1000).
(Ref# 38115)
Workaround: Force the driver to use speed and duplex settings that
it supports (10 and 100 Mbit/s).
- devn-i82544.so
- If you use more than 64 Tx descriptors, the PPC version of the driver
is inoperative.
(Ref# 22848)
Workaround: We've temporarily changed the PPC version of this
driver to use 64 Tx descriptors by default (on other targets, the default
is 128).
This may result in lost packets for high-throughput transmit operations.
- devn-pcnet.so
- This driver doesn't support Fiber PCNET cards with the AM79C971KC chip.
(Ref# 12497)
- We don't recommended that you use devn-pcnet.so on the
BCM1250 platform, because it can lose receive interrupts.
(Ref# 29714)
- devn-pegasus.so, devn-rtl8150.so
- Slaying io-net with the
devn-pegasus.so and devn-rtl8150.so
drivers isn't always successful.
(Ref# 28602)
Workaround:
Use kill -9 instead to kill io-net.
- devn-rtl8150.so
- On the SH platform, the lan= option gets overridden.
(Ref# 29285)
Workaround: Fully specify the vendor ID, device ID, bus number,
and device number to the driver when starting (e.g.
vid=0x0bda,did=0x8150,busnum=1,devnum=2,lan=2).
- Multicast and promiscuous modes for the rtl8150 driver aren't currently
supported.
(Ref# 29352)
- devn-smc9000
- Not all IPv6 multicast protocols function properly with this
driver.
(Ref# 21720)
- devn-tigon3.so
- This network driver on the Dell PowerEdge 850 board will
run only up to 100 Mbit/s, and not 1000 Mbit/s.
Other boards work well at 1000 Mbit/s.
(Ref# 39355)
- The PCI-USBNEC101-5P-1 controller card won't allow at least the following
boards to boot: SystemH, EDOSK7780, BCM1x80.
(Ref# 29496)
- 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)
- /dev/shmem
- Large block writes to /dev/shmem are slower than in
the last release.
(Ref# 26280)
- 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)
- fs-pkg
- The fs-pkg filesystem isn't designed to let you use
chmod or chown on
“virtual” fs-pkg directories. (Ref# 9552)
- fs-qnx4.so
- A deadlock sometimes occurs during one of our benchmark tests.
(Ref# 49288, 49636)
- 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)
- During a reclaim copy, if the LAST bit is set incorrectly, the
flash filesystem won't notice until after it has copied the incorrectly set
head.
(Ref# 20149)
The IDE contains the following known issues:
The plugin_customization.ini file for
com.qnx.tools.qde.momentics that we
shipped with Momentics 6.3.2 was truncated.
(Ref# 51364)
Workaround: Correct the file as follows:
- Go to $QNX_HOST/usr/qde/eclipse/plugins.
- Extract the contents of
com.qnx.tools.qde.momentics_4.0.1.v20070309.jar into
this directory.
- Move com.qnx.tools.qde.momentics_4.0.1.v20070309.jar
to another folder.
- Go into the com.qnx.tools.qde.momentics_4.0.1.v20070309
directory.
- Edit plugin_customization.ini and change the last line
from this:
org.eclipse.cdt.debug.core/org.eclipse.cdt.debug.core.cDebug.defaultDebugger=com.qnx.tools.ide.qde.debug.core.CDe
to this:
org.eclipse.cdt.debug.core/org.eclipse.cdt.debug.core.cDebug.defaultDebugger=com.qnx.tools.ide.qde.debug.core.CDebugger
- Restart the IDE.
- If you don't have the latest version of qconn, the IDE
gives you a link to the section in the documentation that explains how
to update qconn, but that link no longer works because of
the changes we've made to the documentation plugins.
(Ref# 50214)
Workaround: See “Installing the qconn update”
in the Preparing Your Target chapter of the IDE User's Guide.
- If you choose
,
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)
- When you use TFTP in the IDE (self-hosted), in the TFTP view, you will receive the following error message:
Unexpected TFTP Packet Tye: 0
(Ref# 45805)
Workaround: Use a serial transfer instead.
 |
A serial transfer is slower than TFTP; the speed depends on the baud rate of the target. |
- 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 Extra Libraries dialog that is available by right-clicking on
Properties, and then selecting does not include Up
and Down buttons for reordering the libraries. In addition, if the
list of extra libraries becomes long (e.g. 15 or 20), the list expands
downwards, and the items at the bottom of the list are no longer displayed in
the visible region.
(Ref# 45353)
- When you update from IDE 4.0 to 4.0.1 using the IDE Software Updates
manager, the update mechanism doesn't upgrade the files in $QNX_CONFIGURATION.
If you run qconfig after the update process, the result
shows IDE 4.0 instead of IDE 4.0.1.
(Ref# 45588)
- After you upgrade from IDE 4.0 to 4.0.1, when you start the IDE, the Welcome
window might show the IDE 4.0 image instead of the updated IDE 4.0.1 image.
(Ref# 45539)
Workaround: To see the IDE 4.0.1 image, you need to run the command
qde -clean in your eclipse directory eclipse/.
- 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 don't display, and there is nothing to indicate that index is rebuilding.
(Ref# 45081)
- 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)
- 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 with
gcc 2.95.3.
- The Application Profiler's sampling information shows “unknown” function names for MIPSLE and MIPSBE targets.
There is no workaround at this time.
(Ref# 24510, 25938)
- The Application Profiler cannot load symbols for a shared library when explicitly set
in the Shared Library path field in the Launch Configuration dialog.
For example, if you create a QNX project that uses another QNX library project and then run it with the profiling enabled, that library will have an so version, such as libxxx.so.1, but it's corresponding library file name won't.
(Ref# 45711)
Workaround: You can do one of the following:
- change the library project so that it doesn't use a so version
- change the project to have an explicit dependency on the library project
- While profiling an application, some function names are displayed as
“$a” in the Sampling Information view.
(Ref# 44977)
Workaround: If you double-click the “$a” reference, the IDE opens the appropriate source file and selects the correct function name.
- When you review the results from an Application Profiler session, the 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)
- While performing traces (and the traces are not empty), if all of the trace events that begin with 0xb do not have source information,
a problem has occurred with the tracking of events from the shared library when the application ended.
(Ref# 44617)
Workaround: Add a 10-20 second delay before main exits, and specify the search path to your own shared
libraries by selecting , then in the Library Search Path field, add a directory where the .so file is located.
- If you run memory analysis for a project with the Use dladdr to find dll names set, this option only works for x86 processors.
(Ref# 45807)
- When you request the termination of the Memory Analysis service, it might take longer than expected.
(Ref# 46228)
- When performing memory analysis, if you use a time-based collection method for memory leaks, you might encounter results that show duplicate memory leaks. This duplication occurs because as soon as a memory region is identified as a leak, it's repeated with a different timestamp for each subsequent leak that's detected.
(Ref# 44473)
- When using Attach mode in Memory Analysis Tooling, the Perform leak check when process exits option cannot be set.
(Ref# 44768)
Workaround: In addition to the environment variables you specify, to enable attaching you can specify the following:
MALLOC_DUMP_LEAKS=/dev/dbgmem
- When you import events from a file (a libmalloc_g trace file), the import process may not function properly when this file is used for events and traces and leak detection is enabled.
(Ref# 45107)
Workaround: To perform an import:
- Ensure that the Perform leak detection on exit option is not selected, and set the time for Perform leak detection every (ms) to 0 (to access these options, for a Launch Configuration select ).
- Specify separate files for events and for traces (create a trace file from ).
- When importing, import both of the files sequentially in the same session to combine the results.
- When using Memory Analysis for ARMLE, ARMBE, MIPSLE, MIPSBE, and SHLE targets, libmalloc sometimes has difficulty tracing back to the call site of a function. As a result, the source files for function calls aren't always shown in the Memory Analysis perspective. There is no workaround at this time.
(Ref# 47080, 26035, 25938, 26100, 41457)
- In the Memory Analysis perspective, if a function causes a buffer
overflow, memory leaks aren't detected correctly.
(Ref# 42312)
- In the Memory Analysis Tooling, if you import libmalloc_g
events from trace and event log files that were created on a target machine,
the Memory Analysis perspective doesn't show any of the events and traces.
If the text log file contains only traces, then the Memory Analysis Tooling
can successfully import and display them.
(Ref# 42162)
- 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)
- For Neutrino, when attaching to a running process, the IDE doesn't display any threads
or traces in the in the Memory Analysis perspective.
(Ref# 45421)
- For Neutrino, the host Memory Analysis Tool is limited to process no more than 100,000 events. For Windows, it is limited to process 2,000,000 events.
(Ref# 45345)
Workaround: If the Memory Analysis tool processed this maximum number of events, it is too much data to analyze manually. We recommend that you adjust the Memory Analysis Tooling options to limit the number of collected events by setting the various filtering options, or use the debugger with Memory Analysis Tooling to dynamically enable and disable events collection.
- For Windows Vista, in the Memory Analysis Tooling perspective, the view date and time displays GMT time instead of the actual Vista host time.
(Ref# 44861)
- 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.
- When importing data from a trace file, symbol information should be removed (all events show only the binary address without file and line numbers), but the information remains.
(Ref# 44608)
Workaround: You can use the external utility called addr2line to find symbolic names that match the address. For additional information about this utility, see the Utilities Reference.
- 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 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.
- In the Statistics window, the number for the errors reported is larger than the actual number of errors that occurred as displayed in the Errors view.
(Ref# 45443)
- 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)
- 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 will be empty; however the graph should display a single bar that corresponds to the only allocation.
(Ref# 43494)
- In the TFTP view, if you use the shortcut icon you will open the a preferences window containing only the TFTP preferences. If you add new items to the TFTP File Search Paths, when you attempt to close the Preferences window by clicking both the Apply and then the OK button, you will receive the following error message:
An error has occurred. See error log for more details.
(Ref# 45704)
Workaround: This error will not occur if you use the full preferences dialogue available by selecting .
- 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 dependant 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)
- Whenever a build of a standard make project completes, even when it has no other
errors or warnings, the IDE 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:/QNX632/ide4-workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c)
code_cov Unknown 1157739187750 23
Although the project has no other errors or warnings, it includes a warning symbol beside the project name. Do not consider the project to have an error based on this message; the project did have a clean build.
(Ref# 41424, 45377)
- For MIPS only, the dietitian can't shrink the socket library because the library exports symbols that should be resolved in the C library. This problem (Ref# 12394) was fixed on all platforms except MIPS.
(Ref# 15986)
- When you import some executable files into a project, they
lose their executable permissions.
(Ref# 12618)
- 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 (, and select ), the System Builder can't perform a build.
(Ref# 45597)
Workaround: Don't disable the setting Always clear before each build.
- In the Image Combine dialog box, 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 won't be saved and the IFS properties aren't updated.
(Ref# 43188)
- After building a project where the you've set the keeplinked attribute, the IDE returns the following error in the error log:
Image build-start: build started
Error: Unable to find startup: startup-mgt5200
Build Failed.
This error indicates that +keeplinked is an unsupported attribute. The error occurs because the buildfile doesn't set this attribute.
(Ref# 20124)
Workaround: If you start the build from the command line, this error doesn't occur.
- Although you can export an EFS buildfile, you can't import this file into a project. You will receive the following error message when you attempt to import an EFS buildfile:
Error: The build file to import appears to be invalid, nothing was found to import.
(Ref# 40682)
- 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)
- If you set the Save automatically before build option for
a project, and you change one of the project's files, the file is
saved if the project is selected in the tree, but not if the file is
selected.
This is a bug in Eclipse 3.0; see
https://bugs.eclipse.org/bugs/show_bug.cgi?id=75063.
(Ref# 25866)
- Assigning a hotkey to the Rebuild Project action has no effect (the hotkey doesn't work).This is a bug in Eclipse 3.0; see https://bugs.eclipse.org/bugs/show_bug.cgi?id=99193.
(Ref# 25616)
- The C++ Class Browser is currently experimental.
(Ref# 37369)
- 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)
- In the Launch Configuration dialog, if a target is not selected and you click the From Project button, you will receive a NULL pointer exception error.
(Ref# 45599)
- When debugging multiple threads (e.g. 15-16 threads) in a process, occasionally the debugger stops in the wrong thread.
(Ref# 46983)
- A project with shared libraries encounters a problem when you attempt to
debug shared libraries in the IDE.
(Ref# 44885)
Workaround: You will need to specify all required libraries in the Library
Path table of the Memory Analysis launch configuration dialog:
- Open a Launch Configuration.
- Change to the Tool Panel.
- Expand the Library Path section.
- Add any required libraries.
- In the Debugger, the this pointer is listed twice
in the Debug Variables view.
This is a benign error.
(Ref# 20063)
Workaround: If you compile with gcc 3.3, the
second entry doesn't appear.
- If you choose a debugger other than gdb, you receive an
“Invalid debugger type” message.
(Ref# 42127)
- If your serial device is something like /dev/ttyUSB0,
the Terminal 1 view of the System Builder might display the message
Device Not Specified.
The dialog provides you with a method to specify the speed, parity, etc., but no
way to specify the serial device to use.
Workaround: Start the IDE using the following command:
qde -vmargs -Dos.name=Linux-all-ports
- Various Linux versions may experience multiple IDE entries in the program
launch menus. Some of these entries may not be properly labeled to reflect
the correct IDE version; however, when selected, they will correctly launch
IDE 4.0.1.
(Ref# 40383)
- On some versions of Linux,
if you create a new QNX C project and build it, you get the error:
/opt/qnx632/target/qnx6/usr/include/mk/os_nto.mk
/opt/qnx632/target/qnx6/usr/include/mk/nto_.mk: No such file or directory
(Ref# 48365)
Workaround:
Before launching the IDE, modify your PATH so that
$QNX_HOST/usr/bin is first:
export PATH=$QNX_HOST/usr/bin/:$PATH
qde
You should edit your shell's initialization file so that PATH
is always set like this.
- Refactoring the a project on a self-hosted Neutrino system fails to complete the operation and returns the following error message:
The refactoring does not change any source code.
(Ref# 47687)
- Context-sensitive help does not work on Neutrino systems.
(Ref# 46694)
- When performing a search in the online help on Neutrino systems, the search does not find anything.
(Ref# 46695)
- You can't select both the Application Profiler tool and the Code Coverage tool in the same launch configuration. If you do, the launch fails with an error message indicating that the Code Coverage resource is busy.
(Ref# 44984)
- On QNX Neutrino host systems, if you attempt to start the QNX Momentics IDE 3.0.0 using the command qde3, it will fail.
(Ref# 45912)
Workaround: After installing QNX Momentics IDE 4.0.1, run the following command as the root user:
cp /usr/qnx/Momentics/IDE4/install/ide/4.0.1/qde.sh $QNX_HOST/usr/bin
- If you use the Software Updates manager and attempt to specify a URL in the Update site address box, the IDE will
return an error message indicating that https is not a valid URL.
(Ref# 45448)
Workaround: Obtain software updates from the Download area of our
website.
- If you modify the properties for a project (right-click on a project and click
Properties), when you modify properties on the various pages without
clicking Apply or OK before changing to another property page,
you will receive an exception error.
(Ref# 45526)
Workaround: If you've made any changes to the current property page, you
must click Apply or OK before changing to another property page.
- For Neutrino, the IDE Software Updates manager is not available for upgrading from
IDE 4.0 to IDE 4.0.1.
(Ref# 45337)
Workaround: You'll need to follow the full installation instructions in the
Installation Notes for Neutrino.
- The New Project wizard lets you use special characters in
the project name, but make won't build such a project.
(Ref# 24441, 24531)
Workaround: Don't use spaces or the following characters in a project
name:
| ! $ ( " ) & ` : ; \ '
* ? [ ] # ~ = % < > { }
- When columns are resized, your display results may appear distorted.
(Ref# 44970)
Workaround: Refresh the display.
- The Debug configuration download dialog doesn't work when you're
downloading more than 20 shared libraries.
(Ref# 28655; Ticket ID 70527)
- If you profile a large project, a lot of information is missing
(e.g. call counts, usec/call, %time() usage for most functions).
(Ref# 19241)
- If you click ,
and then attempt to sort the page by clicking the tab names (such as Provider
or Feature Name), if you modified the length to see all of the text, the
information in the table will no longer be aligned. The same alignment issue occurs on the Plugin Details page.
(Ref# 44968)
- Only one letter is displayed for shortcut keys. For example, in the Search context menu,
the shortcut key for Search shows H, but it should be Ctrl + H.
(Ref# 45155)
- When you are in an Application Profiler Session view, if you select the Partition Child and
Processes and Threads window, you can't drag and drop processes from one partition to another.
(Ref# 45504)
- Occasionally, the Show View dialog box doesn't fully display the last item in
the list.
(Ref# 44965)
- In the Debug perspective, when you single step through a project, the 64-bit values don't properly display in the upper
32 bits on the Variables tab; however, the lower 32 bits are correct.
(Ref# 45424)
- The IDE takes approximately 25% to 40% longer than the previous version
to load a new workspace.
(Ref# 45928)
- In the Manage Configuration dialog box (), the minimize button does not close the window.
(Ref# 45094)
- When you use TFTP in the IDE (self-hosted), in the TFTP view, you will receive the following error message:
Unexpected TFTP Packet Tye: 0
(Ref# 45704)
Workaround: Use a serial transfer instead.
 |
A serial transfer is slower than TFTP; the speed depends on the baud rate of the target. |
- If you reset your target board while you're debugging from the
Windows-hosted IDE, and you've clicked Terminate and remove in the IDE Debug view,
the ntoCPU-gdb.exe
process may run “ready”, consuming 100% of the CPU.
(Ref# 25174)
Workaround:
There is no workaround (other than not following this sequence of events).
If gdb does run ready, you must terminate it from the
Windows Task Manager.
This problem will be fixed in a future version of gdb;
you can get an experimental version from the Download area of our
website.
- If you use QWinCfg to switch to QNX Momentics 6.2.1,
the value of the QNX_HOST environment variable contains
forward slashes (“/”) instead of backslashes (“\”), so builds might fail.
(Ref# 29368)
Workaround: Edit the environment variable (by opening System
in the Control Panel, going to the Advanced tab, and clicking
Environment Variables), and change the forward slashes into
backslashes.
- 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 you have a C/C++ project that returns a value of 10, and you run
it in the IDE, the Console window reports a return value of 25.
(Ref# 21300)
- 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)
- You can start QNX Momentics IDE 3.0.0 from a command prompt using the following command:
%QNX_HOST%\usr\qde\eclipse\qde.exe -vmargs -Xms256m -Xmx512m
(Ref# 45912)
- The Help icon for the Introduction step in the “Neutrino Inter Process Communication” cheat sheet links to “Working with cheat sheets” instead of linking to the help topic about “Inter Process Communication.”
(Ref# 46147)
- Additional documentation is required to complete the topics for the following areas:
- the fast method of launching a debug session
- debugging a DLL/shared library
- attaching to a running process with the debugger
(Ref# 42437)
- 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.
- io-usb
- In some cases when unmounting DLLs and running the usb
utility at the same time, some memory allocated by io-usb
isn't freed. This is a rare situation.
(Ref# 21716)
- The io-usb server crashes if you repeatedly mount
and umount and plug and unplug devices attached to the port.
(Ref# 21556)
- io-usb might crash with a SIGSEGV when
you shut down the system and you don't have any USB devices inserted.
(Ref# 29495)
- 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)
- A potential deadlock exists in the malloc library when
you're using vfork() and exec() if the
vforked child receives a termination signal while
holding the malloc library mutex.
(Ref# 28161)
- FIFO scheduling isn't always honored with SMP.
Applications that rely on FIFO scheduling (run-to-completion model)
won't execute properly.
(Ref# 29847)
- If you use the slay -C option to change the
runmask for a process,
the processor for blocked threads doesn't change until the threads
become unblocked (or never if the threads remain blocked).
The documentation should mention this.
(Ref# 40730)
- soundfile.so, soundfile_noph.so
- Loading these legacy plugins causes a SIGBUS error.
(Ref# 21707)
Workaround: Use the -ae option to procnto
to enable alignment fault emulation.
- Multimedia TDK 1.0.1
- If you install the Multimedia TDK 1.0.1, some
files will be incompatible with QNX Momentics.
(Ref# 39359)
Workaround: Do the following:
- Before you install the Multimedia TDK 1.0.1, back up the files
listed below
for for these targets:
- $QNX_TARGET/armle
- $QNX_TARGET/mipsle
- $QNX_TARGET/ppcbe
- $QNX_TARGET/shle
- $QNX_TARGET/x86
- If you're on a self-hosted Neutrino system, also back up the versions
of the files under /.
- Install the Multimedia TDK 1.0.1.
- Restore the files from the backup you made.
Here's the list of files that you need to back up before installing
the TDK and restore afterward:
- usr/lib/mmedia/libaif_parser.a
- usr/lib/mmedia/libau_parser.a
- usr/lib/mmedia/libaudio_writer.a
- usr/lib/mmedia/libavi_parser.a
- usr/lib/mmedia/libcdda_reader.a
- usr/lib/mmedia/libff_mpegv_decoder.a
- usr/lib/mmedia/libfildes_streamer.a
- usr/lib/mmedia/libhttp_streamer.a
- usr/lib/mmedia/libiff_parser.a
- usr/lib/mmedia/libmidi_parser.a
- usr/lib/mmedia/libogg_decoder.a
- usr/lib/mmedia/liboggi_decoder.a
- usr/lib/mmedia/librawfile_writer.a
- usr/lib/mmedia/libstream_reader.a
- usr/lib/mmedia/libwav_parser.a
- usr/lib/mmedia/libwavfile_writer.a
- usr/lib/mmedia/libwindow_writer.a
- lib/dll/mmedia/aif_parser.so
- lib/dll/mmedia/au_parser.so
- lib/dll/mmedia/audio_writer.so
- lib/dll/mmedia/avi_parser.so
- lib/dll/mmedia/cdda_reader.so
- lib/dll/mmedia/ff_mpegv_decoder.so
- lib/dll/mmedia/fildes_streamer.so
- lib/dll/mmedia/http_streamer.so
- lib/dll/mmedia/iff_parser.so
- lib/dll/mmedia/midi_parser.so
- lib/dll/mmedia/ogg_decoder.so
- lib/dll/mmedia/oggi_decoder.so
- lib/dll/mmedia/rawfile_writer.so
- lib/dll/mmedia/stream_reader.so
- lib/dll/mmedia/wav_parser.so
- lib/dll/mmedia/wavfile_writer.so
- lib/dll/mmedia/window_writer.so
- usr/lib/libTremor.so.1
- usr/lib/libTremorS.a
- usr/lib/libaoi.so.1
- usr/lib/libaoiS.a
- usr/lib/libavcodec.so.1
- usr/lib/libavcodecS.a
- usr/lib/libmmconvenience.a
- usr/lib/libmmconvenienceS.a
- usr/lib/libmmedia.a
- usr/lib/libmmedia.so.1
- usr/lib/libmmediaS.a
- usr/lib/libmpegs.a
- usr/lib/libmpegsS.a
- usr/lib/libogg.so.1
- usr/lib/liboggS.a
- usr/lib/libvorbis.so.1
- usr/lib/libvorbisS.a
- usr/lib/libxing_audio.a
- usr/lib/libxing_audio.so.1
- usr/lib/libxing_audioS.a
- usr/photon/bin/mmplay
- usr/bin/playaudio
- npm-qnet.so
- Redundant GNS servers have a window where service could be lost.
If connectivity is lost to a gns process
in server mode while it's acting as a redundant server, and while client
gns processes running on other nodes are registering services,
the server may become out of sync with the other redundant servers.
(Ref# 20008)
- npm-qnet-l4_lite.so
- This DLL has many options to alter how Qnet functions (e.g. timeouts,
retries,
and idle times). You shouldn't use these options unless you're trying to
overcome an issue related to your environment.
Qnet is optimized to function with its default settings.
(Ref# 21298)
- Once Qnet has a domain, you can't set Qnet to not use a domain; you
can only change the domain.
(Ref# 38802)
- You can't use the Qnet “file” resolver
(resolve=file option) to resolve IP addresses.
It currently supports MAC addresses in combination with the option
bind=en.
(Ref# 39612, 38997)
- Qnet treats the _CS_DOMAIN configuration string
differently if it's undefined or set to a NULL string.
If it's undefined, Qnet uses a domain of .net.intra;
if it's set to a NULL string, Qnet applies that as the domain (for
example hostname.).
(Ref# 19676)
- fs-cifs
- pwrite() behavior isn't consistent with other Neutrino
filesystems.
If you open a file with O_APPEND, the offset supplied
to pwrite() doesn't override O_APPEND.
The data is written to the end of the file, regardless of the file
offset supplied.
(Ref# 38576)
- If you unlink() a file on a CIFS mount point, any open
file descriptors for that file become invalid.
(Ref# 38574)
- If you perform a socket operation on a file descriptor of a file on a
fs-cifs mountpoint, the operation fails, but
the errno returned might not be ENOTSOCK.
(Ref# 38572)
- fs-cifs doesn't support POSIX file-locking functions.
(Ref# 38570)
- fs-cifs incorrectly sets an errno of
EPERM instead of EBADF if you attempt
to write to a file opened as O_RDONLY or
O_ACCMODE.
(Ref# 38565)
- If a component of a pathname supplied to a function isn't a directory,
fs-cifs should return ENOTDIR.
It currently returns ENOENT.
(Ref# 38564)
- fs-cifs may return a different errno when the
mkdir() function call fails than those returned by the local
filesystem.
(Ref# 38573)
- PATH_MAX for CIFS (and thus fs-cifs) isn't
1024 as in POSIX.
This is set by both Windows and the CIFS specification.
The pathname length can be up to 255 characters.
(Ref# 38566)
- fs-nfs2
- If you attempt to access a link to a file using a pathname that ends in
slash, the operation fails with an incorrect errno of
EINVAL instead of ENOTDIR.
(Ref# 38560)
- fs-nfs2 doesn't support files larger than 2 GB.
(Ref# 39060)
- fs-nfs2 doesn't correctly implement the options
-w size=n and -w number=n
as described in the fs-nfs2 usage message.
Don't use them.
(Ref# 39031)
- If a path ends in a slash, it must be a directory. When
accessing a link with a trailing slash, fs-nfs2 immediately
returns EINVAL, instead of resolving the link
and reporting errors such as EPERM (permission denied) or
ENOTDIR (not a directory) before returning
EINVAL (invalid argument).
This behavior was seen as an
optimization to reduce network traffic, because this kind of file access
will ultimately fail. Strict POSIX
behavior will be added in a future release. (Ref# 20878)
- fs-nfs2 doesn't support a -B option greater
than 8096.
(Ref# 39022)
- fs-nfs3
- fs-nfs3's exit status is always 255.
(Ref# 38512)
- fs-nfs2, fs-nfs3
- fs-cifs, fs-nfs2, fs-nfs3
- The documentation incorrectly implies that at least one
server-export/mountpoint combination is required on the command line when
you launch fs-cifs, fs-nfs2, or fs-nfs3.
You can invoke the mount command later to add mountpoints.
(Ref# 15446)
- gns
-
- nfsd
- nfsd lets you access files only up to 16 subdirectory levels
deep within the directory exported in the /etc/exports file.
Deeper directory levels and files aren't accessible.
(Ref# 40104)
- slinger
- When slinger is executing a CGI script and setting the
environment variables to be passed to the
script, the environment variable SERVER_ROOT is set to
/ instead of to the directory specified by
HTTPD_SCRIPTALIAS.
The actual current working directory of slinger is correct;
it's just the environment variable that's wrong.
(Ref# 20795)
- tftp
- tftp can terminate with a floating-point exception when
printing statistics from a get or put command when
you're using verbose mode.
(Ref# 20615)
- tftp can fault if you press Enter at the
“To” prompt without supplying the host parameter.
(Ref# 20064)
- rpcgen
- This utility looks for the C preprocessor in the wrong place on
QNX Neutrino hosts.
(Ref# 8461)
Workaround: Create a symbolic link:
ln -s /usr/qnx632/host/qnx6/x86/usr/bin/qcc /usr/bin/qcc
- npm-tcpip-v4.so
- If a packet is smaller than the minimum Ethernet packet size, the
packet may be padded with random data, rather than zeroes.
(Ref# 21460)
- The TCP/IP stack doesn't maintain the statistics for outbound packets
over VLAN interfaces.
(Ref# 16684)
- The TCP/IP stack doesn't maintain the statistics for the number of
input and output bytes or packets if the packets are forwarded via the
fast-forward feature.
(Ref# 23041)
- The TCP/IP stack doesn't maintain proper interface statistics for
the link speed.
(Ref# 27015)
- If the default UDP socket receive-buffer size is set near its limit (for
example sysctl -w net.inet.udp.recvspace=240000), UDP-based
sockets become unreliable.
(Ref# 27386)
- npm-tcpip-v4.so, npm-tcpip-v6.so
- If a packet is smaller than the minimum Ethernet packet size,
the packet may be padded with random data, rather than zeroes.
(Ref# 21460)
- npm-tcpip-v6.so
- For IPv6, the TCP/IP stack could send an ICMP error to ourselves if we
can't successfully solicit the address of the sender of an ICMP echo
request.
(Ref# 38465)
- pppd
- When pppd creates a proxy arp entry,
it does this without the permanent flag, so the entry will time out
after approx 20 minutes, instead of being permanently set.
(Ref# 24103)
- pppd doesn't use the
/etc/ppp/options.ttyname option file.
(Ref# 23743)
- rcp
- This utility sets its user ID to root.
It was reported that you can overrun the source/target file argument
buffers in the utility, giving yourself root access.
Under QNX Neutrino, rcp spawns the cp utility
for local file-copying operations;
it's the cp utility that faults.
When rcp spawns cp, it does so with the credentials
of the user who launched rcp, rather than root's.
(Ref# 22002)
- Starting Photon
- When you start Photon, you might see a
“Cannot attach mouse input report (error code2)” message on
the console.
It's a benign message that you can ignore.
(Ref# 29662)
- PT_CB_ACTIVATE and PT_CB_ARM
- These callbacks don't work with PtText and
PtNumeric.
(Ref# 21608)
Workaround: For a PtText, add this code:
int raw_text_callback( PtWidget_t *widget, void *data, PtCallbackInfo_t
*cbinfo )
{
PtSuperClassRawEvent( PtBasic, widget, cbinfo->event );
return Pt_CONTINUE;
}
When you create a PtText widget, add this code:
PtRawCallback_t text_cb = { Ph_EV_BUT_PRESS | Ph_EV_BUT_RELEASE,
raw_text_callback };
…
PtSetArg( …, Pt_CB_RAW, &text_cb, Pt_LINK_INSERT );
… = PtCreateWidget( PtText, … );
You can use similar code for a PtNumeric widget.
- PdGetOffscreenContextPtr()
- This function leaks memory on MIPS hardware.
(Ref# 8065)
- ptermcs
- This utility core-dumps when saving. The
problem is in PxTerminalBuildCharsets(): if the
“internal” charset is NULL but the “font
charset” is specified, it builds a bad data structure
that causes PxTerminalSaveCharsets() to crash. (Ref# 19568)
- PhAB
- The template editor currently lets you delete or rename the
widget template, but doesn't provide a way to restore the default value.
(Ref# 21969)
- If you're using bash as your shell in Neutrino,
PhAB doesn't populate the list of targets when you try to build an
application.
(Ref# 22850)
- PhAB for Windows
- If you create an application, and then build it, the Make Application
window has an extra unreadable character at the end of each line.
(Ref# 22190)
- If you start PhAB through the IDE on a Windows XP SP2 host,
several security-alert dialogs are displayed, because the
Windows XP SP2 firewall detects the background TCP/IP communication
between the PhAB application and the Photon server.
(Ref# 22282)
Workaround: Configure Windows to unblock.
Once you've done this, Windows won't display the security warnings
when you restart PhAB.
- If you try to copy and paste something in PhAB when running it as a
nonadministrator user, you get an error message:
PhAB: Can't open: "clipboard.phab" (Permission denied).
Please resolve the problem and re-try this operation. (No error)
Thus, copying and pasting is impossible.
(Ref# 39879)
Workaround: Make sure that your HOMEDRIVE and
HOMEPATH environment variables are set to point to a
directory that you have permission to write into.
PhAB for Windows uses the HOME environment variable if
it's set, otherwise it internally sets HOME to
HOMEDRIVE followed by HOMEPATH.
If these aren't valid, then PhAB will encounter difficulties.
- You can't save a PhAB project in a path that contains spaces
(e.g C:\Documents and Settings\some_user\my_phab_app).
(Ref# 39883)
- If you don't have permission to write files in the top-level
directory of the C drive, you won't be able to run certain tools, such as
bindres and usemsg, which are needed for building
PhAB applications.
On Windows Vista, you also have to disable User Account Control, as
described in the list of known issues for
Windows hosts,
later in these notes.
(Ref# 21849, 49312)
- On Windows Vista (if you have write permission in the top-level
directory of the C drive, and you've disabled UAC), you can build
PhAB applications from the
command line and from the IDE, but not from standalone PhAB.
(Ref# 44260, 50061)
- $HOME/.ph/phapps
- Note that this file, which contains a list of the applications that
you want Photon to launch automatically when it starts, must be executable.
(Ref# 22196)
- voyager
- If you use voyager with vserver on a Malta board
or any other platform that doesn't have a Floating Point Unit,
voyager continually fails with a SIGFPE error
when it tries to load a page.
(Ref# 22404)
Workaround: Rebuild the OS image so that it uses
floating-point emulation, by specifying the -fe option to
procnto in the buildfile.
- io-graphics
-
- Alpha on PPC
- If you use alpha drawing functions on PPC targets, and you
draw an image to a memory context and blit it to the screen, the
colors are incorrect.
(Ref# 21458)
Workaround: Don't use a memory context, or draw to one memory
context, blit to another memory context, and then blit to the screen.
- phditto
- If you run gdb over phditto,
gdb hangs, because
the Photon server spawned by phrelay inherits
phrelay's set of ignored signals including
SIGUSR1, which gdb relies on.
(Ref# 24817)
Workaround: Launch pterm windows using pwm's
Desktop Menu (press Alt-Enter
or right-click on the desktop background)
instead of using the Terminal button on the shelf.
Only pterm windows started by shelf inherit the ignored
SIGUSR1.
Another option is to write a wrapper around gdb to reset
SIGUSR1.
- Pt_ARG_SCROLLBAR_WIDTH
- Setting this resource for a PtList or for a compound
widget that includes a PtList has no effect.
(PR 20431)
Workaround: Attach the following callback to the
Pt_REALIZED resource of the list widget:
int
list_realized_cb( PtWidget_t *widget, ApInfo_t *apinfo,
PtCallbackInfo_t *cbinfo )
{
PtGenListWidget_t *list = (PtGenListWidget_t*)widget;
unsigned short *width;
// NOTE: Use the width that the user set in PhAB.
PtGetResource( widget, Pt_ARG_SCROLLBAR_WIDTH, &width, 0 );
// This code sets the actual sizes of scrollbar(s).
if( list->scrollbar )
PtSetResource( list->scrollbar, Pt_ARG_WIDTH, *width, 0 );
if( list->hscrollbar )
PtSetResource( list->hscrollbar, Pt_ARG_HEIGHT, *width, 0 );
// This is a workaround to make the list widget
// position (anchor) the scrollbars correctly (with the new size).
PtSetResource( widget, Pt_ARG_SCROLLBAR_WIDTH, *width - 1, 0 );
PtSetResource( widget, Pt_ARG_SCROLLBAR_WIDTH, *width, 0 );
return Pt_CONTINUE;
}
If you're using a compound widget such as a PtCombobox,
use this code:
int combo_realized_cb( PtWidget_t *widget, ApInfo_t *apinfo,
PtCallbackInfo_t *cbinfo )
{
PtGenListWidget_t *list;
PtWidget_t *wp = widget;
unsigned short *width, list_width;
// NOTE: Use the width that the user set in PhAB.
PtGetResource( widget, Pt_ARG_CBOX_BUTTON_WIDTH, &width, 0 );
// Find the list widget in the combo
while( (wp = PtWidgetFamily( widget, wp )) ) {
if( PtWidgetIsClass( wp, PtList ) ) {
list = (PtGenListWidget_t*)wp;
break;
}
}
if( !wp )
return Pt_CONTINUE;
list_width = *width + 2;
// This code sets the actual sizes of scrollbar(s).
if( list->scrollbar )
PtSetResource( list->scrollbar, Pt_ARG_WIDTH, list_width, 0 );
if( list->hscrollbar )
PtSetResource( list->hscrollbar, Pt_ARG_HEIGHT, list_width, 0 );
// This is a workaround to make the list widget
// position (anchor) the scrollbars correctly (with the new size).
PtSetResource( wp, Pt_ARG_SCROLLBAR_WIDTH, list_width - 1, 0 );
PtSetResource( wp, Pt_ARG_SCROLLBAR_WIDTH, list_width, 0 );
return Pt_CONTINUE;
}
- helpviewer
- If you aren't using ksh or sh as your login shell,
the environment variables that the helpviewer uses aren't
initialized.
(Ref# 27250)
Workaround: Set QNX_HELP_HOME_PAGE to
/usr/qnx632/target/qnx6/usr/help/product/momentics/bookset.html,
and QNX_HELP_PATH to
/usr/qnx632/target/qnx6/usr/help/product
(assuming you installed QNX Momentics in the default location).
If you run the helpviewer as one user, and you then log in
as another user and search the documention, helpviewer's
indexer fails with a message of “Cannot open
/var/help/usr/qnx632/target/qnx6/usr/help/product.”
(Ref# 25628)
Workaround: Log in as root and type:
rm -r /var/help/usr
and then generate the index.
- qconfig
- There are two versions of qconfig installed in three places
on self-hosted Neutrino systems:
- $QNX_HOST/usr/bin/qconfig — this is always the
correct version
- /usr/bin/qconfig — this is the correct version
if you've installed the SP2 to SP3 Upgrade on a 6.3.0 SP2 system;
it's the wrong version if you've done a clean installation of
6.3.0 SP3.
- $QNX_TARGET/x86/usr/bin/qconfig — this version
is obsolete, and you don't need it anyway
(Ref# 42105)
Workaround: Do the following:
- Log in as root.
- cp $QNX_HOST/usr/bin/qconfig /usr/bin/qconfig
- rm $QNX_TARGET/x86/usr/bin/qconfig
- echo.exe
- On Windows, the QNX-provided echo.exe
interprets the Windows \ separator as an escape
character. As a result, environment variable settings won't
work if you use \ as a path separator; use
/ instead. (Ref# 19924)
- PATH and quotation marks
- Certain programs (e.g. Norton Ghost) add directories inside double
quotation marks (e.g. ...;"c:\Program Files\Norton Ghost\";...)
to your PATH environment variable.
This causes the Cygwin spawn() function to fail, which in
turn causes cp to fail when called by ln-w.
(Ref# 20046)
Workaround: Modify your PATH environment variable
and remove any quotation marks.
- MAKEFLAGS
- Microsoft Visual Studio also uses the MAKEFLAGS
environment variable, but in a much different way than QNX Neutrino does.
The result is that Microsoft Visual Studio no longer works after you've
installed QNX Momentics.
Workaround: If you want to work with Microsoft Visual Studio (MSVS)
after installing QNX Momentics on the same system, do the following:
- Open a command window and run cmd.
- Type set.
- Find the value for MAKEFLAGS and save it.
- Type set MAKEFLAGS.
- Do your MSVS work.
- To work with QNX Momentics again, type:
set MAKEFLAGS=saved_makeflags_value
- Permissions
- If you don't have permission to write files in the top-level
directory of the C drive, you won't be able to run certain tools, such as
bindres and usemsg, which are needed for building
PhAB applications.
On Windows Vista, you also have to disable User Account Control, as
described below.
(Ref# 21849, 49312)
On Windows Vista (if you have write permission in the top-level
directory of the C drive, and you've disabled UAC), you can build
PhAB applications from the
command line and from the IDE, but not from standalone PhAB.
(Ref# 44260, 50061)
- 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:
- 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.)
- Click on the Tools tab.
Scroll down until you find Disable UAC, and then click that line.
- Press the Launch button.
- A cmd window will open.
When the command is done, you can close the window.
- 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.
 |
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.
The installers can't update the Gnome menu on some distributions of Linux.
(Ref# 48770)
After you've installed your development suite, you'll
find an extensive set of online documentation in HTML
format:
- On Linux and Windows hosts,
you can read it in the Integrated Development Environment's help system.
- On self-hosted QNX Neutrino systems,
you can read it in the Integrated Development Environment's help system or
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, QNX Neutrino Programmer's Guide,
Library Reference, Utilities Reference, etc.).
 |
- On Neutrino hosts, the QNX Momentics Development Suite for x86 Targets
doesn't include documentation in the IDE's help system, to help reduce
the size of the download.
- The online documentation also includes the installation and release notes.
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.
|
If you have any questions, comments, or problems with a QNX
product, please contact Technical Support.
For more information, see the How to Get Help chapter of the
Welcome to QNX Momentics guide or visit our website,
www.qnx.com.
This section lists the corrections and changes made since
QNX Momentics 6.3.0 SP3.
Change
|
Ref # |
The System Architecture guide no longer refers to io-cam, which hasn't yet been implemented.
|
15829 |
The entries in the Utilities Reference indicate which drivers are shipped only in the BSPs that need them.
|
18023 |
The Writing an IPL chapter of Building Embedded Systems now describes image_paddr as The physical address of the image, which can be in ROM or RAM, depending on the type of image.
|
22172 |
For mkefs, mketfs, and mkifs, a perms attribute of “*” results in permissions of 0666 for inline files.
|
22371 |
We've updated the list of supported adapters in the entry for devb-ncr8 in the Utilities Reference.
|
22482 |
We've updated the instructions for calibrating a touchscreen in the
entry for calib in the Utilities Reference.
|
23263 |
The usbd_setup_control() function isn't implemented, so the USB DDK Developer's Guide now tells you to use usbd_setup_vendor() instead.
|
23284 |
The System Architecture guide now mentions that sempahores don't support priority inheritance.
|
23430 |
The Neutrino User's Guide now says that the $HOME/.ph/shelf/shelf.cfg file is created when you first modify your shelf's configuration.
|
24077 |
The entry for startup-bios in the Utilities Reference now describes the -I option.
|
24418 |
You should always specify the -r option to a
devf-* driver, unless you're trying to debug a
flash corruption issue or you don't have the time to repair any damage.
|
26561 |
The Writing a Resource Manager chapter of the Neutrino Programmer's Guide now warns that if multiple threads in the same client perform simultaneous operations with select() and ionotify(), notification races may occur.
|
27086 |
We corrected the description of the LOSES_TX_INTR flag in the Character DDK Developer's Guide.
|
27484 |
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 Compiling and Debugging chapter of the Neutrino Programmer's Guide now has a section on using the __QNX__ and __QNXNTO__ preprocessor symbols to add QNX- or Neutrino-specific code to an application.
|
29243 |
The stty utility doesn't support the lkhflow and lksflow options; we've corrected the entry for stty in the Utilities Reference.
|
29497 |
The Power Management User's Guide now says that the default action (if the unlink() function is not overridden) is to allow the unlinking.
|
29762 |
We've filled in the “Returns” section for the callbacks in the Power Management User's Guide.
|
29763 |
In the USB DDK Developer's Guide, we corrected the description of EPROGMISMATCH in the documentation for usbd_connect() and added the return code of EOK for usbd_open_pipe().
|
29850 |
The Adaptive Partitioning User's Guide now says that the server (not the client) sets _NTO_CHF_FIXED_PRIORITY to prevent partition inheritance.
|
29874 |
You don't need I/O privileges to use the result of the mmap_device_memory() function.
|
30019 |
We've expanded the sections about priority inheritance for mutexes and messages in the QNX Neutrino Microkernel chapter of the System Architecture guide.
|
37364 |
On ARM platforms, you can't restart devf-ram with a different size from what you originally specified; we've updated the documentation for devf-ram and shm_ctl().
|
38256 |
The documentation for devu-prn now states that this driver also runs on ARM, MIPS, and PPC targets.
|
38301 |
Regardless of your terminal settings specified, the use utility includes a line break after 80 characters.
|
38346 |
The documentation for mmap_device_memory() now mentions that the PPC eieio (Enforce In-Order Execution of I/O) command is defined in <ppc/inout.h>.
|
38395 |
The Process Manager chapter of the System Architecture guide now includes a section on ordering mountpoints.
|
38426 |
The description of socket() now refers to the examples of setting the SOCK environment variable in the Neutrino User's Guide.
|
38524 |
The Adaptive Partitioning User's Guide now states that when you create a partition, its budget comes from its parent's budget, not from the System partition's.
|
38609 |
The entry for devb-umass in the Utilities Reference now describes the csw_ignore option.
|
38634 |
We've corrected the description in the Neutrino Library Reference of what the clock() function returns. (Ticket ID 73133)
|
38645 |
The num_ed and num_td options to devu-ehci.so, devu-ohci.so, and devu-uhci.so are independent of the nosmm option.
|
38667 |
The entries for devn-pcnet, devn-rtl, and devn-pegasus in the Utilities Reference now describe the probe_phy option.
|
39152 |
We've corrected the example of looping for the usbd_attch() function in the USB DDK Developer's Guide, so that it loops over all the buses.
|
39308 |
We've updated the descriptions of the flags and rtype arguments to the descriptions of the usb_setup* functions in the USB DDK Developer's Guide.
|
39357 |
The documentation for devf-generic now mention that you might have to create a custom variant of it for your embedded design.
|
39584 |
The entry for devu-prn in the Utilities Reference now describes the -m option, which sets the maximum size of the output buffer.
|
39602 |
The documentation for snd_pcm_plugin_read() and snd_pcm_plugin_write() in the Audio Developer's Guide now give the correct description of an error of -EINVAL.
|
39753 |
The documentation for mkifs now describes the raw.boot, binary.boot, srec.boot, and elf.boot bootfiles.
|
39923 |
The Conventions for Makefiles and Directories chapter of the Neutrino Programmer's Guide now includes more details about the GNU configure.
|
40627 |
The ARM Memory Management appendix of the Neutrino Programmer's Guide now has more information about allocating memory on ARM targets.
|
40865 |
The USB DDK Developer's Guide now describes the usbd_topology_ext() and usbd_hcd_ext_info() functions.
|
40883 |
The Neutrino User's Guide now mentions that you can't pass arguments to an alias, but you can to a shell function.
|
40921 |
We've added a note about I2C drivers to the QNX Neutrino Technotes.
|
40947 |
We've expanded and corrected the description of show_vesa in the Utilities Reference.
|
41020 |
The entries in the Utilities Reference now indicate if the given utility needs to have the setuid or setgid permission set.
|
41074 |
The System Architecture guide now mentions that you can assign names to threads.
|
41406 |
The Utilities Reference now has an entry for devc-con-hid.
|
41834 |
The entry for diskboot in the Utilities Reference now points out that using the -o option doesn't cause the specified command to be started; it merely specifies the options to use if the command is started.
|
41884 |
The documentation in the IDE is now arranged into plugins, so links between the IDE User's Guide and other documents now work again.
|
41911 |
The entry for devi-hid in the Utilities Reference no longer refers to calib; you need a calibration file only for touchscreens.
|
42252 |
The Utilities Reference now directs you to the
Phindows Connectivity User's Guide for information about
phindows.
|
42339 |
The Neutrino User's Guide now says that on startup, ksh runs /etc/profile if it's readable; this file doesn't need to be executable.
|
42679 |
We've added a description of the SPI (Serial Peripheral Interface) framework to the QNX Neutrino Technotes.
|
43487 |
The “Priority range” section of the Programming Overview chapter of the Neutrino Programmer's Guide now gives the range of priorities as 1-255.
|
43655 |
In the Network DDK User's Guide, we corrected the name and returned values of MDI_DeRegister() and MDI_SetAdvert(), and we added MDI_Register() to the entry for MDI_Register_Extended().
|
43682 |
The documentation for mkifs now describes the main bootfiles (e.g. bios_nokbd.boot).
|
43969 |
The Printing chapter of the Neutrino User's Guide now mentions if the system crashes, you might have to manually delete the lpd.lock file.
|
43971 |
We corrected the information in Building Embedded Systems about the startup_info_mem and startup_info_mem_extended structures.
|
44013 |
We corrected the example of starting Qnet with CRC checking in the Neutrino User's Guide.
|
48028 |