Armadilloフォーラム

coreファイルの生成

sasa0107

2018年3月26日 14時07分

お世話になります。

笹倉と申します。

親機、子機及びサーバー間でソケット通信を行っておりまますが、数日に1回(不定期)に親機が
ダウンします。
そこで、coreファイルの取得を試みようとしておりますが、coreファイルが生成されません。
コンパイル  arm-linux-gnueabi-gcc -g -o ソース
Linux    linux-3.14-at8
です。
ulimit -c unlimited は行いました。
また、プログラムは/etc/config配下においています。
以上の条件でプログラムがSegmentation Fault”を起こした際、
coreファイルが作成されません。
何か条件が足らないのででしょうか?
ご教授の程、よろしくお願い致します。

コメント

y.nakamura

2018年3月26日 14時30分

中村です。

原因は違うかもしれませんが・・・

> そこで、coreファイルの取得を試みようとしておりますが、coreファイルが生成されません。
...
> ulimit -c unlimited は行いました。

"ulimit -c unlimited"を実行したシェルから問題のプログラムを実行してますか?

--
なかむら

sasa0107

2018年4月2日 11時39分

笹倉です。
出張中でしたので、ご返事が遅くなりました。
「ulimit -c unlimited"を実行したシェルから問題のプログラムを実行してますか?」
に関してですが、確認後、再度投稿いたします。

> 中村です。
>
> 原因は違うかもしれませんが・・・
>
> > そこで、coreファイルの取得を試みようとしておりますが、coreファイルが生成されません。
> ...
> > ulimit -c unlimited は行いました。
>
> "ulimit -c unlimited"を実行したシェルから問題のプログラムを実行してますか?
>
> --
> なかむら
>

sasa0107

2018年4月4日 11時27分

笹倉です。
なかむら様のご指摘に従い、試してみましたが、coreファイルは生成されませんでした。
試した内容を記載致します。
まず、ソースですが、フォーラムの中にcoreを生成するチェック用のプログラムがありましたので、
利用させていただきました。
ソース
 #include
 int main(int argc, char* argv[]) {
int* p;
printf("%d\n",*p); /* 未初期化のポインタ変数を参照 */
return 0;
 }
コンパイル
arm-linux-gnueabi-gcc dmp-core-test.c -o dmp-core-test -g
出来ました”dmp-core-test ”をftpでarmadilloに送り、/etc/config配下で起動させましたが、
coreは生成されませんでした。/ect/configで実行したのがまずいかと思い、/home/ftp/pub
で”dmp-core-test ”を実行いたしましたが、coreが生成されませんでした。下記に実行結果を
転機致します。
[root@armadillo420-0 (pts/0) /home/ftp/pub]# ulimit -c unlimited
[root@armadillo420-0 (pts/0) /home/ftp/pub]# ulimit -c
unlimited
[root@armadillo420-0 (pts/0) /home/ftp/pub]# ./dmp-core-test
Segmentation fault
[root@armadillo420-0 (pts/0) /home/ftp/pub]# ls
dmp-core-test
[root@armadillo420-0 (pts/0) /home/ftp/pub]# ls -a
. .. dmp-core-test
[root@armadillo420-0 (pts/0) /home/ftp/pub]#

以上、よろしきお願い致します。

> 笹倉です。
> 出張中でしたので、ご返事が遅くなりました。
> 「ulimit -c unlimited"を実行したシェルから問題のプログラムを実行してますか?」
> に関してですが、確認後、再度投稿いたします。
>
>
> > 中村です。
> >
> > 原因は違うかもしれませんが・・・
> >
> > > そこで、coreファイルの取得を試みようとしておりますが、coreファイルが生成されません。
> > ...
> > > ulimit -c unlimited は行いました。
> >
> > "ulimit -c unlimited"を実行したシェルから問題のプログラムを実行してますか?
> >
> > --
> > なかむら
> >

y.nakamura

2018年4月4日 12時22分

中村です。

> [root@armadillo420-0 (pts/0) /home/ftp/pub]# ./dmp-core-test
> Segmentation fault

出先なためArmadillo-420/440では試せないのですが、
リモートで操作できる状態になっているG3LのDebianで、
笹倉さんのテストプログラムと同じソースで
試してみました。
(コンパイルしたバイナリはデフォルトのa.outのまま)

ulimit -c がゼロになっているときは、
atmark@armadillo:~/tmp/core-test$ ulimit -c 0
atmark@armadillo:~/tmp/core-test$ ulimit -c
0
atmark@armadillo:~/tmp/core-test$ ./a.out
Segmentation fault

ulimit -c がunlimitedになっているときは、
atmark@armadillo:~/tmp/core-test$ ulimit -c unlimited
atmark@armadillo:~/tmp/core-test$ ulimit -c
unlimited
atmark@armadillo:~/tmp/core-test$ ./a.out
Segmentation fault (core dumped)

となり、表示の" (core dumped)"の有無の違いがありました。
後者の場合はカレントディレクトリにcoreができていましたが、
前者の場合にはcoreはありませんでした。

