[Go to BBS]
All articles in a thread
SubjectInstall SAD on FreeBSD/amd64 9.3
Article No1266
Date: 2014/07/31(Thu) 11:52:25
ContributorToshiya Muto
東北大の武藤です

intel corei5のマシンにFreeBSD/amd64 9.3を導入してSADをインストールを試みたのですが

コンパイルは通ったようなのですがexampleの実行でこけていることがわかりました

oldsad/bin/gsは生成されているので単体で実行したところ
$ ./gs
*** Welcome to SAD Ver.1.0.10.6.13.2k64 built at 2014-07-31 02:39:25 +0900 ***
*** Today: 02:40:44 Thursday 07/31/2014 ***
Segmentation fault
のように単体で実行してもセグメンテーションフォルトですぐに落ちてしまいます

まったく情報が足りないと思いますが何かお気づきの点があれば教えていただきたいです

いれたSADはk64-1-6ブランチでGCCのバージョンは4.9.2でコンパイルしてます
FreeBSDにはgnome2を導入してあります

まことに低レベルな質問でもうしわけありませんがよろしくお願いします

SubjectRe: Install SAD on FreeBSD/amd64 9.3
Article No1269
Date: 2014/08/04(Mon) 09:38:31
ContributorAkio Morita
> 東北大の武藤です
>
> intel corei5のマシンにFreeBSD/amd64 9.3を導入してSADをインストールを試みたのですが
>
> コンパイルは通ったようなのですがexampleの実行でこけていることがわかりました
>
> oldsad/bin/gsは生成されているので単体で実行したところ
> $ ./gs
> *** Welcome to SAD Ver.1.0.10.6.13.2k64 built at 2014-07-31 02:39:25 +0900 ***
> *** Today: 02:40:44 Thursday 07/31/2014 ***
> Segmentation fault
> のように単体で実行してもセグメンテーションフォルトですぐに落ちてしまいます
>
> まったく情報が足りないと思いますが何かお気づきの点があれば教えていただきたいです
>
何が起こっているかを把握するために、-g -O1辺りでコンパイルして、SEGVで生成された core fileから
バックトレースを取るべきです

また、COPTへ -DDEBUG_MEMORY=3を付けてコンパイルするとSADの内部allocatorからデバックメッセージが取り出せます

SubjectRe^2: Install SAD on FreeBSD/amd64 9.3
Article No1270
Date: 2014/08/04(Mon) 11:57:17
ContributorToshiya Muto
> > 東北大の武藤です
> >
> > intel corei5のマシンにFreeBSD/amd64 9.3を導入してSADをインストールを試みたのですが
> >
> > コンパイルは通ったようなのですがexampleの実行でこけていることがわかりました
> >
> > oldsad/bin/gsは生成されているので単体で実行したところ
> > $ ./gs
> > *** Welcome to SAD Ver.1.0.10.6.13.2k64 built at 2014-07-31 02:39:25 +0900 ***
> > *** Today: 02:40:44 Thursday 07/31/2014 ***
> > Segmentation fault
> > のように単体で実行してもセグメンテーションフォルトですぐに落ちてしまいます
> >
> > まったく情報が足りないと思いますが何かお気づきの点があれば教えていただきたいです
> >
> 何が起こっているかを把握するために、-g -O1辺りでコンパイルして、SEGVで生成された core fileから
> バックトレースを取るべきです
>
> また、COPTへ -DDEBUG_MEMORY=3を付けてコンパイルするとSADの内部allocatorからデバックメッセージが取り出せます

コメントありがとうございます
試してみました。結果は以下のようになりました

-DDEBUG_MEMORY=3を付けて実行
> bin/gs
*** Welcome to SAD Ver.1.0.10.6.13.2k64 built at 2014-08-04 01:31:35 +0900 ***
*** Today: 01:54:28 Monday 08/04/2014 ***
lminit: rlist0=0x800000000 align=8 bits=61 offset=0
Segmentation fault (core dumped)

コアファイルをみてみると
> gdb771 obj/AMD64-FreeBSD9/sad1.exe sad1.exe.core
GNU gdb (GDB) 7.7.1 [GDB v7.7.1 for FreeBSD]
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-portbld-freebsd9.3".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from obj/AMD64-FreeBSD9/sad1.exe...done.
[New process 100114]
Cannot access memory at address 0x800aa9808
Cannot access memory at address 0x800aa9800
(gdb) where
#0 0x000000080330e3c0 in ?? ()
#1 0x00007ffffffff003 in ?? ()
#2 0x000000080330e3c0 in ?? ()
#3 0x0000000000000000 in ?? ()
(gdb)

別途gdb上でrunしてみると
(gdb) run
Starting program: /usr/home/tmuto/oldsad/obj/AMD64-FreeBSD9/sad1.exe
[New LWP 100251]
[New Thread 80501f400 (LWP 100251)]
*** Welcome to SAD Ver.1.0.10.6.13.2k64 built at 2014-08-04 01:31:35 +0900 ***
*** Today: 02:42:21 Monday 08/04/2014 ***
lminit: rlist0=0x800000000 align=8 bits=61 offset=0
[New LWP 100251]

