- - PR -
EXCEPTION_ACCESS_VIOLATIONについて
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2005-10-17 19:19
以下環境でjavaの開発を行っています。
OS :Windows2000 Advanced Server JAVA:jdk1.3.1_14 SVF(帳票用開発ソフト・・・これは多分関係ないです) :SVF6.3 SQLServer :2000 (sa4があたっています) JDBC:Version 2.2.0022 以上の環境下にてjavaで作成されたpgmを実行したところ、 以下のようなエラーが発生しました。 この現象について、調査すべきキーワード・バグ情報などをご存知の方がおられましたら ご教授願います。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ An unexpected exception has been detected in native code outside the VM. Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x77F8206B Function name=RtlEnterCriticalSection Library=C:\WINNT\system32\ntdll.dll Current Java thread: at sun.jdbc.odbc.JdbcOdbc.disconnect(Native Method) at sun.jdbc.odbc.JdbcOdbc.SQLDisconnect(Unknown Source) at sun.jdbc.odbc.JdbcOdbcDriver.disconnect(Unknown Source) at sun.jdbc.odbc.JdbcOdbcConnection.close(Unknown Source) at jp.co.fit.query.SqlDriver.internalCleanup(Unknown Source) at jp.co.fit.query.SqlDriver.cleanup(Unknown Source) at jp.co.fit.query.SqlDriver.close(Unknown Source) at jp.co.fit.vfreport.PrintDriverWrapper.closeQuery(Unknown Source) at jp.co.fit.vfreport.PrintDriverWrapper.cleanup(Unknown Source) at jp.co.fit.vfreport.Vrw32.VrQuit(Unknown Source) at jp.co.fit.vfreport.Vrw32.close(Unknown Source) at jp.co.fit.vfreport.Vrw32.finalize(Unknown Source) at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method) at java.lang.ref.Finalizer.runFinalizer(Unknown Source) at java.lang.ref.Finalizer.access$100(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) Dynamic libraries: 0x00400000 - 0x00405000 C:\WINNT\system32\java.exe 0x77F80000 - 0x77FFD000 C:\WINNT\system32\ntdll.dll 0x79480000 - 0x794E2000 C:\WINNT\system32\ADVAPI32.dll 0x77E50000 - 0x77F37000 C:\WINNT\system32\KERNEL32.DLL 0x78780000 - 0x787F1000 C:\WINNT\system32\RPCRT4.DLL 0x78000000 - 0x78045000 C:\WINNT\system32\MSVCRT.dll 0x6D420000 - 0x6D4FB000 C:\Program Files\JavaSoft\JRE\1.3.1_14\bin\hotspot\jvm.dll 0x77DE0000 - 0x77E45000 C:\WINNT\system32\USER32.dll 0x77F40000 - 0x77F7E000 C:\WINNT\system32\GDI32.DLL 0x77520000 - 0x77550000 C:\WINNT\system32\WINMM.dll 0x75DF0000 - 0x75E0A000 C:\WINNT\system32\IMM32.DLL 0x6D220000 - 0x6D227000 C:\Program Files\JavaSoft\JRE\1.3.1_14\bin\hpi.dll 0x6D3B0000 - 0x6D3BD000 C:\Program Files\JavaSoft\JRE\1.3.1_14\bin\verify.dll 0x6D250000 - 0x6D268000 C:\Program Files\JavaSoft\JRE\1.3.1_14\bin\java.dll 0x6D3C0000 - 0x6D3CD000 C:\Program Files\JavaSoft\JRE\1.3.1_14\bin\zip.dll 0x6D340000 - 0x6D348000 C:\Program Files\JavaSoft\JRE\1.3.1_14\bin\net.dll 0x74FB0000 - 0x74FBA000 C:\WINNT\system32\WSOCK32.dll 0x74F90000 - 0x74FA4000 C:\WINNT\system32\WS2_32.DLL 0x74F80000 - 0x74F88000 C:\WINNT\system32\WS2HELP.DLL 0x777F0000 - 0x777FC000 C:\WINNT\System32\rnr20.dll 0x77950000 - 0x77974000 C:\WINNT\system32\DNSAPI.DLL 0x772F0000 - 0x77303000 C:\WINNT\system32\iphlpapi.dll 0x774D0000 - 0x774D5000 C:\WINNT\system32\ICMP.DLL 0x772D0000 - 0x772E7000 C:\WINNT\system32\MPRAPI.DLL 0x750C0000 - 0x750CF000 C:\WINNT\system32\SAMLIB.DLL 0x750E0000 - 0x7512F000 C:\WINNT\system32\NETAPI32.DLL 0x79560000 - 0x7956F000 C:\WINNT\system32\SECUR32.DLL 0x75130000 - 0x75136000 C:\WINNT\system32\NETRAP.DLL 0x77920000 - 0x7794A000 C:\WINNT\system32\WLDAP32.DLL 0x77A20000 - 0x77B17000 C:\WINNT\system32\OLE32.DLL 0x77980000 - 0x77A1B000 C:\WINNT\system32\OLEAUT32.DLL 0x77360000 - 0x7738F000 C:\WINNT\system32\ACTIVEDS.DLL 0x77330000 - 0x77353000 C:\WINNT\system32\ADSLDPC.DLL 0x777E0000 - 0x777EE000 C:\WINNT\system32\RTUTILS.DLL 0x78310000 - 0x783BE000 C:\WINNT\system32\SETUPAPI.DLL 0x79280000 - 0x792E1000 C:\WINNT\system32\USERENV.DLL 0x77490000 - 0x774C3000 C:\WINNT\system32\RASAPI32.DLL 0x77470000 - 0x77481000 C:\WINNT\system32\RASMAN.DLL 0x774E0000 - 0x77502000 C:\WINNT\system32\TAPI32.DLL 0x71710000 - 0x71794000 C:\WINNT\system32\COMCTL32.DLL 0x70BD0000 - 0x70C35000 C:\WINNT\system32\SHLWAPI.DLL 0x77310000 - 0x77329000 C:\WINNT\system32\DHCPCSVC.DLL 0x77790000 - 0x77798000 C:\WINNT\System32\winrnr.dll 0x74F30000 - 0x74F4E000 C:\WINNT\system32\msafd.dll 0x74F70000 - 0x74F77000 C:\WINNT\System32\wshtcpip.dll 0x777A0000 - 0x777A5000 C:\WINNT\system32\rasadhlp.dll 0x6D290000 - 0x6D29A000 C:\Program Files\JavaSoft\JRE\1.3.1_14\bin\JdbcOdbc.dll 0x1F7A0000 - 0x1F7DA000 C:\WINNT\system32\ODBC32.dll 0x73CC0000 - 0x73F08000 C:\WINNT\system32\SHELL32.dll 0x76AE0000 - 0x76B1E000 C:\WINNT\system32\comdlg32.dll 0x1F840000 - 0x1F857000 C:\WINNT\system32\odbcint.dll 0x777D0000 - 0x777D7000 C:\WINNT\system32\VERSION.dll 0x75940000 - 0x75946000 C:\WINNT\system32\LZ32.DLL 0x1F7F0000 - 0x1F80A000 C:\WINNT\system32\odbccp32.dll 0x782D0000 - 0x782F1000 C:\WINNT\system32\msv1_0.dll 0x79AA0000 - 0x79B27000 C:\WINNT\system32\CRYPT32.DLL 0x773E0000 - 0x773F0000 C:\WINNT\system32\MSASN1.DLL 0x778F0000 - 0x77913000 C:\WINNT\system32\imagehlp.dll 0x726C0000 - 0x726ED000 C:\WINNT\system32\DBGHELP.dll 0x674B0000 - 0x674BB000 C:\WINNT\system32\PSAPI.DLL Local Time = Mon Oct 17 17:17:08 2005 Elapsed Time = 37 # # The exception above was detected in native code outside the VM # # Java VM: Java HotSpot(TM) Client VM (1.3.1_14-b03 mixed mode) # 以上、よろしくお願いいたします。 |
|
投稿日時: 2005-10-19 10:46
エラーメッセージからは、ntdll.dll の RtlEnterCriticalSection という関数を呼び出している最中に問題が発生した、と読み取れますね。
ワトソン博士に診断をお願いしてみましょう。 以下のページが参考になるかもしれません。 ・BEAトラブルシューティング ガイド > サポート診断パターン >バイナリ コア ファイルの分析 > Windows http://www.beasys.co.jp/cs/support_news/product_troubleshooting/System_Core_Pattern.html#Gathering_Core_information_from:_WINDOWS |
|
投稿日時: 2005-10-19 12:26
問題とはまったく関係ありませんが
> SQLServer > :2000 (sa4があたっています) > JDBC:Version 2.2.0022 上記から推測するにMicrosoftのJDBCドライバを使っているんだろうなと思ったのに > Current Java thread: > at sun.jdbc.odbc.JdbcOdbc.disconnect(Native Method) > at sun.jdbc.odbc.JdbcOdbc.SQLDisconnect(Unknown Source) > at sun.jdbc.odbc.JdbcOdbcDriver.disconnect(Unknown Source) > at sun.jdbc.odbc.JdbcOdbcConnection.close(Unknown Source) SUNのJDBC-ODBCドライバでアクセスしているように見受けられますがどうなんでしょう? MicrosoftのJDBCドライバならcom.microsoft.jdbc.sqlserver.SQLServerDriverですよね? まさかMicrosoftのJDBC内部でODBC経由しているわけないし間違ってたらすいませんが 確認してみてはどうでしょうか |
|
投稿日時: 2005-10-21 19:43
インギ様
いっきゅう様 ご指摘ありがとうございます。 本番稼動間近でどたばたしており、返答遅れまして申し訳ございません。 ログを解析した結果、いっきゅう様の言われていた通り、JDBC-ODBC関連に的を絞り、 対策を行いました。 当プログラムは、SVFといわれる帳票作成ソフトをJAVAからコールしているのですが、 そのSVFがODBC経由でデータベースに接続に行っていることが原因でした。 そこで、以下ページを参考に、強制的にSVFにJDBCを使用するようにしたところ、 問題なく出力を行うことができました。(因みにマニュアルには書いてありませんでした・・・) http://www.wingarc-support.com/mail/03/030707.htm 以下に、当事象が起きました環境の組合を記載しておきます。よろしければご参照ください。 ↓↓↓↓↓ @アプリケーションサーバ OS :Windows2000 Advanced Server SP4 J2SDK:jdk1.3.1_14 SVF :SVF For Web v6.3 DB :SQLServer2000 SP3a(クライアントのみ) Aデータベースサーバ OS :Windows2000 Advanced Server SP4 DB :SQLServer2000 SP3a(サーバ) @上のアプリがAのデータベースからデータを抽出し、編集後格納を行い、@のSVFでPDFを作成し、Aに出力を行っております。 上記構成はマトリクスのうちの1パターンですが、 この構成を採用したときに初めて今回の事象が発生しました。 当初は、@のDBにクライアント版ではなく、サーバ版のSQLServerを設定しておりましたが、この場合は起きておりません。 ただ、1度当事象が発生しますと、動いていた環境に戻しても動きませんでした。 「C:\WINNT\system32\ntdll.dll」でEXCEPTION_ACCESS_VIOLATIONが発生し、VMが落ちているののでは?とも思いましたが、未だ原因の特定にいたっておりません。 因みに、上記構成で問題なく動作しているアプリ(ほぼ同様な機能)もあり、正直わけがわかりません。違いといえば、データ量くらいです・・・。 原因については、今後わかり次第、掲載させていただきます。 また、別件ですが、JAVAが「C:\WINNT\system32\java.exe」で実行されているようなのですが、パスに設定してあるのは「C:\jdk1.3.1_14\bin」となっています。 こちらも追って調査しようと思っておりますが、もし何かご存知でしたら、教えていただけると助かります。 [ メッセージ編集済み 編集者: naox 編集日時 2005-10-22 13:51 ] |
1
