Terminated 에러 메세지는 대체 어디서 나오는 건가요?

cbycby의 이미지

365일 24시간 절대 중단되어서는 안되는 프로그램을 작성중입니다.
어떤 특정한 데이타를 입력받아서 하드디스크에 계속 쓰는 작업인데...
테스트를 위해 프로그램을 실행시키면
항상 6~7시간 정도 경과후 프로그램이 종료됩니다.
분명 제가 작성한 프로그램내에서 Exception 처리및 특정 에러가 나타나면
에러메세지를 출력하게 하였지만.
Terminated 이 메세지만 달랑 하나만 나오고 프로그램이 종료됩니다.

대체 저 메세지는 어디서 나오는것일까요?
커널에서 나오는것일까요?

프로그램내에서 드라이스 드라이버와 데이타를 주고 받는데.
혹시 디바이스 드라이버와 데이타를 주고받다 디바이스 드라이버가
잘못되면 일반 어플리 케이션이 따라 죽는것일까요?

이에대해서 알고계신분의 답변을 기다립니다. :)

익명 사용자의 이미지

strace를 걸어보시는게 좋겠군요.

signal을 먹고 죽는 것 같아보입니다.

(혹은 segfault?)

어떤 언어/라이브러리를 사용해서 만드신건지도 중요하겠군요.

cbycby의 이미지

질문 올리고 계속 검토를 해 보았는데.
시스템 메모리가 부족할때 저러한 에러가 나는것 같습니다.
메모리 Leak을 잡아야 할것 같네요... :cry:

그것보다, 대체 저 메세지는 어디에 들어있길래
커널 소스, gcc 소스등에 없는지 모르겠습니다.

저 메세지 찾아보신분 계신가요?

http://www.korone.net QT 커뮤니티 사이트

noohgnas의 이미지

Terminated 라는 경고문을 예전에 MALLOC_CHECK_ 레벨을 높이고서 봤었습니다. 그때 세그폴트가 나거나 메모리를 잘못사용했을때 Terminated 되었습니다.

질문을 보고.. 한번 찾아봤습니다..ㅡㅡ;;

우선, 메모리 관련이라서 malloc() 함수가 있는 libc 를 찾아봤습니다.
결국은 못찾았습니다만.... 아마도 libc 부분에 있지 않을까 합니다.;;;

죄송


----
I think, therefore I am.

progcom의 이미지

libc에 들어있네요. (strings로 나옵니다)

SIGTERM 먹고 죽을때 내뱉는 메시지네요.
(시그널 관련 부분에 있습니다)