Program received signal SIGSEGV, Segmentation fault.
[Switching to LWP 100251]
0x000000080303207c in ?? () from /lib/libc.so.7
(gdb) where
#0 0x000000080303207c in ?? () from /lib/libc.so.7
#1 0x0000000000423a1d in mapallocfixed8_ (base=0x800000000,
usize=usize@entry=0x7fffffffe448, unit=unit@entry=0x649a3c,
irtc=irtc@entry=0x7fffffffe45c)
at /usr/home/tmuto/oldsad/src/sim/unix_memory_.c:412
#2 0x00000000004adad3 in tfstk::talocinit ()
at /usr/home/tmuto/oldsad/src/tfstk.f:348
#3 0x000000000043c1a1 in inimem () at /usr/home/tmuto/oldsad/src/pfalloc.f:24
#4 0x0000000000422b36 in MAIN__ () at /usr/home/tmuto/oldsad/src/MAIN.f:27
(gdb)

のような結果を得ましたがこれでなにか情報は得られるでしょうか?
正直なところ当方浅学のためよくわかりません

SubjectRe^3: Install SAD on FreeBSD/amd64 9.3
Article No1271
Date: 2014/08/04(Mon) 13:37:29
ContributorAkio Morita
> > > 東北大の武藤です
> > >
> > > intel corei5のマシンにFreeBSD/amd64 9.3を導入してSADをインストールを試みたのですが
> > >
> > > コンパイルは通ったようなのですがexampleの実行でこけていることがわかりました
> > >
> > > oldsad/bin/gsは生成されているので単体で実行したところ
> > > $ ./gs
> > > *** Welcome to SAD Ver.1.0.10.6.13.2k64 built at 2014-07-31 02:39:25 +0900 ***
> > > *** Today: 02:40:44 Thursday 07/31/2014 ***
> > > Segmentation fault
> > > のように単体で実行してもセグメンテーションフォルトですぐに落ちてしまいます
> > >
> > > まったく情報が足りないと思いますが何かお気づきの点があれば教えていただきたいです
> > >
> > 何が起こっているかを把握するために、-g -O1辺りでコンパイルして、SEGVで生成された core fileから
> > バックトレースを取るべきです
> >
> > また、COPTへ -DDEBUG_MEMORY=3を付けてコンパイルするとSADの内部allocatorからデバックメッセージが取り出せます
>
> コメントありがとうございます
> 試してみました。結果は以下のようになりました
>
> -DDEBUG_MEMORY=3を付けて実行
> > bin/gs
> *** Welcome to SAD Ver.1.0.10.6.13.2k64 built at 2014-08-04 01:31:35 +0900 ***
> *** Today: 01:54:28 Monday 08/04/2014 ***
> lminit: rlist0=0x800000000 align=8 bits=61 offset=0
> Segmentation fault (core dumped)
>
> コアファイルをみてみると
> > gdb771 obj/AMD64-FreeBSD9/sad1.exe sad1.exe.core
> GNU gdb (GDB) 7.7.1 [GDB v7.7.1 for FreeBSD]
> Copyright (C) 2014 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law. Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "x86_64-portbld-freebsd9.3".
> Type "show configuration" for configuration details.
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>.
> Find the GDB manual and other documentation resources online at:
> <http://www.gnu.org/software/gdb/documentation/>.
> For help, type "help".
> Type "apropos word" to search for commands related to "word"...
> Reading symbols from obj/AMD64-FreeBSD9/sad1.exe...done.
> [New process 100114]
> Cannot access memory at address 0x800aa9808
> Cannot access memory at address 0x800aa9800
> (gdb) where
> #0 0x000000080330e3c0 in ?? ()
> #1 0x00007ffffffff003 in ?? ()
> #2 0x000000080330e3c0 in ?? ()
> #3 0x0000000000000000 in ?? ()
> (gdb)
>
> 別途gdb上でrunしてみると
> (gdb) run
> Starting program: /usr/home/tmuto/oldsad/obj/AMD64-FreeBSD9/sad1.exe
> [New LWP 100251]
> [New Thread 80501f400 (LWP 100251)]
> *** Welcome to SAD Ver.1.0.10.6.13.2k64 built at 2014-08-04 01:31:35 +0900 ***
> *** Today: 02:42:21 Monday 08/04/2014 ***
> lminit: rlist0=0x800000000 align=8 bits=61 offset=0
> [New LWP 100251]
>
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to LWP 100251]
> 0x000000080303207c in ?? () from /lib/libc.so.7
> (gdb) where
> #0 0x000000080303207c in ?? () from /lib/libc.so.7
> #1 0x0000000000423a1d in mapallocfixed8_ (base=0x800000000,
> usize=usize@entry=0x7fffffffe448, unit=unit@entry=0x649a3c,
> irtc=irtc@entry=0x7fffffffe45c)
> at /usr/home/tmuto/oldsad/src/sim/unix_memory_.c:412
> #2 0x00000000004adad3 in tfstk::talocinit ()
> at /usr/home/tmuto/oldsad/src/tfstk.f:348
> #3 0x000000000043c1a1 in inimem () at /usr/home/tmuto/oldsad/src/pfalloc.f:24
> #4 0x0000000000422b36 in MAIN__ () at /usr/home/tmuto/oldsad/src/MAIN.f:27
> (gdb)
>
> のような結果を得ましたがこれでなにか情報は得られるでしょうか?
> 正直なところ当方浅学のためよくわかりません
>
src/sim/unix_memory_.c(正確には、unix_memory8_.c)にある mapallocfixed_()にて、mmap(2)の呼び出しで失敗しているようです
mmap(2)の呼び出しの確認前後の状況は、ktrace(1)/kdump(1)で確認できるかと思われます

