本文へジャンプ

【障害情報】 IBM Java SDK 6.0 におけるjava.math.BigDecimalに関連する複数の不具合について(WAS-09-00F)

【重要情報】IBM Java SDK 6.0 において、java.math.BigDecimalに関連する複数の不具合が報告されています。IBM Java SDK 6.0 の環境で、java.math.BigDecimalを使用している場合、特定の処理を実行した際に誤った結果が戻る可能性があります。

内容/目次

【障害概要】

IBM Java SDK 6.0 (以下、IBM JDK 6.0) において、java.math.BigDecimalに関連する複数の不具合が報告されています。IBM JDK 6.0の環境で、java.math.BigDecimalを使用している場合、特定の処理を実行した際に誤った結果が戻る可能性があります。


【対象のお客様】
IBM JDK 6.0 Service Release 6未満のService Release(以下、SR)を使用している場合に当問題が発生する可能性があります。
WebSphere Application Server(以下、WAS)ではV7.0が対象となります。
WAS 7.0.0.5のJava SDK Fix Packを適用している場合、IBM JDK 6.0 のSR レベルはSR5相当です。


【対象ソフトウェア】
対象製品: IBM JDK 6.0、またはそれを含むIBMのソフトウェア(WAS V7.0 など)
対象プラットフォーム: AIX、Linux、Windows、z/OS 、i5/OS(※1)
対象バージョン・レベル: IBM JDK 6.0 SR6未満

※1 IBM JDKのみで発生する問題のため、IBM JDKが提供されていないSolarisやHP-UXは対象外です。32bit/64bitなどOSやIBM JDKのbit数には依存しません。


【障害内容】
java.math.BigDecimal を使用している場合、特定の処理を実行した際に誤った結果が戻る可能性があります。
※ com.ibm.math.BigDecimal クラスを使用している場合にはこの問題は発生しません。

下記6つの障害が報告されています。

表1: IBM Java SDK 6.0 におけるjava.math.BigDecimalに関連する不具合一覧

APAR番号 修正SR
(※1)
修正SRを含むWAS用Java SDK 障害概要
IZ32747SR3WAS V7.0.0.3valueOf メソッドを使用し生成されたjava.math.BigDecimalオブジェクトを比較する際、実行結果として例外がスローされず、誤った結果が戻る可能性があります。
IZ32776SR3WAS V7.0.0.3Decimal Floating Point機構を搭載したハードウェア(※2)環境において、java.math.BigDecimalを使用し、以下の処理を実行した場合、実行結果として例外がスローされず、誤った結果が戻る可能性があります。

1) BigDecimalオブジェクトに値をセットするかもしくは更新
2) そのBigDecimalオブジェクトにsetScale(0, int) もしくは setScale(0, RoundingMode) する処理を実行
IZ46867SR5WAS V7.0.0.5java.math.BigDecimalを使用し、以下の処理を実行した場合、実行結果として例外がスローされず、誤った結果が戻る可能性があります。

1) BigDecimalオブジェクト Aに値をセット
2) AのunscaledValue() を実行
3) Aを Bなどの他のBigDecimalの演算処理で使用
4) 計算結果CのunscaledValue()を実行
IZ50258SR5WAS V7.0.0.5java.math.BigDecimalを使用し、掛け算(multiply)を実行した結果を比較する際、実行結果として例外がスローされず、誤った結果が戻る可能性があります。
IZ53194SR6WAS V7.0.0.7DBCSエリアの数字(全角数字)を示すUnicodeポイントとなるcharを使用して java.math.BigDecimalオブジェクトを生成した場合に、実行結果として期待された数値から-48された数値が返されます。
IZ53811SR6WAS V7.0.0.7Decimal Floating Point機構を搭載したハードウェア(※2)環境において、シリアライズされたjava.math.BigDecimal オブジェクトをデシリアライズした際、小数点位置が誤った場所に変化する可能性があります。

※1 修正SRのレベルに満たない場合、もしくは個別のInterim Fixを適用していない場合に該当します。
各SRに含まれるAPARのリストは下記Webサイトをご参照ください。

Finding the list of fixes in Java Service Refreshes (SRs)
http://www.ibm.com/support/docview.wss?rs=180&uid=swg21392179

※2 ここでのDecimal Floating Point機構を搭載したハードウェアは、IBM System Power6およびIBM System z10です。これらのハードウェアを使用している場合、対象OSは、z/OS, System z Linux, AIX, System p Linux, IBM i です。


【確認方法】
Java SDKのバージョンの確認は、java -versionコマンドを使用します。
WASの場合は、必ずWASに同梱されているjavaディレクトリのjavaコマンドを使用して確認してください。

(例) UNIX環境のWAS V7.0の場合

# /usr/IBM/WebSphere/AppServer/java/jre/bin/java -version

java version "1.6.0"
Java(TM) SE Runtime Environment (build pxi3260sr4ifix-20090228_01(SR4+147109))
IBM J9 VM (build 2.4, J2RE 1.6.0 IBM J9 2.4 Linux x86-32 jvmxi3260-20090215_29883 (JIT enabled, AOT enabled)
J9VM - 20090215_029883_lHdSMr
JIT - r9_20090213_2028
GC - 20090213_AA)
JCL - 20090228_01

上記は IBM JDK 1.6.0 SR4 です。
※z/OSにつきましては、SMP、またはJOBLOGで製品のレベルを確認してください。


【回避策】
ありません。