400シリーズでも試してみたいところなのですが、
今日はできそうにありません。

--
なかむら

y.nakamura

2018年4月4日 21時58分

中村です。

カーネル2.6.26-at19ですが、Armadillo-420でやってみました。

ATDE3でコンパイルてArmadillo-420にftpで転送

atmark@atde3:~/tmp/core-test$ arm-linux-gnueabi-gcc -g main.c
 
atmark@atde3:~/tmp/core-test$ ls -l
total 12
-rwxr-xr-x 1 atmark atmark 8175 Apr  4 21:43 a.out
-rw-r--r-- 1 atmark atmark  155 Apr  4 21:43 main.c
 
atmark@atde3:~/tmp/core-test$ ftp 192.168.0.21
Connected to 192.168.0.21.
220 localhost FTP server (GNU inetutils 1.4.1) ready.
Name (192.168.0.21:atmark): ftp
331 Guest login ok, type your name as password.
Password:
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 CWD command successful.
ftp> put a.out
local: a.out remote: a.out
200 PORT command sucessful.
150 Opening BINARY mode data connection for 'a.out'.
226 Transfer complete.
8175 bytes sent in 0.00 secs (82303.1 kB/s)
ftp> quit
221 Goodbye.

Armadillo-420で実行

[root@armadillo420-0 (ttymxc1) ~]# cd /home/ftp/pub/
 