inimem_()から始まる一連のSAD内部のheap管理構造の初期化に失敗しているので、
その辺のコードを修正すれば良いと思います

SubjectRe^4: Install SAD on FreeBSD/amd64 9.3
Article No1272
Date: 2014/08/04(Mon) 14:15:13
ContributorAkio Morita
> > > > 東北大の武藤です
> > > >
> > > > intel corei5のマシンにFreeBSD/amd64 9.3を導入してSADをインストールを試みたのですが
> > > >
> > > > コンパイルは通ったようなのですがexampleの実行でこけていることがわかりました
> > > >
> > > > oldsad/bin/gsは生成されているので単体で実行したところ
> > > > $ ./gs
> > > > *** Welcome to SAD Ver.1.0.10.6.13.2k64 built at 2014-07-31 02:39:25 +0900 ***
> > > > *** Today: 02:40:44 Thursday 07/31/2014 ***
> > > > Segmentation fault
> > > > のように単体で実行してもセグメンテーションフォルトですぐに落ちてしまいます
> > > >
> > > > まったく情報が足りないと思いますが何かお気づきの点があれば教えていただきたいです
> > > >
> > > 何が起こっているかを把握するために、-g -O1辺りでコンパイルして、SEGVで生成された core fileから
> > > バックトレースを取るべきです
> > >
> > > また、COPTへ -DDEBUG_MEMORY=3を付けてコンパイルするとSADの内部allocatorからデバックメッセージが取り出せます
> >
> > コメントありがとうございます
> > 試してみました。結果は以下のようになりました
> >
> > -DDEBUG_MEMORY=3を付けて実行
> > > bin/gs
> > *** Welcome to SAD Ver.1.0.10.6.13.2k64 built at 2014-08-04 01:31:35 +0900 ***
> > *** Today: 01:54:28 Monday 08/04/2014 ***
> > lminit: rlist0=0x800000000 align=8 bits=61 offset=0
> > Segmentation fault (core dumped)
> >
> > コアファイルをみてみると
> > > gdb771 obj/AMD64-FreeBSD9/sad1.exe sad1.exe.core
> > GNU gdb (GDB) 7.7.1 [GDB v7.7.1 for FreeBSD]
> > Copyright (C) 2014 Free Software Foundation, Inc.
> > License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> > This is free software: you are free to change and redistribute it.
> > There is NO WARRANTY, to the extent permitted by law. Type "show copying"
> > and "show warranty" for details.
> > This GDB was configured as "x86_64-portbld-freebsd9.3".
> > Type "show configuration" for configuration details.
> > For bug reporting instructions, please see:
> > <http://www.gnu.org/software/gdb/bugs/>.
> > Find the GDB manual and other documentation resources online at:
> > <http://www.gnu.org/software/gdb/documentation/>.
> > For help, type "help".
> > Type "apropos word" to search for commands related to "word"...
> > Reading symbols from obj/AMD64-FreeBSD9/sad1.exe...done.
> > [New process 100114]
> > Cannot access memory at address 0x800aa9808
> > Cannot access memory at address 0x800aa9800
> > (gdb) where
> > #0 0x000000080330e3c0 in ?? ()
> > #1 0x00007ffffffff003 in ?? ()
> > #2 0x000000080330e3c0 in ?? ()
> > #3 0x0000000000000000 in ?? ()
> > (gdb)
> >
> > 別途gdb上でrunしてみると
> > (gdb) run
> > Starting program: /usr/home/tmuto/oldsad/obj/AMD64-FreeBSD9/sad1.exe
> > [New LWP 100251]
> > [New Thread 80501f400 (LWP 100251)]
> > *** Welcome to SAD Ver.1.0.10.6.13.2k64 built at 2014-08-04 01:31:35 +0900 ***
> > *** Today: 02:42:21 Monday 08/04/2014 ***
> > lminit: rlist0=0x800000000 align=8 bits=61 offset=0
> > [New LWP 100251]
> >
> > Program received signal SIGSEGV, Segmentation fault.
> > [Switching to LWP 100251]
> > 0x000000080303207c in ?? () from /lib/libc.so.7
> > (gdb) where
> > #0 0x000000080303207c in ?? () from /lib/libc.so.7
> > #1 0x0000000000423a1d in mapallocfixed8_ (base=0x800000000,
> > usize=usize@entry=0x7fffffffe448, unit=unit@entry=0x649a3c,
> > irtc=irtc@entry=0x7fffffffe45c)
> > at /usr/home/tmuto/oldsad/src/sim/unix_memory_.c:412
> > #2 0x00000000004adad3 in tfstk::talocinit ()
> > at /usr/home/tmuto/oldsad/src/tfstk.f:348
> > #3 0x000000000043c1a1 in inimem () at /usr/home/tmuto/oldsad/src/pfalloc.f:24
> > #4 0x0000000000422b36 in MAIN__ () at /usr/home/tmuto/oldsad/src/MAIN.f:27
> > (gdb)
> >
> > のような結果を得ましたがこれでなにか情報は得られるでしょうか?
> > 正直なところ当方浅学のためよくわかりません
> >
> src/sim/unix_memory_.c(正確には、unix_memory8_.c)にある mapallocfixed_()にて、mmap(2)の呼び出しで失敗しているようです
> mmap(2)の呼び出しの確認前後の状況は、ktrace(1)/kdump(1)で確認できるかと思われます
>
> inimem_()から始まる一連のSAD内部のheap管理構造の初期化に失敗しているので、
> その辺のコードを修正すれば良いと思います
>
つらつらと眺めた限り、src/tfstk.fで定義されている maccbk module内の integer(8), pointer: klist(:)が未初期化のまま
call lminitにてdereferenceされてるのが原因かなぁ・・・

