【发布时间】:2017-09-15 08:32:31
【问题描述】:
我对 AIX 有点陌生,遇到了一个奇怪的问题。我有两台 AIX 机器,我的 C++ 应用程序在一台机器上运行,而在另一台机器上崩溃。
当我检查已安装的软件包 (rpm -qa) 时,我观察到一个区别,对于第一台机器,所有 rpm 都以 .ppc 扩展名结尾,而对于第二台机器则不是。我的 cpp 应用程序在第二台机器上完美运行。
我怀疑这可能是导致此问题的原因,但不确定。
PS:显示两者之间的区别。
堆栈跟踪:
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0xd0bded2c in std::locale::operator=(std::locale const&) () from /opt/freeware/lib/libstdc++.a(libstdc++.so.6)
(gdb) bt
#0 0xd0bded2c in std::locale::operator=(std::locale const&) () from /opt/freeware/lib/libstdc++.a(libstdc++.so.6)
#1 0xd0bdeee0 in std::ios_base::_M_init() () from /opt/freeware/lib/libstdc++.a(libstdc++.so.6)
#2 0xd0bdede4 in std::basic_ios<char, std::char_traits<char> >::init () from /opt/freeware/lib/libstdc++.a(libstdc++.so.6)
#3 0x100b618c in Logging::Logging (this=0x20086438, filename=..., level=4) at Logging.cpp:404
#4 0x1005d96c in main (argc=<error reading variable>, argv=<error reading variable>) at _start_ :141
warning: (Internal error: pc 0x100001e3 in read in psymtab, but not in symtab.)
warning: (Internal error: pc 0x100001e4 in read in psymtab, but not in symtab.)
代码快照:
string logFile = "test.txt"
Logging* logger = new Logging(logFile,4);
// Logging Constructor
Logging::Logging(const string &filename,loglevel): logfilename(filename),level(loglevel) {
}
【问题讨论】:
-
请提供有关实际崩溃的更多信息。就像堆栈跟踪(来自调试器的核心转储等)。
-
@OP 也许您要使用的语言环境没有安装在其中一台计算机上。例如:
bash -c 'LC_ALL=hu_HU.UTF-8'结果setlocale: LC_ALL: cannot change locale (hu_HU.UTF-8)表示bos.loc.utf.HU_HU未安装。 -
我在 GCC 编译场的
gcc119上遇到了同样的崩溃。这是/opt/freeware的更新编译器。/usr/bin的 GCC 4.8(或者是 4.9)没有崩溃。设置LC_ALL=C无济于事。