1da2e3ebdSchin# 2da2e3ebdSchin# CDDL HEADER START 3da2e3ebdSchin# 4da2e3ebdSchin# The contents of this file are subject to the terms of the 5da2e3ebdSchin# Common Development and Distribution License (the "License"). 6da2e3ebdSchin# You may not use this file except in compliance with the License. 7da2e3ebdSchin# 8da2e3ebdSchin# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9da2e3ebdSchin# or http://www.opensolaris.org/os/licensing. 10da2e3ebdSchin# See the License for the specific language governing permissions 11da2e3ebdSchin# and limitations under the License. 12da2e3ebdSchin# 13da2e3ebdSchin# When distributing Covered Code, include this CDDL HEADER in each 14da2e3ebdSchin# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15da2e3ebdSchin# If applicable, add the following below this CDDL HEADER, with the 16da2e3ebdSchin# fields enclosed by brackets "[]" replaced with your own identifying 17da2e3ebdSchin# information: Portions Copyright [yyyy] [name of copyright owner] 18da2e3ebdSchin# 19da2e3ebdSchin# CDDL HEADER END 20da2e3ebdSchin# 21*7c2fbfb3SApril Chin 22da2e3ebdSchin# 23*7c2fbfb3SApril Chin# Copyright 2008 Sun Microsystems, Inc. All rights reserved. 24*7c2fbfb3SApril Chin# Use is subject to license terms. 25da2e3ebdSchin# 26da2e3ebdSchin 27da2e3ebdSchin# 28da2e3ebdSchin# ERRATA.txt 29da2e3ebdSchin# 30da2e3ebdSchin# Errata/problems/notes about problems in the current sources 31da2e3ebdSchin# 32da2e3ebdSchin 33da2e3ebdSchin######## Errata #001: ######## 34*7c2fbfb3SApril ChinThe usage of |posix_spawn()| has been manually disabled because there seems to be a 35*7c2fbfb3SApril Chinrace condition which cases sporadic failures like this: 36*7c2fbfb3SApril Chin-- snip --. 37*7c2fbfb3SApril Chin$ builtin | fgrep sum | fgrep sum 38*7c2fbfb3SApril Chin/usr/ast/bin/sum 39*7c2fbfb3SApril Chin/usr/bin/sum 40*7c2fbfb3SApril Chin$ builtin | fgrep sum | fgrep sum 41*7c2fbfb3SApril Chinfgrep: fgrep: cannot execute [Exec format error] 42*7c2fbfb3SApril Chin-- snip --. 43*7c2fbfb3SApril ChinThe following files have been changed: 44da2e3ebdSchin-- snip -- 45*7c2fbfb3SApril ChinIndex: src/lib/libast/sparcv9/include/ast/ast_lib.h 46*7c2fbfb3SApril Chin=================================================================== 47*7c2fbfb3SApril Chin--- src/lib/libast/sparcv9/include/ast/ast_lib.h (revision 888) 48*7c2fbfb3SApril Chin+++ src/lib/libast/sparcv9/include/ast/ast_lib.h (working copy) 49*7c2fbfb3SApril Chin@@ -160,7 +160,7 @@ 50*7c2fbfb3SApril Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */ 51*7c2fbfb3SApril Chin #define _lib_vfork 1 /* vfork exists and it works */ 52*7c2fbfb3SApril Chin #define _real_vfork 1 /* vfork child shares data with parent */ 53*7c2fbfb3SApril Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */ 54*7c2fbfb3SApril Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */ 55*7c2fbfb3SApril Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */ 56*7c2fbfb3SApril Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */ 57*7c2fbfb3SApril Chin #define _hdr_string 1 /* #include <string.h> ok */ 58*7c2fbfb3SApril ChinIndex: src/lib/libast/sparcv9/src/lib/libast/ast_lib.h 59*7c2fbfb3SApril Chin=================================================================== 60*7c2fbfb3SApril Chin--- src/lib/libast/sparcv9/src/lib/libast/ast_lib.h (revision 888) 61*7c2fbfb3SApril Chin+++ src/lib/libast/sparcv9/src/lib/libast/ast_lib.h (working copy) 62*7c2fbfb3SApril Chin@@ -139,7 +139,7 @@ 63*7c2fbfb3SApril Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */ 64*7c2fbfb3SApril Chin #define _lib_vfork 1 /* vfork exists and it works */ 65*7c2fbfb3SApril Chin #define _real_vfork 1 /* vfork child shares data with parent */ 66*7c2fbfb3SApril Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */ 67*7c2fbfb3SApril Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */ 68*7c2fbfb3SApril Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */ 69*7c2fbfb3SApril Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */ 70*7c2fbfb3SApril Chin #define _hdr_string 1 /* #include <string.h> ok */ 71*7c2fbfb3SApril ChinIndex: src/lib/libast/sparcv9/src/lib/libast/FEATURE/lib 72*7c2fbfb3SApril Chin=================================================================== 73*7c2fbfb3SApril Chin--- src/lib/libast/sparcv9/src/lib/libast/FEATURE/lib (revision 888) 74*7c2fbfb3SApril Chin+++ src/lib/libast/sparcv9/src/lib/libast/FEATURE/lib (working copy) 75*7c2fbfb3SApril Chin@@ -139,7 +139,7 @@ 76*7c2fbfb3SApril Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */ 77*7c2fbfb3SApril Chin #define _lib_vfork 1 /* vfork exists and it works */ 78*7c2fbfb3SApril Chin #define _real_vfork 1 /* vfork child shares data with parent */ 79*7c2fbfb3SApril Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */ 80*7c2fbfb3SApril Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */ 81*7c2fbfb3SApril Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */ 82*7c2fbfb3SApril Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */ 83*7c2fbfb3SApril Chin #define _hdr_string 1 /* #include <string.h> ok */ 84*7c2fbfb3SApril ChinIndex: src/lib/libast/sparc/include/ast/ast_lib.h 85*7c2fbfb3SApril Chin=================================================================== 86*7c2fbfb3SApril Chin--- src/lib/libast/sparc/include/ast/ast_lib.h (revision 888) 87*7c2fbfb3SApril Chin+++ src/lib/libast/sparc/include/ast/ast_lib.h (working copy) 88*7c2fbfb3SApril Chin@@ -171,7 +171,7 @@ 89*7c2fbfb3SApril Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */ 90*7c2fbfb3SApril Chin #define _lib_vfork 1 /* vfork exists and it works */ 91*7c2fbfb3SApril Chin #define _real_vfork 1 /* vfork child shares data with parent */ 92*7c2fbfb3SApril Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */ 93*7c2fbfb3SApril Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */ 94*7c2fbfb3SApril Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */ 95*7c2fbfb3SApril Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */ 96*7c2fbfb3SApril Chin #define _hdr_string 1 /* #include <string.h> ok */ 97*7c2fbfb3SApril ChinIndex: src/lib/libast/sparc/src/lib/libast/ast_lib.h 98*7c2fbfb3SApril Chin=================================================================== 99*7c2fbfb3SApril Chin--- src/lib/libast/sparc/src/lib/libast/ast_lib.h (revision 888) 100*7c2fbfb3SApril Chin+++ src/lib/libast/sparc/src/lib/libast/ast_lib.h (working copy) 101*7c2fbfb3SApril Chin@@ -150,7 +150,7 @@ 102*7c2fbfb3SApril Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */ 103*7c2fbfb3SApril Chin #define _lib_vfork 1 /* vfork exists and it works */ 104*7c2fbfb3SApril Chin #define _real_vfork 1 /* vfork child shares data with parent */ 105*7c2fbfb3SApril Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */ 106*7c2fbfb3SApril Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */ 107*7c2fbfb3SApril Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */ 108*7c2fbfb3SApril Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */ 109*7c2fbfb3SApril Chin #define _hdr_string 1 /* #include <string.h> ok */ 110*7c2fbfb3SApril ChinIndex: src/lib/libast/sparc/src/lib/libast/FEATURE/lib 111*7c2fbfb3SApril Chin=================================================================== 112*7c2fbfb3SApril Chin--- src/lib/libast/sparc/src/lib/libast/FEATURE/lib (revision 888) 113*7c2fbfb3SApril Chin+++ src/lib/libast/sparc/src/lib/libast/FEATURE/lib (working copy) 114*7c2fbfb3SApril Chin@@ -150,7 +150,7 @@ 115*7c2fbfb3SApril Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */ 116*7c2fbfb3SApril Chin #define _lib_vfork 1 /* vfork exists and it works */ 117*7c2fbfb3SApril Chin #define _real_vfork 1 /* vfork child shares data with parent */ 118*7c2fbfb3SApril Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */ 119*7c2fbfb3SApril Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */ 120*7c2fbfb3SApril Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */ 121*7c2fbfb3SApril Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */ 122*7c2fbfb3SApril Chin #define _hdr_string 1 /* #include <string.h> ok */ 123*7c2fbfb3SApril ChinIndex: src/lib/libast/i386/include/ast/ast_lib.h 124*7c2fbfb3SApril Chin=================================================================== 125*7c2fbfb3SApril Chin--- src/lib/libast/i386/include/ast/ast_lib.h (revision 888) 126*7c2fbfb3SApril Chin+++ src/lib/libast/i386/include/ast/ast_lib.h (working copy) 127*7c2fbfb3SApril Chin@@ -171,7 +171,7 @@ 128*7c2fbfb3SApril Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */ 129*7c2fbfb3SApril Chin #define _lib_vfork 1 /* vfork exists and it works */ 130*7c2fbfb3SApril Chin #define _real_vfork 1 /* vfork child shares data with parent */ 131*7c2fbfb3SApril Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */ 132*7c2fbfb3SApril Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */ 133*7c2fbfb3SApril Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */ 134*7c2fbfb3SApril Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */ 135*7c2fbfb3SApril Chin #define _hdr_string 1 /* #include <string.h> ok */ 136*7c2fbfb3SApril ChinIndex: src/lib/libast/i386/src/lib/libast/ast_lib.h 137*7c2fbfb3SApril Chin=================================================================== 138*7c2fbfb3SApril Chin--- src/lib/libast/i386/src/lib/libast/ast_lib.h (revision 888) 139*7c2fbfb3SApril Chin+++ src/lib/libast/i386/src/lib/libast/ast_lib.h (working copy) 140*7c2fbfb3SApril Chin@@ -150,7 +150,7 @@ 141*7c2fbfb3SApril Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */ 142*7c2fbfb3SApril Chin #define _lib_vfork 1 /* vfork exists and it works */ 143*7c2fbfb3SApril Chin #define _real_vfork 1 /* vfork child shares data with parent */ 144*7c2fbfb3SApril Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */ 145*7c2fbfb3SApril Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */ 146*7c2fbfb3SApril Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */ 147*7c2fbfb3SApril Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */ 148*7c2fbfb3SApril Chin #define _hdr_string 1 /* #include <string.h> ok */ 149*7c2fbfb3SApril ChinIndex: src/lib/libast/i386/src/lib/libast/FEATURE/lib 150*7c2fbfb3SApril Chin=================================================================== 151*7c2fbfb3SApril Chin--- src/lib/libast/i386/src/lib/libast/FEATURE/lib (revision 888) 152*7c2fbfb3SApril Chin+++ src/lib/libast/i386/src/lib/libast/FEATURE/lib (working copy) 153*7c2fbfb3SApril Chin@@ -150,7 +150,7 @@ 154*7c2fbfb3SApril Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */ 155*7c2fbfb3SApril Chin #define _lib_vfork 1 /* vfork exists and it works */ 156*7c2fbfb3SApril Chin #define _real_vfork 1 /* vfork child shares data with parent */ 157*7c2fbfb3SApril Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */ 158*7c2fbfb3SApril Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */ 159*7c2fbfb3SApril Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */ 160*7c2fbfb3SApril Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */ 161*7c2fbfb3SApril Chin #define _hdr_string 1 /* #include <string.h> ok */ 162*7c2fbfb3SApril ChinIndex: src/lib/libast/amd64/include/ast/ast_lib.h 163*7c2fbfb3SApril Chin=================================================================== 164*7c2fbfb3SApril Chin--- src/lib/libast/amd64/include/ast/ast_lib.h (revision 888) 165*7c2fbfb3SApril Chin+++ src/lib/libast/amd64/include/ast/ast_lib.h (working copy) 166*7c2fbfb3SApril Chin@@ -160,7 +160,7 @@ 167*7c2fbfb3SApril Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */ 168*7c2fbfb3SApril Chin #define _lib_vfork 1 /* vfork exists and it works */ 169*7c2fbfb3SApril Chin #define _real_vfork 1 /* vfork child shares data with parent */ 170*7c2fbfb3SApril Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */ 171*7c2fbfb3SApril Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */ 172*7c2fbfb3SApril Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */ 173*7c2fbfb3SApril Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */ 174*7c2fbfb3SApril Chin #define _hdr_string 1 /* #include <string.h> ok */ 175*7c2fbfb3SApril ChinIndex: src/lib/libast/amd64/src/lib/libast/ast_lib.h 176*7c2fbfb3SApril Chin=================================================================== 177*7c2fbfb3SApril Chin--- src/lib/libast/amd64/src/lib/libast/ast_lib.h (revision 888) 178*7c2fbfb3SApril Chin+++ src/lib/libast/amd64/src/lib/libast/ast_lib.h (working copy) 179*7c2fbfb3SApril Chin@@ -139,7 +139,7 @@ 180*7c2fbfb3SApril Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */ 181*7c2fbfb3SApril Chin #define _lib_vfork 1 /* vfork exists and it works */ 182*7c2fbfb3SApril Chin #define _real_vfork 1 /* vfork child shares data with parent */ 183*7c2fbfb3SApril Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */ 184*7c2fbfb3SApril Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */ 185*7c2fbfb3SApril Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */ 186*7c2fbfb3SApril Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */ 187*7c2fbfb3SApril Chin #define _hdr_string 1 /* #include <string.h> ok */ 188*7c2fbfb3SApril ChinIndex: src/lib/libast/amd64/src/lib/libast/FEATURE/lib 189*7c2fbfb3SApril Chin=================================================================== 190*7c2fbfb3SApril Chin--- src/lib/libast/amd64/src/lib/libast/FEATURE/lib (revision 888) 191*7c2fbfb3SApril Chin+++ src/lib/libast/amd64/src/lib/libast/FEATURE/lib (working copy) 192*7c2fbfb3SApril Chin@@ -139,7 +139,7 @@ 193*7c2fbfb3SApril Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */ 194*7c2fbfb3SApril Chin #define _lib_vfork 1 /* vfork exists and it works */ 195*7c2fbfb3SApril Chin #define _real_vfork 1 /* vfork child shares data with parent */ 196*7c2fbfb3SApril Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */ 197*7c2fbfb3SApril Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */ 198*7c2fbfb3SApril Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */ 199*7c2fbfb3SApril Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */ 200*7c2fbfb3SApril Chin #define _hdr_string 1 /* #include <string.h> ok */ 201da2e3ebdSchin-- snip -- 202da2e3ebdSchin 203da2e3ebdSchin 204da2e3ebdSchin######## Errata #002: ######## 205*7c2fbfb3SApril ChinA workaround was added for a problem with the "multiline" editor mode which 206*7c2fbfb3SApril Chinoccurs when the edit line becomes longer than the terminal's width and the 207*7c2fbfb3SApril Chinterminal cursor is not at position 0 when PS1 is send to the terminal. 208da2e3ebdSchin 209*7c2fbfb3SApril ChinFor example: The user executes a $ printf "foo"<enter> # the prompt will start 210*7c2fbfb3SApril Chinat position 3 instead of 0. If the user enters a command which is longer than 211*7c2fbfb3SApril Chinthe terminal width and then removes enougth characters that the edit line fits 212*7c2fbfb3SApril Chinagain into one line the "foo" at the beginning will be overwritten with the 213*7c2fbfb3SApril Chinprompt. 214*7c2fbfb3SApril Chin 215*7c2fbfb3SApril ChinThe workaround is to add $(printf "%*s\r%s" COLUMNS "") at the beginning of 216*7c2fbfb3SApril ChinPS1 set by /etc/ksh.kshrc, this causes the shell to move to the beginning 217*7c2fbfb3SApril Chinof the next line if the terminal cursor is not at position 0. 218da2e3ebdSchin 219da2e3ebdSchin 220da2e3ebdSchin######## Errata #003: ######## 221*7c2fbfb3SApril ChinA fix was backported to cure sporadic VSC test suite failures. The failures are 222*7c2fbfb3SApril Chingenerated when command substitutions+functions are executed in a nested manner 223*7c2fbfb3SApril Chin- sometimes the return code is non-zero even if the called function explicitly 224*7c2fbfb3SApril Chincontains a "return 0"-statement. 225*7c2fbfb3SApril ChinThe following files have been changed: 226da2e3ebdSchin-- snip -- 227da2e3ebdSchinIndex: src/lib/libshell/common/sh/jobs.c 228da2e3ebdSchin=================================================================== 229*7c2fbfb3SApril Chin--- src/lib/libshell/common/sh/jobs.c (revision 1284) 230da2e3ebdSchin+++ src/lib/libshell/common/sh/jobs.c (working copy) 231*7c2fbfb3SApril Chin@@ -1224,6 +1224,8 @@ 232da2e3ebdSchin job_lock(); 233*7c2fbfb3SApril Chin if(pid > 1) 234*7c2fbfb3SApril Chin { 235*7c2fbfb3SApril Chin+ if(pid==sh.spid) 236*7c2fbfb3SApril Chin+ sh.spid = 0; 237*7c2fbfb3SApril Chin if(!(pw=job_bypid(pid))) 238*7c2fbfb3SApril Chin { 239*7c2fbfb3SApril Chin /* check to see whether job status has been saved */ 240da2e3ebdSchin-- snip -- 241*7c2fbfb3SApril Chin 242da2e3ebdSchin#EOF. 243