unresolved_external
unresolved_external

Reputation: 2018

Empty core file on Solaris

My program crashes from time to time and dumping core. But when I am trying to get stack from the core file I get following result:

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

I thought there were some problems with mdb, but other applications saves core file correctly, so what can be the reason of this problem?

Upvotes: -1

Views: 331

Answers (1)

richlowe
richlowe

Reputation: 181

mdb is reporting faithfully that something is wrong with the core. When a mapping fails to dump Solaris sets a flag (PF_SUNW_FAILURE) indicating that it failed, and stores errno instead -- This is the "Interrupted System Call" you're seeing, the errno indicating why each mapping failed to dump.

The most common way to get here is to have signalled the process while the core was being dumped, aborting the dump. I don't think Oracle Solaris provides a definitive way to be sure that's what's happened, though, or any other clue as to why a mapping failed to dump. If your process is large and/or running under any kind of system to automatically restart or monitor it (I think, but am not certain, that even SMF would kill a process taking a sufficiently long time to dump, causing the dump to abort, for eg.), I'd suspect it was being signalled while it was dumping core, rather than something else going wrong.

If you're certain you're not being signalled while dumping core, something is happening that causes a write to the filesystem on which the core is being dumped to fail EINTR, and it probably won't be easy to determine what.

Upvotes: 3

Related Questions