多分、未定義動作になるので、SEGVしても Fortran的には正しい実装動作です

SubjectRe^5: Install SAD on FreeBSD/amd64 9.3
Article No1273
Date: 2014/08/06(Wed) 14:05:24
ContributorToshiya Muto
> > > > > 東北大の武藤です
> > > > >
> > > > > intel corei5のマシンにFreeBSD/amd64 9.3を導入してSADをインストールを試みたのですが
> > > > >
> > > > > コンパイルは通ったようなのですがexampleの実行でこけていることがわかりました
> > > > >
> > > > > oldsad/bin/gsは生成されているので単体で実行したところ
> > > > > $ ./gs
> > > > > *** Welcome to SAD Ver.1.0.10.6.13.2k64 built at 2014-07-31 02:39:25 +0900 ***
> > > > > *** Today: 02:40:44 Thursday 07/31/2014 ***
> > > > > Segmentation fault
> > > > > のように単体で実行してもセグメンテーションフォルトですぐに落ちてしまいます
> > > > >
> > > > > まったく情報が足りないと思いますが何かお気づきの点があれば教えていただきたいです
> > > > >
> > > > 何が起こっているかを把握するために、-g -O1辺りでコンパイルして、SEGVで生成された core fileから
> > > > バックトレースを取るべきです
> > > >
> > > > また、COPTへ -DDEBUG_MEMORY=3を付けてコンパイルするとSADの内部allocatorからデバックメッセージが取り出せます
> > >
> > > コメントありがとうございます
> > > 試してみました。結果は以下のようになりました
> > >
> > > -DDEBUG_MEMORY=3を付けて実行
> > > > bin/gs
> > > *** Welcome to SAD Ver.1.0.10.6.13.2k64 built at 2014-08-04 01:31:35 +0900 ***
> > > *** Today: 01:54:28 Monday 08/04/2014 ***
> > > lminit: rlist0=0x800000000 align=8 bits=61 offset=0
> > > Segmentation fault (core dumped)
> > >
> > > コアファイルをみてみると
> > > > gdb771 obj/AMD64-FreeBSD9/sad1.exe sad1.exe.core
> > > GNU gdb (GDB) 7.7.1 [GDB v7.7.1 for FreeBSD]
> > > Copyright (C) 2014 Free Software Foundation, Inc.
> > > License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> > > This is free software: you are free to change and redistribute it.
> > > There is NO WARRANTY, to the extent permitted by law. Type "show copying"
> > > and "show warranty" for details.
> > > This GDB was configured as "x86_64-portbld-freebsd9.3".
> > > Type "show configuration" for configuration details.
> > > For bug reporting instructions, please see:
> > > <http://www.gnu.org/software/gdb/bugs/>.
> > > Find the GDB manual and other documentation resources online at:
> > > <http://www.gnu.org/software/gdb/documentation/>.
> > > For help, type "help".
> > > Type "apropos word" to search for commands related to "word"...
> > > Reading symbols from obj/AMD64-FreeBSD9/sad1.exe...done.
> > > [New process 100114]
> > > Cannot access memory at address 0x800aa9808
> > > Cannot access memory at address 0x800aa9800
> > > (gdb) where
> > > #0 0x000000080330e3c0 in ?? ()
> > > #1 0x00007ffffffff003 in ?? ()
> > > #2 0x000000080330e3c0 in ?? ()
> > > #3 0x0000000000000000 in ?? ()
> > > (gdb)
> > >
> > > 別途gdb上でrunしてみると
> > > (gdb) run
> > > Starting program: /usr/home/tmuto/oldsad/obj/AMD64-FreeBSD9/sad1.exe
> > > [New LWP 100251]
> > > [New Thread 80501f400 (LWP 100251)]
> > > *** Welcome to SAD Ver.1.0.10.6.13.2k64 built at 2014-08-04 01:31:35 +0900 ***
> > > *** Today: 02:42:21 Monday 08/04/2014 ***
> > > lminit: rlist0=0x800000000 align=8 bits=61 offset=0
> > > [New LWP 100251]
> > >
> > > Program received signal SIGSEGV, Segmentation fault.
> > > [Switching to LWP 100251]
> > > 0x000000080303207c in ?? () from /lib/libc.so.7
> > > (gdb) where
> > > #0 0x000000080303207c in ?? () from /lib/libc.so.7
> > > #1 0x0000000000423a1d in mapallocfixed8_ (base=0x800000000,
> > > usize=usize@entry=0x7fffffffe448, unit=unit@entry=0x649a3c,
> > > irtc=irtc@entry=0x7fffffffe45c)
> > > at /usr/home/tmuto/oldsad/src/sim/unix_memory_.c:412
> > > #2 0x00000000004adad3 in tfstk::talocinit ()
> > > at /usr/home/tmuto/oldsad/src/tfstk.f:348
> > > #3 0x000000000043c1a1 in inimem () at /usr/home/tmuto/oldsad/src/pfalloc.f:24
> > > #4 0x0000000000422b36 in MAIN__ () at /usr/home/tmuto/oldsad/src/MAIN.f:27
> > > (gdb)
> > >
> > > のような結果を得ましたがこれでなにか情報は得られるでしょうか?
> > > 正直なところ当方浅学のためよくわかりません
> > >
> > src/sim/unix_memory_.c(正確には、unix_memory8_.c)にある mapallocfixed_()にて、mmap(2)の呼び出しで失敗しているようです
> > mmap(2)の呼び出しの確認前後の状況は、ktrace(1)/kdump(1)で確認できるかと思われます
> >
> > inimem_()から始まる一連のSAD内部のheap管理構造の初期化に失敗しているので、
> > その辺のコードを修正すれば良いと思います
> >
> つらつらと眺めた限り、src/tfstk.fで定義されている maccbk module内の integer(8), pointer: klist(:)が未初期化のまま
> call lminitにてdereferenceされてるのが原因かなぁ・・・
>
> 多分、未定義動作になるので、SEGVしても Fortran的には正しい実装動作です

