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ファイルが作成されません。
何か条件が足らないのででしょうか?
ご教授の程、よろしくお願い致します。
コメント
sasa0107
笹倉です。
出張中でしたので、ご返事が遅くなりました。
「ulimit -c unlimited"を実行したシェルから問題のプログラムを実行してますか?」
に関してですが、確認後、再度投稿いたします。
> 中村です。
>
> 原因は違うかもしれませんが・・・
>
> > そこで、coreファイルの取得を試みようとしておりますが、coreファイルが生成されません。
> ...
> > ulimit -c unlimited は行いました。
>
> "ulimit -c unlimited"を実行したシェルから問題のプログラムを実行してますか?
>
> --
> なかむら
>
sasa0107
笹倉です。
なかむら様のご指摘に従い、試してみましたが、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
中村です。
> [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
中村です。
カーネル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
中村 様
笹倉です。
お世話になります。
色々試して頂き、有難うございます。
当方でも、
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
y.nakamura
中村です。
クローズ宣言が出ていますが、
原因が気になっていたところでした。
大塚さん、ご助言をいただき、ありがとうございます。
> 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
笹倉です。
中村 様
大塚 様
ご返事が送れまして、申し訳ございません。
クローズ宣言させていただきましたが、
中村さん、大塚さんのご助言、有難うございました。
今回は、既に客先納品で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 >
>
> --
> なかむら
>
y.nakamura
2018年3月26日 14時30分
中村です。
原因は違うかもしれませんが・・・
> そこで、coreファイルの取得を試みようとしておりますが、coreファイルが生成されません。
...
> ulimit -c unlimited は行いました。
"ulimit -c unlimited"を実行したシェルから問題のプログラムを実行してますか?
--
なかむら