| | |
| | |
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(),从而导致到达us save+0x0 _swtch+0x2e0 real_sleep+0x2f4 _sleep+0x14 lock_write+0x2c8 findpreg+0xb0 <<< 再次调用 reglock()!!! pfault+0x98 lacc+0x68 vx_memiolock+0x3c vx_dio_iovec+0x420 vx_dio_rdwri+0x104 vx_dio_readi+0x8c vx_read1+0x2e4 <<< 调用 vx_dio_check() vx_rdwr+0x16c vn_rdwr+0x8c <<< UIOSEG_PAGEIN exec_superpage_text+0x168 <<< 调用 reglock() getxfile+0x478 execve+0xb70 syscall+0x1a4 解决方法是将vx_dio_check()中的EINVAL返回non-UIOSEG_USER段的IO,然后vx_read1() 针对此问题的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 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 <<< calling reglock() again !!! pfault+0x98 lacc+0x68 vx_memiolock+0x3c vx_dio_iovec+0x420 vx_dio_rdwri+0x104 vx_dio_readi+0x8c vx_read1+0x2e4 <<< called vx_dio_check() vx_rdwr+0x16c vn_rdwr+0x8c <<< UIOSEG_PAGEIN exec_superpage_text+0x168 <<< called reglock() 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.
| |
|
|
| |
| |
|