返事が遅れて申し訳ありません

ktrace(1)/kdump(1)の結果です
落ちている近傍の物だけですがもっと上から追わないとわからないんでしょうか?
読み方もちょっとわからないのでどこを切り出せば情報になるのかわかりません
本当に申し訳ないです

84154 sad1.exe RET write 43/0x2b
84154 sad1.exe CALL madvise(0x8050c1000,0x41000,MADV_FREE)
84154 sad1.exe RET madvise 0
84154 sad1.exe CALL write(0x2,0x7fffffffdbc0,0x34)
84154 sad1.exe GIO fd 2 wrote 52 bytes
"lminit: rlist0=0x800000000 align=8 bits=61 offset=0
"
84154 sad1.exe RET write 52/0x34
84154 sad1.exe CALL mmap(0x800000000,0x400000000,0x3<PROT_READ|PROT_WRITE>,0x1012<MAP_PRIVATE|MAP_FIXED|MAP_ANON>,0xffffffff,0)
84154 sad1.exe RET mmap 34359738368/0x800000000
84154 sad1.exe PSIG SIGSEGV caught handler=0x80330e3c0 mask=0x0 code=0x2
84154 sad1.exe PSIG SIGSEGV SIG_DFL code=0x2
84154 sad1.exe NAMI "sad1.exe.core"

inimem_()内でklistを使っているcall lminitはコメントアウトされているようですが
他のところでcallされているんでしょうか?
どのあたりのコードを修正すればいいのか。。。

