| [ CnUnix ] in KIDS 글 쓴 이(By): bindung () 날 짜 (Date): 2003년 10월 9일 목요일 오후 05시 47분 13초 제 목(Title): Re: try catch.. sigabort를 잡겠다는 것이 아니라 exception을 throw하던 중 sigabort를 먹고 죽는 다는 얘기지요. backtrace해보면 #0 0xfe7d9740 in __sigprocmask () from /lib/libthread.so.1 #1 0xfe7ce970 in _resetsig () from /lib/libthread.so.1 #2 0xfe7ce110 in _sigon () from /lib/libthread.so.1 #3 0xfe7d1150 in _thrp_kill () from /lib/libthread.so.1 #4 0xff14b458 in raise () from /lib/libc.so.1 #5 0xff135a84 in abort () from /lib/libc.so.1 #6 0xa0d28 in _ZN10__cxxabiv111__terminateEPFvvE (handler=0xbe014 <abort>) at ../../../../libstdc++-v3/libsupc++/eh_terminate.cc:47 #7 0xa0d64 in _ZSt9terminatev () at ../../../../libstdc++-v3/libsupc++/eh_terminate.cc:57 #8 0xa0ed4 in __cxa_throw (obj=0x1182a0, tinfo=0xff3818ac, dest=0x641cc <_ZN6OCICPP8OraErrorD1Ev>) at ../../../../libstdc++-v3/libsupc++/eh_throw.cc:80 #9 0xff3665dc in _ZN6OCICPP8CHECKERREP8OCIErrori () from /home1/bindung/src/ocicpplib/lib/libocicpp.so.0 #10 0xff35b750 in _ZN6OCICPP6Cursor7prepareERKSs () from /home1/bindung/src/ocicpplib/lib/libocicpp.so.0 #11 0xff35a458 in _ZN6OCICPP10Connection7prepareERKSsRNS_6CursorEi () 제가 호출한 함수가 Connection에 prepare함수. 거기서 에러체크 함수인 CHECKERR을 탔지만 거기서 exception을 throw합니다. 원래대로라면 try catch구문에서 이 exception을 잡아서 처리해야 하지만 그냥 거기서 sigabort먹고 죽어버리는 군요.. 웹에서 찾아보니 gcc 2.95.1 version에서는 try { } catch(...) { } 같은 구문에서 bug가 있다는 얘기를 봐서 compiler를 의심해 봤지만 gcc 3.3 version으로 다시 해봐도 역시 마찬가지군요.. @흠.. 분명히 linux에서는 잘 돌아가던 거구요. 저기서 사용하는 libocicpp가 공개라이브러리긴 하지만 그다지 system dependent하게 만들어졌을것 같지 않고 제 코드 역시 system dependent하지 않은 것 같습니다만.. 흠.. 왜 그러는지 모르겠군요.. 쩝.. |