我正在使用 3 台HP-UX PA RISC 机器进行测试。我的二进制文件在一台 PA RISC 机器上失败了,而其他机器正在运行。请注意,即使使用版本检查执行二进制文件,即它只是打印版本并退出并且不执行任何其他操作,二进制文件仍然会出现分段错误。分段错误的可能原因是什么。在一个盒子上找出故障的根本原因对我来说很重要。由于程序在 2 HP-UX 上运行,似乎是环境问题?
我试图在测试程序中复制相同的代码(即声明变量、打印版本和退出)并使用相同的编译选项进行构建,但它正在工作。这是程序的 gdb 输出。
$ gdb prg_us
Detected 64-bit executable.
Invoking /opt/langtools/bin/gdb64.
HP gdb 5.4.0 for PA-RISC 2.0 (wide), HP-UX 11.00
and target hppa2.0w-hp-hpux11.00.
Copyright 1986 - 2001 Free Software Foundation, Inc.
Hewlett-Packard Wildebeest 5.4.0 (based on GDB) is covered by the
GNU General Public License. Type "show copying" to see the conditions to
change it and/or distribute copies. Type "show warranty" for warranty/support.
..
(gdb) b 5573
Breakpoint 1 at 0x4000000000259e04: file pmgreader.c, line 5573 from /tmp/test/prg_us.
(gdb) r -v
Starting program: /tmp/test/prg_us -v
Breakpoint 1, main (argc=2, argv=0x800003ffbfff05f8) at pmgreader.c:5573
5573 if (argc ==2 && strcmp (argv[1], "-v") == 0)
Current language: auto; currently c++
(gdb) n
5575 printf ("%s", VER);
(gdb) n
5576 exit(0);
(gdb) n
Program received signal SIGSEGV, Segmentation fault
si_code: 0 - SEGV_UNKNOWN - Unknown Error.
0x800003ffbfb9e130 in real_free+0x480 () from /lib/pa20_64/libc.2
(gdb)
可能的原因应该是什么?为什么它适用于一个而不是另一个?