SubjectRe^6: Install SAD on FreeBSD/amd64 9.3
Article No1274
Date: 2014/08/06(Wed) 17:18:18
ContributorAkio Morita
> ktrace(1)/kdump(1)の結果です
> 落ちている近傍の物だけですがもっと上から追わないとわからないんでしょうか?
> 読み方もちょっとわからないのでどこを切り出せば情報になるのかわかりません
> 本当に申し訳ないです
>
> 84154 sad1.exe RET write 43/0x2b
> 84154 sad1.exe CALL madvise(0x8050c1000,0x41000,MADV_FREE)
> 84154 sad1.exe RET madvise 0
> 84154 sad1.exe CALL write(0x2,0x7fffffffdbc0,0x34)
> 84154 sad1.exe GIO fd 2 wrote 52 bytes
> "lminit: rlist0=0x800000000 align=8 bits=61 offset=0
> "
> 84154 sad1.exe RET write 52/0x34
> 84154 sad1.exe CALL mmap(0x800000000,0x400000000,0x3<PROT_READ|PROT_WRITE>,0x1012<MAP_PRIVATE|MAP_FIXED|MAP_ANON>,0xffffffff,0)
> 84154 sad1.exe RET mmap 34359738368/0x800000000
> 84154 sad1.exe PSIG SIGSEGV caught handler=0x80330e3c0 mask=0x0 code=0x2
> 84154 sad1.exe PSIG SIGSEGV SIG_DFL code=0x2
> 84154 sad1.exe NAMI "sad1.exe.core"
>
> inimem_()内でklistを使っているcall lminitはコメントアウトされているようですが
> 他のところでcallされているんでしょうか?
> どのあたりのコードを修正すればいいのか。。。
>
grepで追いかけると、初期化のコードフローは、以下の通り
main routine @ MAIN.f
- inimem @ pfalloc.f
-- talocinit @ tfstk.f
--- tfcbkinit @ tfstk.f
---- lminit_ @ sim/unix_memory_.c
--- mapallocfixed_ @ sim/unix_memory_.c

kernel traceからは、mmap(2)は成功しており、mmapで貼った仮想メモリに触って SEGVしてるように見えます
ここから先の動作解析には、kernelの動作やプロセスの仮想メモリマップの知識が必要な気がします

SubjectRe^7: Install SAD on FreeBSD/amd64 9.3
Article No1275
Date: 2014/08/06(Wed) 17:57:27
ContributorAkio Morita
> > ktrace(1)/kdump(1)の結果です
> > 落ちている近傍の物だけですがもっと上から追わないとわからないんでしょうか?
> > 読み方もちょっとわからないのでどこを切り出せば情報になるのかわかりません
> > 本当に申し訳ないです
> >
> > 84154 sad1.exe RET write 43/0x2b
> > 84154 sad1.exe CALL madvise(0x8050c1000,0x41000,MADV_FREE)
> > 84154 sad1.exe RET madvise 0
> > 84154 sad1.exe CALL write(0x2,0x7fffffffdbc0,0x34)
> > 84154 sad1.exe GIO fd 2 wrote 52 bytes
> > "lminit: rlist0=0x800000000 align=8 bits=61 offset=0
> > "
> > 84154 sad1.exe RET write 52/0x34
> > 84154 sad1.exe CALL mmap(0x800000000,0x400000000,0x3<PROT_READ|PROT_WRITE>,0x1012<MAP_PRIVATE|MAP_FIXED|MAP_ANON>,0xffffffff,0)
> > 84154 sad1.exe RET mmap 34359738368/0x800000000
> > 84154 sad1.exe PSIG SIGSEGV caught handler=0x80330e3c0 mask=0x0 code=0x2
> > 84154 sad1.exe PSIG SIGSEGV SIG_DFL code=0x2
> > 84154 sad1.exe NAMI "sad1.exe.core"
> >
> > inimem_()内でklistを使っているcall lminitはコメントアウトされているようですが
> > 他のところでcallされているんでしょうか?
> > どのあたりのコードを修正すればいいのか。。。
> >
> grepで追いかけると、初期化のコードフローは、以下の通り
> main routine @ MAIN.f
> - inimem @ pfalloc.f
> -- talocinit @ tfstk.f
> --- tfcbkinit @ tfstk.f
> ---- lminit_ @ sim/unix_memory_.c
> --- mapallocfixed_ @ sim/unix_memory_.c
>
> kernel traceからは、mmap(2)は成功しており、mmapで貼った仮想メモリに触って SEGVしてるように見えます
> ここから先の動作解析には、kernelの動作やプロセスの仮想メモリマップの知識が必要な気がします
>
動作比較としては、KEK内のSAD計算機(FreeBSD/amd64 9.3-STABLE r269298)環境では、
(ka .ge. kcpthre)が .false.となり elseブロック側にフローが流れるので、mapallocfixed8は呼び出されません

