アプリケーションプロセスが異常終了した場合は、コアファイルの情報から、異常終了した原因を調査してください。Symfoware Serverのライブラリで異常が発生したかを確認するには、gdbやfdbなどのデバッガを用いて、以下のように関数トレースを出力してください。
(gdb) bt #0 0x4004c1b1 in __kill () from /lib/libc.so.6 #1 0x4004be95 in raise (sig=6) at ../sysdeps/posix/raise.c:27 #2 0x4004d60a in abort () at ../sysdeps/generic/abort.c:88 #3 0x401eefe3 in internal_err () at jypeacom.c:3642 #4 0x401eef88 in Cgp_IpbGet (ipb_p=0xbffff3b0 "{\001\002w\017", ipbexec_p=0xbffff248 "", ipbexec_len_p=0xbffff230 "") at jypeacom.c:3608 #5 0x401ee609 in Cgp_CvValToChr (conv_p=0xbffff4a4) at jypeacom.c:3072 #6 0x40203543 in jypeconv (conv_p=0xbffff4a4) at jypeconv.c:440 #7 0x401ae728 in broat (rt0_p=0x805c5ec, work_p=0x400236c0, var_p=0x806f3f0, atr_p=0x8070ad4 "`", data_p=0x807c0ef "+", broat_inf_p=0xbffff53c, readlen=0xbffff520) at jypbroat.c:1412 #8 0x401c13d5 in ssqef (cvt=0x805c1d4) at jypbsqe4.c:1293 #9 0x401c0d81 in ssqe4 (cvt=0x805c1d4) at jypbsqe4.c:830 #10 0x401bf012 in ssqe0 (cvt=0x805c1d4) at jypbsqe0.c:420 #11 0x401b4bfa in sex00 (cvt=0x805c1d4) at jypbsex0.c:931 #12 0x401dac6e in sqldrv (sh_wk_p=0x400236c0, sh_tbl_ptr_ptr=0x40023a48) at jypbusqd.c:666 #13 0x4001efcf in sqlexe (sql_cd=13, opt=0, sys_addr=0x804c200) at jypbssqe.c:235 #14 0x80490ef in main () #15 0x40045c96 in __libc_start_main (main=0x8048840 <main>, argc=3, argv=0xbffff824, init=0x80485ec <_init>, fini=0x804affc <_fini>, rtld_fini=0x4000a4a0 <_dl_fini>, stack_end=0xbffff81c) at ../sysdeps/generic/libc-start.c:92
fdb* t #0 0xff316dac (_kill + 0x8) (0x0,0x6,0xff332584,0x0,0xffffffff,0x0) #1 0xff2b93c8 (abort + 0xfc) (0xff332584,0xff10f224,0x30ae8,0x2721c,0x27208, 0x21180) #2 0xff05ac90 (bpisd + 0x73c) (0xffffd8f1,0x2edc8,0xff11aaa4,0xff10f224, 0xff11afc0,0x27268) #3 0xff059dc8 (bpser + 0xac) (0x1,0x2edc8,0xff11afc0,0xff10f224,0x0,0x283c4) #4 0xff04b2fc (bpdcn + 0x1f4) (0x27124,0x0,0x2edc8,0xffbee954,0xff10f224, 0xffbee9a5) #5 0xff07f414 (scon1 + 0x414) (0x30a3c,0xffbeebe8,0xff10f224,0xffbeebe8, 0x26744,0xff30a1cc) #6 0xff07eefc (sdcon + 0x230) (0x26744,0xffbeebe8,0xffffffff,0xffffffff, 0xff10f224,0x1) #7 0xff07db5c (skcon + 0x1038) (0x26744,0x30ea4,0x0,0x0,0x1,0xff10f224) #8 0xff07aad4 (sex00 + 0x1014) (0x26744,0xff1183a8,0x0,0xff10f224,0x0,0x0) #9 0xff0a7a88 (sqldrv + 0x3a4) (0xff38220c,0x27268,0xff118498,0xff118452, 0xff11b044,0xff10f224) #10 0xff36eab0 (sqlexe + 0x8c) (0xff383190,0xff38220c,0xff383174,0xff381550, 0x211a8,0x0) #11 0x00010dd4 (bbb + 0x1ac) (0x211a8,0x21336,0xffbef36d,0xff332584,0xff332584, 0xff33a1a8) #12 0x00010bec (main + 0x1c) (0x1,0xffbef7d4,0xffbef7dc,0x21000,0x0,0x0) #13 0x00010b80 (_start + 0xb8) ()
上記の関数トレースの“sqlexe * sqldrv → …”が、Symfoware Serverのライブラリのモジュールです。関数トレースに、この関数が出力されている場合は、Symfoware Serverのライブラリの中で異常終了しています。上記のトレースを基に、利用者が作成したライブラリのCプログラムを調査してください。
それ以外の場合は、ユーザアプリケーション側で異常終了しています。アプリケーションの記述に誤りがありますので、アプリケーションを見直してください。
Solarisの場合
利用者が作成したファンクションルーチンのライブラリ内で異常が発生した場合、一連のメッセージに示された原因の情報を基に、利用者が作成したファンクションルーチンのCプログラムから、異常終了した原因を調査してください。ファンクションルーチンのCプログラムで異常が発生したかを確認するには、adbなどのデバッガを用いて以下のように関数トレースを出力してください。
% adb /opt/FSUNrdb2b/sbin/rdbsfunc core_fnc_14275.020201.091819 core file = core_fnc_14275.020201.091819 -- program ``rdbsfunc'' on platform SUNW,Ultra-4 SIGSEGV: Segmentation Fault $c UserFunc001(27478,27528,27528,1,146d4,27478) + 78 Uprc_Module_Execute(25390,28730,27570,27528,24a88,7f940620) + 51c Jypvuprc(24a88,7f980010,7f980200,2377c,0,24cb0) + c4 CcrCadAdtMain(24a88,4,7fb3aec4,5,7f980188,7f9801f8) + 28c
備考.FSUNrdb2bパッケージが/opt配下にインストールされた場合の例です
上記の関数トレースの“CcrCadAdtMain”から“Uprc_Module_Execute”までの関数が、Symfoware/RDBのモジュールです。それより上位(例の場合は“UserFunc001”)が、利用者が作成したファンクションルーチンのC関数になります。上記のトレースを基に、利用者が作成したファンクションルーチンのCプログラムを調査してください。
それより下位の場合は、メモリ破壊や使用方法の誤りなどの原因により、Symfoware/RDBのモジュールやOSが正しく動作していないことを意味しています。
Linuxの場合
利用者が作成したファンクションルーチンのライブラリ内で異常が発生した場合、一連のメッセージに示された原因の情報を基に、利用者が作成したファンクションルーチンのCプログラムから、異常終了した原因を調査してください。ファンクションルーチンのCプログラムで異常が発生したかを確認するには、gdbなどのデバッガを用いて以下のように関数トレースを出力してください。
$ gdb /opt/FJSVrdb2b/sbin/rdbsfunc core_fnc_26257.060306.145243 : (gdb) bt #0 0x20000000010190a0 in UserFunc001 () from /work1/ryo/tset/ufunc/libufunc.so #1 0x40000000000053e0 in UserFunc_Execute () #2 0x40000000000050a0 in Uprc_Module_Execute () #3 0x4000000000002a40 in jypvuprc () #4 0x2000000000142ac0 in CcrCadAdtMain () from /work1/ryo/src/BASE/lib/librdbcad.so #5 0x200000000006d750 in start_thread () from /lib/tls/libpthread.so.0 #6 0x200000000031d930 in __clone2 () from /lib/tls/libc.so.6.1
備考.FJSVrdb2bパッケージが/opt配下にインストールされた場合の例です。
上記の関数トレースの“CcrCadAdtMain”から“Uprc_Module_Execute”までの関数が、Symfoware/RDBのモジュールです。それより上位(例の場合は“UserFunc001”)が、利用者が作成したファンクションルーチンのC関数になります。上記のトレースを基に、利用者が作成したファンクションルーチンのCプログラムを調査してください。
それより下位の場合は、メモリ破壊や使用方法の誤りなどの原因により、Symfoware/RDBのモジュールやOSが正しく動作していないことを意味しています。