Oracle内部错误ORA-07445[kpopfr()+339] [SIGFPE]一例

当所有列长度综合超过1048576时可能引发的一个dump错误,session会自动关闭。一般只有列很多且单列较“宽”时可能出现该错误。

已经测试的在10.2.0.1,以及10.2.0.3上均可以再现该问题,测试方法:

create table test

( c000 char(2000),

c001 char(2000),

c523 char(2000),

c524 char(576));

— sum of all column size is 1048576(0x100000).

Run next shell script.

while [ 1 ]

do

echo “set feedback off”

echo “select * from test where c001 = ‘A’;”

done | sqlplus -s scott/tiger

Note 245840.1 Information on the sections in this article

以上循环执行一段时间后session会被关闭,告警日志中出现

ORA-07445: exception encountered: core dump [kpopfr()+339] [SIGFPE] [Integer divide by zero][0x002327FF5] [] []的记录。没有在9i版本上测试,不能确定其影响。

该bug在10.2.0.4 patch set中已被修复,也可以通过小补丁形式修复,Oracle发布的小布丁只针对10.2.0.3版本,即10.2.0.1上是不能打的。

附bug描述原文:
Subject:     Bug 5753629 – Query may dump [in kpopfr / kposdi]

Doc ID:     5753629.8     Type:     PATCH

Modified Date :     03-APR-2009     Status:     PUBLISHED

@ Note to support: do not edit this note – it is auto generated
Bug 5753629  Query may dump [in kpopfr / kposdi]

This note gives a brief overview of bug 5753629.
The content was last updated on: 03-APR-2009
Click here for details of each of the sections below.
Affects:

Product (Component)     Oracle Server (Rdbms)
Range of versions believed to be affected     Versions < 11
Versions confirmed as being affected

* 10.2.0.3

Platforms affected     Generic (all / most platforms affected)

Fixed:

This issue is fixed in

* 10.2.0.3 Patch 9 on Windows Platforms
* 10.2.0.4 (Server Patch Set)
* 11.1.0.6 (Base Release)
* Process May Dump (ORA-7445) / Abend / Abort
* Dump in or under kpopfr / kposdi
* (None Specified)

Symptoms:

Related To:

Description

Repeatedly executing a query can lead to a dump in kpopfr.

eg:

create table test

( c000 char(2000),

c001 char(2000),

c523 char(2000),

c524 char(576));

— sum of all column size is 1048576(0x100000).

Run next shell script.

while [ 1 ]

do

echo “set feedback off”

echo “select * from test where c001 = ‘A’;”

done | sqlplus -s scott/tiger

^

Dump occurs

Please note: The above is a summary description only. Actual symptoms can vary. Matching to any

symptoms here does not confirm that you are encountering this problem. Always consult with Oracle

Support for advice.

References

Bug 5753629 (This link will only work for PUBLISHED bugs)

Comments

  1. dr: 5753629 10.2.0.2 RDBMS 10.2.0.2 PRG INTERFACE PRODID-5 PORTID-23 ORA-7445
    Abstract: QUERY FAILS BY ORA-7445 [KPOPFR].
    PROBLEM:
    ——–
    When executing query again and again from one session, query fails
    by ORA-7445[kpopfr].

    ====================================================================
    Sat Dec 30 00:22:39 2006
    Errors in file /var/log/oracle/trace/felica2_ora_6156.trc:
    ORA-7445: exception encountered: core dump [kpopfr()+536] [SIGFPE]
    [Integer divide by zero] [0x1023BCE18] [] []
    ====================================================================

    DIAGNOSTIC ANALYSIS:
    ——————–
    From disassemble, %o3 is devided by %o0 and %o0 seems to be 0x0.

    0x1023f43d0 : umul %g5, %g4, %o0
    0x1023f43d4 : mov %g0, %y
    0x1023f43d8 : udiv %o3, %o0, %o3

    %o0 is calcurated by %g5 X %g4 at kpopfr+528.

    From our trace file, this value(%g5) is 0x100000.

    ub4 kponc_p [FFFFFFFF7B22AAAC, FFFFFFFF7B22AAB0) = 00100000

    And %g4 seems to be 0x1000 from below trace file output.

    ========== FRAME [6] (kpopsdi()+148 -> kposdi()) ==========
    %l0 0000000100302B00 %l1 0000000000000002 %l2 FFFFFFFF7B263CA8
    %l3 00000003C36AFB80 %l4 0000000105D7CE20 %l5 0000000000000001
    %l6 0000000000000007 %l7 0000000105D7A920 %i0 0000000000000000
    %i1 FFFFFFFF7FFFB9EC %i2 0000000000001000 %i3 0000000105E03220
    ~~~~~~~~~~~~~~~~~~~~ sum of all column size is 1048576(0x100000).

    Run next shell script.

    while [ 1 ]
    do
    echo “set feedback off”
    echo “select * from test where c001 = ‘A’;”
    done | sqlplus -s scott/tiger

    It takes 3-10 minutes to reproduce the problem.
    Required time for reproducing depends on hardware spec.

    STACK TRACE:
    ————
    ksedmp ssexhd sighndlr call_user_handler kposdi kpopsdi kpoal8
    opiodr ttcpip opitsk opiino opiodr opidrv sou2o opimai_real
    main start

    SUPPORTING INFORMATION:
    ———————–
    I’ll upload files later.

    24 HOUR CONTACT INFORMATION FOR P1 BUGS:
    —————————————-
    n/a

    DIAL-IN INFORMATION:
    ——————–
    n/a

    IMPACT DATE:
    ————
    n/a
    REDISCOVERY INFORMATION:
    Repeatedly executing a query can lead to an ORA-7445[kpopfr] error.
    WORKAROUND:
    None
    RELEASE NOTES:
    ]]Repeatedly executing a query can lead to an ORA-7445[kpopfr] error.

  2. ORA-7445 [KPOPFR] [SIGFPE] [INTEGER DIVIDE BY ZERO] When Repeatedly Executing a Query
    Applies to:
    Oracle Server – Enterprise Edition – Version: 10.2.0.1 to 10.2.0.3
    This problem can occur on any platform.
    Symptoms
    1. Repeatedly executing a query can lead to the following error:

    ORA-7445 [kpopfr] [SIGFPE] [INTEGER DIVIDE BY ZERO]

    2. The call stack from the ORA-07445 trace file should contain the following functions:

    kposdi  kpopsdi

    Cause
    The error is caused by BUG 5753629.

    Abstract: QUERY FAILS BY ORA-7445 [KPOPFR]
    Repeatedly executing a query can lead to an ORA-7445[kpopfr] error.

    Solution
    To implement the solution, do one of the following:

    1. Upgrade to 11.1 or 10.2.0.4, when available. At the time of writing the article these version were not yet available. (July 2007).
    2. Apply one-off Patch 5753629 from MetaLink, if available for your platform and version.

    There is no known workaround available for this bug.
     

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号