SubjectRe^7: Install SAD on FreeBSD/amd64 9.3
Article No1276
Date: 2014/08/06(Wed) 17:57:45
ContributorToshiya Muto
> > ktrace(1)/kdump(1)の結果です
> > 落ちている近傍の物だけですがもっと上から追わないとわからないんでしょうか?
> > 読み方もちょっとわからないのでどこを切り出せば情報になるのかわかりません
> > 本当に申し訳ないです
> >
> > 84154 sad1.exe RET write 43/0x2b
> > 84154 sad1.exe CALL madvise(0x8050c1000,0x41000,MADV_FREE)
> > 84154 sad1.exe RET madvise 0
> > 84154 sad1.exe CALL write(0x2,0x7fffffffdbc0,0x34)
> > 84154 sad1.exe GIO fd 2 wrote 52 bytes
> > "lminit: rlist0=0x800000000 align=8 bits=61 offset=0
> > "
> > 84154 sad1.exe RET write 52/0x34
> > 84154 sad1.exe CALL mmap(0x800000000,0x400000000,0x3<PROT_READ|PROT_WRITE>,0x1012<MAP_PRIVATE|MAP_FIXED|MAP_ANON>,0xffffffff,0)
> > 84154 sad1.exe RET mmap 34359738368/0x800000000
> > 84154 sad1.exe PSIG SIGSEGV caught handler=0x80330e3c0 mask=0x0 code=0x2
> > 84154 sad1.exe PSIG SIGSEGV SIG_DFL code=0x2
> > 84154 sad1.exe NAMI "sad1.exe.core"
> >
> > inimem_()内でklistを使っているcall lminitはコメントアウトされているようですが
> > 他のところでcallされているんでしょうか?
> > どのあたりのコードを修正すればいいのか。。。
> >
> grepで追いかけると、初期化のコードフローは、以下の通り
> main routine @ MAIN.f
> - inimem @ pfalloc.f
> -- talocinit @ tfstk.f
> --- tfcbkinit @ tfstk.f
> ---- lminit_ @ sim/unix_memory_.c
> --- mapallocfixed_ @ sim/unix_memory_.c
>
> kernel traceからは、mmap(2)は成功しており、mmapで貼った仮想メモリに触って SEGVしてるように見えます
> ここから先の動作解析には、kernelの動作やプロセスの仮想メモリマップの知識が必要な気がします

そうですか。。。
それは完全に私の能力からははみ出てますね。。。

お忙しいなか相談に乗っていただきありがとうございました

Ubuntu14.04.1.amd64なども試してみたのですがコンパイルは通ったのですが
うまく動作しなかったんですよね。。。。

intel系のPCにインストールして成功した組み合わせ(OS+SADブランチ)というのはないんですかね?

SubjectRe^8: Install SAD on FreeBSD/amd64 9.3
Article No1277
Date: 2014/08/07(Thu) 15:15:27
ContributorAkio Morita
> Ubuntu14.04.1.amd64なども試してみたのですがコンパイルは通ったのですが
> うまく動作しなかったんですよね。。。。
>
> intel系のPCにインストールして成功した組み合わせ(OS+SADブランチ)というのはないんですかね?
>
KEKのSAD計算機は、FreeBSD/amd64 9-STABLE + lang/gcc(4.7.4) + MAIN trunk/k64-1-6 branchの組み合わせで稼働中
ただし、MAIN trunkの動作を保証するためてにカーネルパラメターを調整しています

SubjectRe^9: Install SAD on FreeBSD/amd64 9.3
Article No1278
Date: 2014/08/13(Wed) 16:20:13
ContributorToshiya Muto
> > Ubuntu14.04.1.amd64なども試してみたのですがコンパイルは通ったのですが
> > うまく動作しなかったんですよね。。。。
> >
> > intel系のPCにインストールして成功した組み合わせ(OS+SADブランチ)というのはないんですかね?
> >
> KEKのSAD計算機は、FreeBSD/amd64 9-STABLE + lang/gcc(4.7.4) + MAIN trunk/k64-1-6 branchの組み合わせで稼働中
> ただし、MAIN trunkの動作を保証するためてにカーネルパラメターを調整しています

MAIN TRUNKの動作を保証するカーネルパラメータは具体的にどこのパラメータを変更すればできるのでしょうか?

挑戦してみたいので教えていただけると幸いです

それともやはりハード環境によって調整すべきパラメータが変わるんでしょうか?

SubjectRe^10: Install SAD on FreeBSD/amd64 9.3
Article No1279
Date: 2014/08/14(Thu) 10:58:55
ContributorAkio Morita
> > > Ubuntu14.04.1.amd64なども試してみたのですがコンパイルは通ったのですが
> > > うまく動作しなかったんですよね。。。。
> > >
> > > intel系のPCにインストールして成功した組み合わせ(OS+SADブランチ)というのはないんですかね?
> > >
> > KEKのSAD計算機は、FreeBSD/amd64 9-STABLE + lang/gcc(4.7.4) + MAIN trunk/k64-1-6 branchの組み合わせで稼働中
> > ただし、MAIN trunkの動作を保証するためてにカーネルパラメターを調整しています
>
> MAIN TRUNKの動作を保証するカーネルパラメータは具体的にどこのパラメータを変更すればできるのでしょうか?
>
> 挑戦してみたいので教えていただけると幸いです
>
mmap(2)が割り当てる仮想アドレスが、16GiB境界の下に降りてくるまで、kern.maxdsizを減らしています
(この調整は、単一プロセスで多量のメモリーを必要とする計算環境と両立しません)

