下一节介绍 Solaris 10 OS 中某些命令和标准的行为变化。
类型为 mutex_t 和 pthread_mutex_t 的对象必须从 8 字节对齐的地址开始。不符合此要求的应用程序将失败。将显示以下错误消息:
*** _THREAD_ERROR_DETECTION: lock usage error detected *** ... "mutex is misaligned" OR: "condvar is misaligned" |
解决方法:将环境变量设置为下列值将导致 stderr 上报告对齐错误:
THREAD_ERROR_DETECTION=1
THREAD_ERROR_DETECTION=2
用户应在 THREAD_ERROR_DETECTION 环境变量设置为以上值之一的情况下测试其应用程序,并请求更正不符合要求的应用程序。
在 Active Directory 环境中将 Samba 服务器与 winbind 配合使用时,将发生此错误。Solaris 10 5/09 发行版包含 Samba 3.0.28 软件版本。从 Active Directory 服务器中查询所有用户或 1000 个以上的用户时,winbind 只获取前 1000 个结果。
解决方法: 无。
无法使用 PgAdmin III 1.6 来管理 PostgreSQL 版本 8.3。PgAdmin 1.6 不能识别新 PostgreSQL 版本中的目录结构。会显示各种错误消息。
解决方法:升级到 PgAdmin III 版本 1.8。
此发行版中修订了以下 Solaris 高可靠扩展版手册页:
add_allocatable(1M)
remove_allocatable(1M)
label_to_str(3TSOL)
tsol_getrhtype(3TSOL)
tnzonecfg(4)
无法使用 man 命令查看已修订的手册页。要查看已修订的手册页,请参见《Solaris Trusted Extensions Reference Manual》。
Solaris 10 OS 包含 Bash 3.00。此 shell 不再自动导出下列环境变量:
HOME
PATH
SHELL
TERM
HOSTNAME
HOSTTYPE
MACHTYPE
OSTYPE
即使 shell 为这些变量分配缺省值,此新行为也适用。
解决方法: 手动导出这些变量。
/usr/bin/ln 的行为已更改为符合从 SVID3 到 XCU6 的所有标准。如果使用不带 -f 选项的 ln 命令链接至现有目标文件,则无法建立链接。而是将诊断消息写入标准错误,且该命令继续链接任何其他源文件。最后,ln 命令退出,并显示错误值。
例如,如果文件 b 存在,语法 ln a b 生成以下消息:
ln: b: File exists |
此行为更改影响包含不带 -f 选项的 ln 命令的现有 shell 脚本或程序。过去运行的脚本现在在 Solaris 10 OS 中可能失败。
解决方法: 将 -f 选项与 ln 命令一起使用。如果有执行链接实用程序的现有脚本,请确保修改这些脚本以符合命令的新行为。
在 Solaris 10 OS 中,tcsh 已升级为版本 6.12。此版本不再接受名称中使用破折号或等号的环境变量。包含 setenv 行且在 Solaris 早期版本中起作用的脚本在当前 Solaris 10 发行版中可能生成错误。将显示以下错误消息:
setenv: Syntax error |
有关更多信息,请参阅 Solaris 10 OS 的 tcsh 手册页。
解决方法: 不要在环境变量名称中使用破折号或等号。
在严格符合 C 标准的模式下生成的应用程序可能受某些库功能的行为更改的影响。例如,使用 cc -Xc 或 c89 编译模式编译的应用程序。下列库功能的行为已更改:
fgetc()
fgets()
fgetwc()
fgetws()
getc()
getchar()
gets()
getwc()
getwchar()
getws()
1990 C 标准的正式解释要求在设置文件结束条件后,后续输入操作中的文件不返回更多数据。例外情况是文件指针被重新定位或者应用程序已显式清除错误和文件结束标志。
所有其他编译模式的行为都保持不变。特别地,接口可在设置文件结束指示符后从流读取其他新写入的数据。
解决方法: 在流上调用 fseek() 或 clearerr() 以便在流上报告 EOF 条件后读取其他数据。
由于 UID、处理器 ID 和累积执行时间较大,ps 命令输出的各列已加宽。客户脚本不应采用固定输出列。
解决方法: 脚本应使用 ps 命令的 -o 选项。
有关更多信息,请参见 ps(1) 手册页。