ORACLE在HP-UX下的系列问题处理(49)

王朝oracle·作者佚名  2008-05-19
宽屏版  字体: |||超大  

HP-UX: 在HP-UX 10.20上安装Oracle 7.3.3版时挂起。

问题描述

我使用运行HP-UX 10.20的9000/K,我试图在上面安装Oracle 7.3.3版,但安装挂起,我们找不到原因。

是否能够为我提供帮助?

配置信息

操作系统 - HP-UX

版本 - 10.20

硬件系统 - HP9000

系列 -

解决方法

问题是由于在PA8000系统上使用VxFS Direct IO和SHMEM_MAGIC时的死锁引起的。

使用下面的方法禁用superpage exec():

# adb -w /stand/vmunix

allow_superpage_text?W 0

这个规避方法应当可以解决这个问题。

缺陷实际上在VxFS代码中。VX_DIRECT IO特性的设计只适用于用户IO (UIOSEG_USER),问题在于VxFS不检查UIOSEG_PAGEIN IO,然后有可能在保持区域RW锁定的同时,调用vx_dio_iovec()/vx_memiolock()及exec_superpage_text(),从而导致到达useracc()/pfault()/findpreg()/lock_write()时出现死锁:

save+0x0

_swtch+0x2e0

real_sleep+0x2f4

_sleep+0x14

lock_write+0x2c8

findpreg+0xb0

pfault+0x98

lacc+0x68

vx_memiolock+0x3c

vx_dio_iovec+0x420

vx_dio_rdwri+0x104

vx_dio_readi+0x8c

vx_read1+0x2e4

vx_rdwr+0x16c

vn_rdwr+0x8c

exec_superpage_text+0x168

getxfile+0x478

execve+0xb70

syscall+0x1a4

解决方法是将vx_dio_check()中的EINVAL返回non-UIOSEG_USER段的IO,然后vx_read1()将返回标准IO通道,从而避免死锁。

针对此问题的SR 1653223669已经打开。

.........following with all English text ....

A4747242 [A4747242/TRAK/English]

HP-UX: Installation of Oracle release 7.3.3 hangs with HP-UX 10.20.

Problem Description

I have a 9000/K with HP-UX 10.20 on which I am trying to install Oracle release 7.3.3. The installation hangs and we cannot find the cause.

Can you help?

Configuration Info

Operating System - HP-UX

Version - 10.20

Hardware System - HP9000

Series -

Solution

The problem is caused by a deadlock when using VxFS Direct IO and SHMEM_MAGIC on PA8000 systems.

Use this work-around to disable superpage exec():

# adb -w /stand/vmunix

allow_superpage_text?W 0

The work-around should solve the problem.

The defect is actually in the VxFS code. The VX_DIRECT IO feature is designed to work for user IOs only(UIOSEG_USER). The problem is that VxFS does not check for UIOSEG_PAGEIN IOs. It is then possible to call vx_dio_iovec()/vx_memiolock() along the exec_superpage_text()

while holding the region RW lock, thus resulting in a deadlock when

reaching useracc()/pfault()/findpreg()/lock_write():

save+0x0

_swtch+0x2e0

real_sleep+0x2f4

_sleep+0x14

lock_write+0x2c8

findpreg+0xb0

pfault+0x98

lacc+0x68

vx_memiolock+0x3c

vx_dio_iovec+0x420

vx_dio_rdwri+0x104

vx_dio_readi+0x8c

vx_read1+0x2e4

vx_rdwr+0x16c

vn_rdwr+0x8c

exec_superpage_text+0x168

getxfile+0x478

execve+0xb70

syscall+0x1a4

The fix would be to return EINVAL in vx_dio_check() for IOs with non-UIOSEG_USER segments. Then vx_read1() would fall-back to the

regular IO path and this would avoid the deadlock.

SR 1653223669 has been opened for this problem.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有