This chapter describes open problems for this release of DYNIX/ptx. The problem reports are separated into the following categories:
The numbers in parentheses identify the problems in the Sequent problem-tracking system. Unless otherwise noted, each problem will be fixed in a later release of the operating system.
If background savecore is used, the following message may appear when the system is booted:
Crashdump warning:existing dump A new dump will not be taken when needed:(use savecore to clear it)
Workaround: The message is invalid and can be ignored.
When backing up filesystems that are 1 GB or larger, the dump(1M) command will not work with a blocking factor of more than 32 KB.
Workaround: Use a blocking factor of 32 KB.
If you run fmli when the filesystem is out of space, the program may create a file called.ott, whose length is zero. When you run fmli again, it may detect that this file exists, not create a new file, and then fail with a message such as the following:
Could not access object Menu.dbadmin
The problem occurs because the .ott file was not created correctly.
Workaround: Delete the .ott file.
Because of a security fix in V4.4.2, getty now pops off streams modules, breaking the Annex® rtelnet code that carefully sets up a pseudoterminal and calls getty.
Workaround: Until this behavior is corrected, change the Annex code (and any other code that calls getty on a pseudoterminal) to use uugetty instead.
In the DYNIX/ptx V4.6 implementation of the Korn shell, the ENV environment variable applies only to interactive shells. For compliance with the UNIX98 specification, the file referred to by the ENV variable should be executed at the beginning of each shell invocation.
Workaround: None.
The ksh internal wait command does not always return the correct value. The wait command should return 0 only if it is called with no parameters and all process IDs known by the invoking shell have been terminated. An intermittent case can occur where wait returns 0 when a PID is passed as the argument but the process has exited. In these circumstances, wait should return a value of 127.
Workaround: Do not rely on wait to return a value of 127, and also check for 0.
When you change the priority of a print job, its position in the print queue should change to reflect the new priority. The priority shows that it has changed, but the position of the print job does not change.
Workaround: Move the job to the head of the print queue by using the lp -H option. For example:
lp -i testlp1-45812 -H immediate
If a printer is configured with the standard interface (from /usr/spool/lp/model) and the user specifies the nofilebreak option to lp, the option is interpreted incorrectly. The nofilebreak option should prevent a form feed from being inserted between files; however, lp inserts the form feed.
Workaround: Edit the shell script for the standard interface (/usr/spool/lp/model/standard). Locate the following lines near the end of the script.
if [ -n "${FF}" -a "yes" = "${nofilebreak}" ] then echo "${CR}${FF}c" fiChange the value yes to no.
The mailx command does not accept login names that contain characters with the eighth bit set. For compatibility reasons across systems on a network, login names should be restricted to characters that do not set the eighth bit. For example, use only U.S. ASCII characters.
Workaround: None.
When mkvtoc is used to install a VTOC on a disk, it does not verify that the disk type specified on the command line matches the physical disk type. Also, it does not verify that the disk capacity specified in the VTOC does not exceed the physical space available on the disk.
Workaround: Use the ptx/ADMIN "Create a Custom VTOC File" option to modify a VTOC and the "Create a VTOC" option to install a VTOC on a disk. ptx/ADMIN performs the necessary validations. If you run mkvtoc manually, be sure to specify the correct disk type and ensure that the disk capacity specified in the VTOC does not exceed the capacity of the disk.
Characters with the eighth bit set (for example ISO 8859-1 characters 0x80 - 0xff), cannot be used in nawk variable names. If 8-bit characters are used, nawk flags the variable with an illegal statement error message.
Workaround: None. Use only U.S. ASCII characters in variable names.
The nroff command does not print an error message or exit with an error status when it encounters a macro that is not defined. This can make it difficult to find errors in nroff source files.
Workaround: None.
If a package's prototype file specifies a search path, pkgmk(1) must be invoked with the -b basedir option. If this option is omitted, pkgmk will make the intended package only if the object files reside in the current directory.
Workaround: Specify the -b basedir option when executing pkgmk.
The Bourne shell (/bin/sh) does not allow variable names to contain characters with the most significant bit set (for example, ISO 8859-1 characters between 0x80 - 0xff).
Workaround: None. Do not use 8-bit characters in variable names.
/var cannot be a filesystem because it is needed during the early stages of the boot process as well as during system shutdown.
Workaround: None.
The tic terminfo compiler will fail to compile a tic source file if the first character on the first line of a terminfo entry has the most significant bit set. This problem affects only the first character in the alias1 name; 8-bit characters can be used in the names for alias2, alias3, and so on. Refer to terminfo(4) for more information.
Workaround: Use only U.S. ASCII characters for the first character in alias1. You can use any 8-bit characters in alias2, alias3, and so on.
The menu system does not allow the removal of multiple swap devices.
Workaround: Remove the swap devices one at a time.
If ptx/ADMIN does not start when you issue the menu command, the system may have run out of message queues. To determine whether this is the case, run the following command:
$ /etc/kmstune base.msg
In the output, if the nfail statistic is greater than zero and the maxinuse statistic is equal to the nred statistic, the system is out of message queues.
Workaround: To allow the system to configure additional message queues, take these steps:
Locate the following line in the script /etc/ktune.d/base.msg and increase number.
red=number
Excute the base.msg script.
The menu system does not support the -v bootflag.
Workaround: To set the -v flag, edit the /etc/rc2.d/bootflags file by hand.
ptx/ADMIN dumps core when executed on terminals using 8-bit control sequences. For example, on a vt200 with 8-bit control, CS1 is \\233 instead of \\E[.
Workaround: Set up the terminal for use with 7-bit control sequences and use a terminfo file with 7-bit control sequences.
The script /etc/ktune.d/base.msg specifies the maximum number of message queues that can be configured on the system. To run certain applications such as DB2, you will need to increase the default maximum value.
Workaround: To increase the value, take these steps:
Locate the following line in the script /etc/ktune.d/base.msg and increase number.
red=number
Excute the base.msg script.
The operating system cannot boot if either the root filesystem or the primary swap partition is on a raw disk.
Workaround: Ensure that there is a VTOC on the disks containing the root filesystem and the primary swap partition.
If a system is running a CPU-bound process, the kernel may not allow the system to be taken off line. This affects the tmp_ctl system call and the offline command.
Workaround: Send a SIGSTOP to the process running on the system, take the system off line, and then send a SIGCONT to the process that you stopped.
If you modify the size of the primary swap partition, the operating system does not recognize the change. This occurs because the label for the primary swap partition includes its size. When you modify the VTOC to adjust the size of the primary swap partition, the label is not updated.
Workaround: After modifying the VTOC, reboot the system with the -L flag to recreate the swap label with the new size.
Once a file has been successfully opened for writing, the kernel does not allow the ftruncate() system call to succeed, regardless of the current file permissions (like the write() system call). The ftruncate call fails and issues the message permission denied.
Workaround: None.
When the system is attempting to transition from single-user to multiuser mode, a specific sequence of events can cause multiple shells to access the system console simultaneously, resulting in confusing behavior.
An example of this behavior is that if you were to cd to a new directory and then type ls multiple times, you might see different output from the different invocations of ls. This occurs because the two shells have different working directories, and therefore, the output from ls will be different, depending on which shell gets the console input that tells it to run ls.
The sequence of events causing this condition is as follows:
While the system is in single-user mode, the user starts a new job control shell (either ksh or csh.)
While still in this shell, the user attempts to go to multiuser mode with the init 2 command.
The system fails to go to multiuser mode because of a failure in one of the /etc/rc2.d startup scripts and returns to single-user mode.
At this point, the job control shell that was started manually before the init 2 command is still there. In addition, init has spawned a new single-user shell. Both of these shells have read/write access to the system console, causing the confusing behavior.
Workaround: To get out of this state, use kill -9 pid to kill the older shell. To determine which shell to kill, type ps with no arguments. This will display only the new shell--do not kill this shell. Note the PID of this shell and then type ps -ef to display all of the processes in the system. In the output, find the ksh or csh shell having a different PID and then use kill -9 to kill it.
If the bootstring is invalid (for example, it does not point to a valid filesystem or there is no kernel), the stand-alone kernel (SAK) can go into a boot-fail-boot loop.
Workaround: Stop the boot and correct the bootstring. Then reboot the system.
If a kernel printf() is interrupted while it is formatting into the kernel log buffer and another printf() is attempted, the buffer structure will be compromised.
Workaround: None.
A user can be assigned to a specific application region (the user's login region) and will be placed in that region at login time. If pwconv is run after the pwunconv utility, the login regions for all users will be set to system.
Workaround: The user's login region is stored in the /etc/shadow file. Save this file before running pwunconv/pwconv. When these operations are complete, add the login regions specified in the saved /etc/shadow file to the new version of the file.
A filesystem cannot be created on a raw disk device.
Workaround: Install a VTOC on the raw disk or place it under ptx/SVM control and then create the filesystem.
If a region is created with a large amount of memory, it is possible to exhaust the entire free memory in the system. The processes in the system region will wait for memory and may not make any progress. Booting the system may also be slow.
Workaround: When assigning memory to a region, be sure that a reasonable amount of memory is still available to the system.
In previous releases, a new VTOC could be written to a device that already had a VTOC in place as long as none of the busy partitions were affected. In V4.5, this operation will fail for disks that are shared by ptx/CLUSTERS. An error message such as the following will be displayed:
Unable to open any disk which matches this name
Workaround: Run the devdestroy command to remove the VTOC driver from the disk. You must run this command from each node in the cluster. Next, from a single node, use mkvtoc to install the new VTOC on the disk. Then run devbuild on each node in the cluster to make the new partitions available.
When doing an mt offline or mt rewind command on an 8mm tape drive (tx), the following time-out error may appear on the console. Whether the error occurs depends on how far the drive has to rewind the cartridge.
04: WARNING: scsitape:5::tx0: SSI Hard Error on SCSI Start/Stop or Load/Unload Unit. 04: scsitape:6::tx0: SCSI target timed out (HBA Error=0x5 SCSI Error=0x0)
The mt command might also exit with an error status. If the command is being executed from a shell script, the error status may cause the script to fail.
Workaround: To increase the time-out period, increase the value of sct_space_timeout in scsitape_space.c and recompile the kernel.
If the console baud rate is changed through the firmware from 9600, the output from the DYNIX/ptx multiuser or single-user bootup shell scripts will be garbled.
Workaround: Leave the console baud rate at 9600 at boot time.
The /etc/gettydefs file sets terminals to SANE, giving them a default set of stty modes on a login. This does not appear to work on the console, such that any stty settings from the previous user remain in effect for the next login.
Workaround: Log in on the console as any user (root preferred). If the user can reset the terminal modes using stty(1), then do so. If the user cannot, then do not log out. Log in from another terminal and reset the modes on the console from that terminal, by executing stty sane < /dev/console.
devctl may not find devices as expected in a cascaded switched fabric when the cascaded switched fabric changes its Principal switch or it is fragmented because of E-link problems.
Case 1. Cascaded switched fabric changes its Principal switch. Using devctl -c fabricX to find new target devices on the cascaded switched fabric works, but devctl -c ffX or devctl -c quadX may not find all of the devices. The operating system logs the following message(s) and does not find any new target devices or link FC Host Adapters to the existing fabric.
warning:coalesce +fabric1 with fabric3: objects have unique IDs! :device=+fabric1:device=fabric3:ees_region=system:Fri Aug 27 15:01:29 1999
Workaround. Deconfigure everything under all FC Host Adapters that are connected to the cascaded switched fabric. (The cascaded switched fabric can be identified from the above coalesce message. In the example, it is fabric3.) Then probe all of the FC Host Adapters. Note that you will get a different fabric name.
Case #2. Cascaded switched fabric is fragmented. Essentially the single fabric is broken into multiple fabrics.
devctl -c fabricX may not find any new target devices as some FC Host Adapters in the cascaded switched fabric may not have a working path to some of the target devices in the cascaded switched fabric. The operating system might not log any error messages.
devctl -c ffX or devctl -c quadX may fail to link FC Host Adapters connected to the principal switch to the existing fabric as it may not have a working path to some of the target devices in the cascaded switched fabric. The operating system might not log any error messages.
devctl -c ffX or devctl -c quadX may fail to link FC Host Adapters connected to a Subordinate switch. It will create a new fabric object and the operating system may log the following error message(s).
warning:coalesce +fabric1 with fabric3: objects have unique IDs! :device=+fabric1:device=fabric3:ees_region=system:Fri Aug 27 15:01:29 1999
Workaround: Make sure that the cascaded switched fabric is not fragmented by inspecting and correcting E-links and then rerun the devctl command.
If devices fail because of a link failure and the fabric is then deconfigured, the devices will not be reconfigured when the fabric is probed after the link has been restored.
Workaround: (1) After a link failure, remove the fiber optic cable that connects the FC Host Adapter to the switch/loop, and then put it back firmly. The devices will start working. Deconfiguring and reconfiguring the fabric is not required. (2) If the first workaround was not successful or you do not want to use that method, deconfigure the devices under the fabric, the fabric, and the FC Host Adapter. Insert the fiber optic cable firmly on both ends and then probe on the quad. All devices under the FC Host Adapter should then be configured. Do not probe the FC Host Adapter after deconfiguring the devices under the fabric and the fabric itself. If you deconfigure the fabric, you must deconfigure the FC Host Adapter and then probe on the quad. If neither of these workarounds is successful, there is another problem on your system.
Some I/O requests that time out (because of a device or cable failure) will take three minutes or more to fail the write request. In some extreme cases, applications such as databases that use timers to validate write operations will time out and fail before the operating-system timer expires. This problem has been seen only on Oracle® versions earlier than 7.3.2.
Workaround: None.
When you force a system panic, there may be a delay before the output from the panic begins to display on the console. The delay is temporary and no output messages will be lost.
Workaround: None.
The FORTRAN library contains routines GETUSCLK and USCLK_INIT that may conflict with user-defined names. If routines SECNDS or GETUSCLK are used, the microsecond clock is initialized by the FORTRAN runtime library and should not be initialized by the user program.
Workaround: Use these names only for function calls. A FORTRAN user should not initialize the microsecond clock with usclk_init(), because the FORTRAN runtime library will have already initialized it.
The read routines used in libcurses do not check for EINTR when EOF is read. Applications that use libcurses may see an EOF returned when a program has been continued after a suspend.
Workaround: The workaround used is dependent on the application. If input is in raw mode, when the user types a Ctrl-D, a Ctrl-D character will be seen rather than an EOF.
The wide-character interface functions in libcurses (such as waddch()) currently handle only 16-bit wide characters. These functions assume the wide character is in the lower 16 bits of the argument.
Workaround: If a code set uses 32-bit wide characters, the libc function wctomb() can be used to translate the wide character to a multibyte character. Then the standard libcurses function (for example, addch()) can be called.
In the physpath(8) man page, the example shown for the sn token is incorrect.
Workaround: The example should be as follows:
This physical path descriptor describes the first partition of a disk whose vendor ID is "IBM OEM," product ID is "DCHS09X," and serial number is "680ADE0B:"
sn(IBM OEM,DCHS09X,680ADE0B)disk(1)
The wchrtbl(1M) command generates an LC_CTYPE definition file in 16-bit format, assuming that the input consisted of 16-bit wide characters. Correspondingly, the wctype() and wconv() functions expect the wide characters passed in as arguments to be in 16-bit wide character format. Currently, code sets of width greater than 2 cannot be fully supported.
Workaround: None.
Debuggers print incorrect values for function arguments that have been declared as float, but which the compiler passes as double because they have not been prototyped.
Workaround: Step the program until the argument is used within the function. At that point the value will be correct because the compiler will have converted it back to float. Or use prototyping for functions with float arguments.
In DYNIX/ptx V4.x, the C compiler stores long double variables in the same manner as double variables; each variable requires 8 memory bytes. SVR4.0 also stores the variables in the same manner as 8-byte double variables, but each variable requires 12 memory bytes. ABI and SVR4.2 store the variables as true 10-byte, extended-precision, floating-point values; each variable requires 12 memory bytes.
Programs using long double variables are not compatible with SVR4 or other ABI systems, including DYNIX/ptx V4.x. Recompilation will be required when moving programs with long double variables to or from DYNIX/ptx V4.x.
Workaround: None.
An asm statement that occurs both outside of a function and after the first function in a C program may not work as expected. In the following example, var may be placed in .text space instead of .data space:
asm(" .data"); asm("var: .long 1");
Workaround: Put all of the asm statements in any source file (except those residing within functions) at the beginning of the file and before the first function in the file.
The triggering of events that are comprised of multiprocess conjunctions may be anomalous. Two situations can cause this. The first occurs when one or more of the stop condition expressions involves a process executing within a function as illustrated by the following command.
stop p1@send && p2@receive
The anomaly can occur because the debugger evaluates p1@send as true from the time p1 enters send through the time p1 executes the instruction immediately after the call to send. So if p1@send is true and p2 enters receive just when p1 returns from send, the conjunction becomes true and the stop event is triggered. The anomaly is that p1 is no longer in send. Its program counter no longer lies within the range of send.
The second anomaly is similar to the first but involves program data items in multiple processes. Consider the following debugger command:
stop p1@ideal==1 && p2@reality==0
This command causes watchpoints to be set on p1@ideal and p2@reality. When p1 assigns 1 to p1@ideal, the debugger evaluates p1@ideal==1 as true until p1 assigns it some other value. So if p1@ideal is true and p2 assigns 0 to p2@reality, the conjunction becomes true and the stop event is triggered. The anomaly can occur because p1 is still executing while the conjunction is being evaluated. p1 may change p1@ideal after the evaluation, but before the triggering. When the triggering occurs, p1@ideal==1 is no longer true. This is essentially a race condition between expression evaluation and triggering.
Workaround: Be aware that these anomalies can occur in conjunctive event expressions.
If a debugged process is sleeping in a system call such as wait() and you halt the process and then attempt to call a function in the process from the debugger, the process will continue to sleep in the system call instead of executing the called function.
Workaround: Avoid calling functions from the debugger when the process is not stopped in user-level code.
debug> !echo 'Quoted String'
Q
edb cannot set a breakpoint at a member function of a nested class unless the member functions of that nested class are in the first object file linked into the executable.
Workaround: Change the order of the object files specified to the linker.
When there is both a class at the file scope and a nested class with the same name, edb gives information about the nested class for show X instead of using information about the class at the file scope.
Workaround: None.
edb cannot access global data from a shared object that was used with dlopen().
Workaround: None.
The ptx/C++ compiler supports two forms of long double. The default is eight bytes, the same as double, and matches the long double data type supported by the ptx/C compiler and by libc functions. An alternate form is 12 bytes, as required by the System V ABI for Intel processors. This form is specified by the c++ option -abilngdbl. edb cannot distinguish between the two forms and supports only the eight-byte form. Printing a long double value will show only eight bytes, and using the exec command to assign a new value will store only 8 bytes.
Workaround: None. We do not expect edb to ever support 12-byte long doubles.
edb handles the argument list for a function with a struct return value incorrectly when the function has been compiled with the ptx/C++ compiler.
Workaround: None.
edb fails intermittently when step over is specified for a particular process.
Workaround: Change the current job and then use step over for that new default job.