参考博文:
下面的内容为博主在Geant 4程序设计中遇到的问题。
问题描述
Geant 4 分析闪烁体荧光光子的相关问题,程序计算到某一个event时,程序自动终止,输出错误信息“段错误(核心已转储)”。
在单个程序的“段错误”问题分析中,可以查看core文件(linux系统默认不生成core文件,采用ulimit -c 1024 命令开启并设置文件最大大小),但是在Geant4程序中没有core文件输出(具体原因不知)。因此,在Geant 4程序报错时,输入dmesg,打印错误信息:
$ dmesg
$ exampleB4d[12964]: segfault at 78 ip 00007f2c489cf556 sp 00007f2c3d76b070 error 4 in libG4materials.so[7f2c4898e000+7c000]
反汇编文件内容:( 重点查看前两篇参考文章)
0000000000054530 <_zn25g4materialpropertiestable11getpropertyeib>:
54530:41 57 push %r15
54532:41 56 push %r14
54534:41 55 push %r13
54536:41 54 push %r12
54538:55 push %rbp
54539:53 push %rbx
5453a:89 f3 mov %esi,%ebx
5453c:48 81 ec 98 01 00 00 sub $0x198,%rsp
54543:64 48 8b 04 25 28 00 mov %fs:0x28,%rax
5454a:00 00
5454c:48 89 84 24 88 01 00 mov %rax,0x188(%rsp)
54553:00
54554:31 c0 xor %eax,%eax
54556:48 8b 47 78 mov 0x78(%rdi),%rax # 错误指针所知位置
5455a:48 85 c0 test %rax,%rax
5455d:74 69 je 545c8 <_zn25g4materialpropertiestable11getpropertyeib>
5455f:48 8d 77 70 lea 0x70(%rdi),%rsi
54563:48 89 f1 mov %rsi,%rcx
54566:eb 14 jmp 5457c <_zn25g4materialpropertiestable11getpropertyeib>
54568:0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1)
解决方法
对于博主遇到的问题,解决方法是,把调用nist的材料material改为自定义的材料。
标签:dmesg,00,Geant,48,mov,排查,push,rax
来源: https://blog.csdn.net/budong_2017/article/details/110289142