ただし、Decimal Floating Point機構を搭載したハードウェア上でのみ発生する障害(APAR IZ32776およびIZ53811)に関しては、Java 仮想マシン・コードに渡すコマンド行引数(※)に -Xnodfpbd を指定することで回避することが出来ます。

※WAS の場合は、汎用JVM引数 に設定してください。汎用JVM引数につきましては、下記URLをご参照ください。
http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/urun_rconfproc_jvm.html


【解決策】
表1に記載されている各APARを含むSRを適用します。
(WASの場合、Java SDKに対するFix Packを適用します。)

最新のSRに含まれていないAPARに対するInterim Fix入手のご要望、またはご質問は、サポート契約(ソフトウェア・サブスクリプション&サポート、またはSTSS)に基づくサポート窓口までお問い合わせください。
Interim Fixの提供は、最新のSRから1つ前のSR(最新がSR5の場合はSR4)までとなります。回避策が存在する障害に対しては、回避策による問題の回避もご検討ください。

<分散系OS上のWASの場合>
WAS V7.0に適用可能なIBM JDKの最新Fix Pack情報は、下記URLをご参照ください。

・ Recommended fixes for WebSphere Application Server
http://www.ibm.com/support/docview.wss?rs=180&uid=swg27004980#ver70
    <z/OS上のWASの場合>
    z/OS版SDKの最新Fix Pack情報は、下記URLをご参照ください。
      ・ Java on the z/OS and OS/390 Platforms
      http://www.ibm.com/servers/eserver/zseries/software/java/
        <i5/OS上の該当するJava環境の場合>
        サービス契約のあるお客様はIBMサービス・ラインにお問い合わせください。


        【参考情報】
        ・ 【FAQ】 WebSphere Application Serverを最新レベルにするには
        http://www.ibm.com/jp/domino01/mkt/websphere.nsf/doc/00572EAB

        ・ developerWorks : Java technology : IBM developer kits : AIX (AIXにおける最新のSRと修正の入手方法について)
        http://www.ibm.com/developerworks/java/jdk/aix/j632/Java6.fixinfo.html

        ・ APAR IZ32747: BIGDECIMAL COMPARE CAN FAIL (SR3未満)
        http://www.ibm.com/support/docview.wss?rs=203&uid=swg1IZ32747

        ・ APAR IZ32776: INCORRECT OUTPUT PRODUCED ON SYSTEM Z10 AND POWER6 HARDWARE USING DFP FEATURE IN JAVA 6 GA/SR1/SR2 (SR3未満)
        http://www.ibm.com/support/docview.wss?rs=203&uid=swg1IZ32776

        ・【ご注意ください】IBM JDK6 GA/SR1/SR2(WAS V7.0 GA)でBigDecimalを使用した場合の注意点 (WAS-09-004)
        (APAR IZ32776に対する公開済み情報)
        http://www.ibm.com/jp/domino01/mkt/cnpages1.nsf/page/default-0006D2D1

        ・ APAR IZ46867: BIGDECIMAL PROBLEM WITH UNSCALEDVALUE METHOD (SR5未満)
        http://www.ibm.com/support/docview.wss?rs=203&uid=swg1IZ46867

        ・ APAR IZ50258: OCCASIONAL BIGDECIMAL COMPARE FAILURES. (SR5未満)
        http://www.ibm.com/support/docview.wss?rs=203&uid=swg1IZ50258

        ・ APAR IZ53194: INCORRECT I/O IN JAVA.MATH.BIGDECIMAL WITH DBCS ENCODING (SR6未満)
        http://www.ibm.com/support/docview.wss?rs=203&uid=swg1IZ53194

        ・ IBM Java 6 BigDecimal Incompatibility (Rational ソフトウェアにおけるAPAR IZ53194に関する情報)
        http://www.ibm.com/support/docview.wss?rs=2042&uid=swg21390844

        ・ APAR IZ53811: BIGDECIMAL SERILIZATION RESULTS IN INCORRECT DECIMAL POINT LOCATION. (SR6未満)
        http://www.ibm.com/support/docview.wss?rs=203&uid=swg1IZ53811

        ・ Finding the list of fixes in Java Service Refreshes (SRs)
        http://www.ibm.com/support/docview.wss?rs=180&uid=swg21392179

        【お問合せ先】
        技術的な内容に関して、サービス契約のあるお客様はIBMサービス・ラインにお問い合わせください。
        IBMサービス・ライン

        【更新履歴】
        2009年7月31日 公開しました。
        2009年12月2日 Fix Pack 7公開に伴い、文書全体を更新しました。また、該当のAPARが全てFix Packに含まれたことから、一部存在していた修正出荷用APAR番号を表1から削除しました。

        文書情報

        有効期限: 2017年7月17日
        資料番号: WAS-09-00F

        掲載内容について

        当サイトは、お客様の問題解決のためのヒントとしてご利用ください。 当サイトにおける記載内容は、お客様固有の問題に対し、適切であるかどうか、また、正確であるかどうかは十分検証されていません。 結果について、いかなる保証も責任も負いかねますので、あらかじめご了承ください。

        商標について

        IBM、IBM(logo)、developerWorks、Lotus、PartnerWorld、Rational、Tivoli、 WebSphereはIBM Corporationの商標です。 他の会社名、製品名およびサービス名等はそれぞれ各社の商標です。

        ソフトウェアサポート

        ソフトウェア製品のサポート技術情報

        ハードウェアサポート

        ハードウェア製品のサポート技術情報