2013-05-07 1 views
0

내 프로그램이 때때로 충돌하고 코어를 덤프합니다. 하지만 코어 파일에서 스택을 얻기 위해 노력하고 있어요 때이 결과를 다음 얻을 :Solaris의 빈 코어 파일

mdb: core file data for mapping at 100000000 not saved: Interrupted system call 
mdb: core file data for mapping at 100250000 not saved: Interrupted system call 
mdb: core file data for mapping at 10035a000 not saved: Interrupted system call 
mdb: core file data for mapping at 100360000 not saved: Interrupted system call 
mdb: core file data for mapping at 100440000 not saved: Interrupted system call 
mdb: core file data for mapping at 100446000 not saved: Interrupted system call 
mdb: core file data for mapping at 100450000 not saved: Interrupted system call 
mdb: core file data for mapping at 100800000 not saved: Interrupted system call 

나는 MDB 몇 가지 문제가 있었다 생각했지만, 다른 응용 프로그램은 그래서이 문제의 이유가 될 수 있고, 제대로 코어 파일을 저장 ?

미리 감사드립니다.

+0

'ulimit -c'는 무엇입니까 –

+0

그것은 무제한입니다 –

답변

2

mdb은 코어에 문제가 있다고 충실하게보고합니다. 매핑이 실패 할 때 Solaris는 실패했음을 나타내는 플래그 (PF_SUNW_FAILURE)를 설정하고 대신 errno을 저장합니다. 이것은 "매핑 된 시스템 호출"입니다. 각 매핑이 덤프하지 못한 이유를 나타내는 errno가 표시됩니다.

여기서 가장 일반적인 방법은 코어가 덤프되는 동안 프로세스에 신호를 보내 덤프를 중단하는 것입니다. 필자는 Oracle Solaris가 그런 일이 일어 났는지 확신 할 수있는 확실한 방법을 제공하지 못한다고 생각합니다. 또는 매핑이 덤프되지 않은 이유에 대한 다른 단서를 제공합니다. 당신의 프로세스가 크고 어떤 종류의 시스템 하에서도 자동으로 재시작하거나 모니터 할 수 있다면 (SMF조차도 덤프하는데 충분히 오랜 시간이 걸리는 프로세스를 죽이고 덤프를 중단 시키며, 예를 들면.), 나는 틀린 다른 것보다 핵심을 덤핑하는 동안 신호를 받았다고 의심한다.

는 코어가 EINTR을 실패 덤프되고있는 파일 시스템에 쓰기가 발생 코어, 뭔가 일어나고 덤핑 동안하지신호되고있어 특정하고 있으며, 경우 아마도 쉽지 않을 것 무엇을 결정합니다.