技術的な根拠は、以下の通り
MAIN trunkでは内部アドレス表現として、8-octet境界の配列インデックスを符号付き32bit整数で表現し、
非正の値を無効な値として扱うため、基準となる配列 rlistの先頭から 16GiBの範囲に全ての動的メモリを
割り当てる必要があります

SubjectRe^11: Install SAD on FreeBSD/amd64 9.3
Article No1282
Date: 2014/08/22(Fri) 13:40:37
ContributorToshiya Muto
> > > > Ubuntu14.04.1.amd64なども試してみたのですがコンパイルは通ったのですが
> > > > うまく動作しなかったんですよね。。。。
> > > >
> > > > intel系のPCにインストールして成功した組み合わせ(OS+SADブランチ)というのはないんですかね?
> > > >
> > > KEKのSAD計算機は、FreeBSD/amd64 9-STABLE + lang/gcc(4.7.4) + MAIN trunk/k64-1-6 branchの組み合わせで稼働中
> > > ただし、MAIN trunkの動作を保証するためてにカーネルパラメターを調整しています
> >
> > MAIN TRUNKの動作を保証するカーネルパラメータは具体的にどこのパラメータを変更すればできるのでしょうか?
> >
> > 挑戦してみたいので教えていただけると幸いです
> >
> mmap(2)が割り当てる仮想アドレスが、16GiB境界の下に降りてくるまで、kern.maxdsizを減らしています
> (この調整は、単一プロセスで多量のメモリーを必要とする計算環境と両立しません)
>
> 技術的な根拠は、以下の通り
> MAIN trunkでは内部アドレス表現として、8-octet境界の配列インデックスを符号付き32bit整数で表現し、
> 非正の値を無効な値として扱うため、基準となる配列 rlistの先頭から 16GiBの範囲に全ての動的メモリを
> 割り当てる必要があります

返信が遅れて申し訳ありませんでした
kern.maxdsiz="2G"としたところエラーなくexampleが動きインストールできました
ありがとうございました

ところがいくつか問題があります
以前に書いたいくつかのコードでセグメンテーションフォルトをおこしてコアダンプします

バックトレースを見ると
Backtrace for this error:
#0 0x41F365E7
#1 0x41F36B84
#2 0x4408D235
#3 0x4408D4A6
#4 0x7FFFFFFFF002
セグメンテーション違反: 11 (コアダンプ)

と同じ表示になってます

これはまだkern.maxdsizの減らし方が不十分と言うことなのでしょうか?
1Gに減らしてみたりしたのですが症状は変わりませんでした

実はこのセグメンテーションエラーは
freeBSDが入っている端末では正しく動いているコードを
Xウィンドウエミュレータ上で動かすと発生するんです

どうやらOpticsPlotを実行すると起こっているみたいなのですが。。。
動かないコードもPlotを実行するところでエラーを起こしているみたいです
ただターミナル上でPlotを使って簡単な関数を書いてみても問題なく動作するのでなぜエラーを吐くのかよくわからないんです
例えばプロットする関数をリストに書き下してListPlotするときちんとプロットできるので
Plotに入れている関数が不当というわけではないと思います

もしなにかお気づきの点がございましたら教えていただけるとありがたいです

SubjectRe^12: Install SAD on FreeBSD/amd64 9.3
Article No1283
Date: 2014/08/22(Fri) 13:48:32
ContributorAkio Morita
> ところがいくつか問題があります
> 以前に書いたいくつかのコードでセグメンテーションフォルトをおこしてコアダンプします
>
> バックトレースを見ると
> Backtrace for this error:
> #0 0x41F365E7
> #1 0x41F36B84
> #2 0x4408D235
> #3 0x4408D4A6
> #4 0x7FFFFFFFF002
> セグメンテーション違反: 11 (コアダンプ)
>
> と同じ表示になってます
>
> これはまだkern.maxdsizの減らし方が不十分と言うことなのでしょうか?
> 1Gに減らしてみたりしたのですが症状は変わりませんでした
>
> 実はこのセグメンテーションエラーは
> freeBSDが入っている端末では正しく動いているコードを
> Xウィンドウエミュレータ上で動かすと発生するんです
>
> どうやらOpticsPlotを実行すると起こっているみたいなのですが。。。
> 動かないコードもPlotを実行するところでエラーを起こしているみたいです
> ただターミナル上でPlotを使って簡単な関数を書いてみても問題なく動作するのでなぜエラーを吐くのかよくわからないんです
> 例えばプロットする関数をリストに書き下してListPlotするときちんとプロットできるので
> Plotに入れている関数が不当というわけではないと思います
>
> もしなにかお気づきの点がございましたら教えていただけるとありがたいです
>
状況から考えて、X Serverの実装依存の問題です
SAD側のBacktraceの解析(Tk及びX11を含む)とX Protocolの通信ログの解析などが有効と思われます