[root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ls -l
-rw-r-----    1 ftp      ftp          8175 Jan  1 09:06 a.out
 
[root@armadillo420-0 (ttymxc1) /home/ftp/pub]# chmod +x a.out
 
[root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ulimit -c 0
 
[root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ulimit -c
0
 
[root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ./a.out
Segmentation fault
 
[root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ls -l
-rwxr-x--x    1 ftp      ftp          8175 Jan  1 09:06 a.out*
 
[root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ulimit -c unlimited
 
[root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ulimit -c
unlimited
 
[root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ./a.out
Segmentation fault (core dumped)
 
[root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ls -l
-rwxr-x--x    1 ftp      ftp          8175 Jan  1 09:06 a.out*
-rw-------    1 root     root       139264 Jan  1 09:09 core

coreができました。

linux-3.14-atXはインストールしていないので試せません。

--
なかむら

sasa0107

2018年4月5日 14時38分

中村 様
笹倉です。

お世話になります。
色々試して頂き、有難うございます。
当方でも、
 armadillo-420に”linux2.x”の環境を作成
 ”dmp-core-test.c”を再コンパイル
 ”dmp-core-test”を動作
を行いますと、coreファイルが生成されました。
 [root@armadillo420-0 (ttyp0) /home/ftp/pub]# ls -l
 -rw------- 1 root root 139264 Jan 1 13:43 core
 -rwxrwxrwx 1 ftp ftp 8200 Jan 1 13:42 dmp-core-test
以上のことから、linux-3.14-atXでは、coreファイルの生成が出来ないのでは
との結論に至りました。
早計かとも思われますが、一様、本投稿に関しましては、終了したく存じます。
以上、有難うございました。

> 中村です。
>
> カーネル2.6.26-at19ですが、Armadillo-420でやってみました。
>
> ATDE3でコンパイルてArmadillo-420にftpで転送
>

> atmark@atde3:~/tmp/core-test$ arm-linux-gnueabi-gcc -g main.c
> 
> atmark@atde3:~/tmp/core-test$ ls -l
> total 12
> -rwxr-xr-x 1 atmark atmark 8175 Apr  4 21:43 a.out
> -rw-r--r-- 1 atmark atmark  155 Apr  4 21:43 main.c
> 
> atmark@atde3:~/tmp/core-test$ ftp 192.168.0.21
> Connected to 192.168.0.21.
> 220 localhost FTP server (GNU inetutils 1.4.1) ready.
> Name (192.168.0.21:atmark): ftp
> 331 Guest login ok, type your name as password.
> Password:
> 230 Guest login ok, access restrictions apply.
> Remote system type is UNIX.
> Using binary mode to transfer files.
> ftp> cd pub
> 250 CWD command successful.
> ftp> put a.out
> local: a.out remote: a.out
> 200 PORT command sucessful.
> 150 Opening BINARY mode data connection for 'a.out'.
> 226 Transfer complete.
> 8175 bytes sent in 0.00 secs (82303.1 kB/s)
> ftp> quit
> 221 Goodbye.
> 

>
> Armadillo-420で実行
>

> [root@armadillo420-0 (ttymxc1) ~]# cd /home/ftp/pub/
> 
> [root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ls -l
> -rw-r-----    1 ftp      ftp          8175 Jan  1 09:06 a.out
> 
> [root@armadillo420-0 (ttymxc1) /home/ftp/pub]# chmod +x a.out
> 
> [root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ulimit -c 0
> 
> [root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ulimit -c
> 0
> 
> [root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ./a.out
> Segmentation fault
> 
> [root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ls -l
> -rwxr-x--x    1 ftp      ftp          8175 Jan  1 09:06 a.out*
> 
> [root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ulimit -c unlimited
> 
> [root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ulimit -c
> unlimited
> 
> [root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ./a.out
> Segmentation fault (core dumped)
> 
> [root@armadillo420-0 (ttymxc1) /home/ftp/pub]# ls -l
> -rwxr-x--x    1 ftp      ftp          8175 Jan  1 09:06 a.out*
> -rw-------    1 root     root       139264 Jan  1 09:09 core
> 

>
> coreができました。
>
> linux-3.14-atXはインストールしていないので試せません。
>
> --
> なかむら
>

otsuka

2018年4月5日 15時32分

大塚と申します。

本件終了とのことですが、
linux-2.6.26-at29/arch/arm/configs/armadillo400_defconfig
の中を見ますと
CONFIG_ELF_CORE=y
になっているのに対し、
linux-3.14-at11/arch/arm/configs/armadillo4x0_defconfig
では
# CONFIG_COREDUMP is not set
になっています。
2.6.x で CORE が出るのに 3.14.x では出ないのはこのためではないでしょうか。

y.nakamura

2018年4月5日 20時24分

中村です。

クローズ宣言が出ていますが、
原因が気になっていたところでした。
大塚さん、ご助言をいただき、ありがとうございます。

> linux-3.14-at11/arch/arm/configs/armadillo4x0_defconfig
> では
> # CONFIG_COREDUMP is not set
> になっています。

これですね。

2台もっている400シリーズは受託開発案件の都合で
3.14に書き換えができないので(書き換えてしまうと
何かと面倒なので)、A410を使っているA-IoTG2で
試してみました。

少し古いカーネルlinux-3.14-at6ですが、
この設定が原因となっていることを確認できました。

--- linux-3.x/.config.old       2016-04-15 11:21:35.354029454 +0900
+++ linux-3.x/.config   2018-04-05 19:53:49.682570819 +0900
@@ -155,6 +155,7 @@
 # CONFIG_KALLSYMS_ALL is not set
 CONFIG_PRINTK=y
 CONFIG_BUG=y
+CONFIG_ELF_CORE=y
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
@@ -532,10 +533,11 @@
 #
 CONFIG_BINFMT_ELF=y
 CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
 CONFIG_BINFMT_SCRIPT=y
 # CONFIG_HAVE_AOUT is not set
 # CONFIG_BINFMT_MISC is not set
-# CONFIG_COREDUMP is not set
+CONFIG_COREDUMP=y
 
 #
 # Power management options

menuconfigでの設定箇所がわかりにくいですが、
ここです。

Linux/arm 3.14.36-at6 Kernel Configuration
  Userspace binary formats  --->
    [ ] Enable core dump support

--
なかむら

sasa0107

2018年4月17日 16時47分

笹倉です。

中村 様
大塚 様

ご返事が送れまして、申し訳ございません。

クローズ宣言させていただきましたが、
中村さん、大塚さんのご助言、有難うございました。
今回は、既に客先納品でlinuxのカーネルを変更することができませんが、
今後の開発の際に、大変参考になります。
今後とも、よろしくお願い致します。

> 中村です。
>
> クローズ宣言が出ていますが、
> 原因が気になっていたところでした。
> 大塚さん、ご助言をいただき、ありがとうございます。
>
> > linux-3.14-at11/arch/arm/configs/armadillo4x0_defconfig
> > では
> > # CONFIG_COREDUMP is not set
> > になっています。
>
> これですね。
>
> 2台もっている400シリーズは受託開発案件の都合で
> 3.14に書き換えができないので(書き換えてしまうと
> 何かと面倒なので)、A410を使っているA-IoTG2で
> 試してみました。
>
> 少し古いカーネルlinux-3.14-at6ですが、
> この設定が原因となっていることを確認できました。
>

> --- linux-3.x/.config.old       2016-04-15 11:21:35.354029454 +0900
> +++ linux-3.x/.config   2018-04-05 19:53:49.682570819 +0900
> @@ -155,6 +155,7 @@
>  # CONFIG_KALLSYMS_ALL is not set
>  CONFIG_PRINTK=y
>  CONFIG_BUG=y
> +CONFIG_ELF_CORE=y
>  CONFIG_BASE_FULL=y
>  CONFIG_FUTEX=y
>  CONFIG_EPOLL=y
> @@ -532,10 +533,11 @@
>  #
>  CONFIG_BINFMT_ELF=y
>  CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
> +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
>  CONFIG_BINFMT_SCRIPT=y
>  # CONFIG_HAVE_AOUT is not set
>  # CONFIG_BINFMT_MISC is not set
> -# CONFIG_COREDUMP is not set
> +CONFIG_COREDUMP=y
> 
>  #
>  # Power management options
> 

>
> menuconfigでの設定箇所がわかりにくいですが、
> ここです。
>

> Linux/arm 3.14.36-at6 Kernel Configuration
>   Userspace binary formats  --->
>     [ ] Enable core dump support
> 

>
> --
> なかむら
>