0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Ubuntu で CoreDump を取得する

Last updated at Posted at 2022-12-12

あるプログラム(/usr/loca/bin/<prog_name>)を実行していたら、以下のエラーを吐いて、core dump したらしいです。

malloc(): memory corruption
Aborted (core dumped)

Ubuntu に詳しくないのですが、core ファイルがどこかにあるはずだ、と思い、/var/crash を探したりしても、ありません。

どういう仕組みになっているのか。。

どうやら、Ubuntu には、apport という仕掛けがあるらしいです。

要すれば、Ubuntu のパッケージであれば、そのエラーを捕捉して、Ubuntu のセキュリティチームに送信できる、みたいな仕組みで、RHEL にも、同様の仕組み(abrt)がありますよね。

で、ちょっと調べると、/var/log/apport.log というところに、ログが出力されているらしい、と。

executable does not belong to a package, ignoring

どうやら、Ubuntu パッケージに含まれていないプログラムだったために、core dumped となっているが、実際は、core dump されていないようです。
では、どうやったらいいのか。。
以下で出来ました。

# mkdir -p ~/.config/apport
# vim ~/.config/apport/settings
[main]
unpackaged=true

パッケージに含まれていないけど、よろしく、って意味でしょうかね。

また、core dump が吐かれるような動作をしてみたら、/var/crash 配下に、以下のようなファイル名のファイルが生成されていました。
フルパスで書きます。

/var/crash/_usr_local_bin_<prog_name>.0.crash

では、これが、CoreDump なのかというと、そうではありませんでした。
次のコマンドで、展開する必要があるようでした。

# apport-unpack /var/crash/_usr_local_bin_<prog_name>.0.crash exp

exp ディレクトリ内に、CoreDump ファイルを発見しました!

プログラムは、デバッグシンボル付きでコンパイルされていませんでしたが、何が起こったかぐらいは分かりました。

# gdb /usr/local/bin/<prog_name> CoreDump
...(snip)...
(gdb) bt
...(snip)...
#3 0x...... in malloc_printerr (Str=str@entry=0x...... "malloc(): memory corruption") at malloc.c:5342
...(snip)...

Signal というファイルを開くと、6 とありました。

(参考)
Apport ~Ubuntu のコアダンプ作成動作~
https://valinux.hatenablog.com/entry/20210721

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?