【问题标题】:Crash in std::locale::operator=(std::locale const&) on AIXAIX 上的 std::locale::operator=(std::locale const&) 崩溃
【发布时间】: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 无济于事。

标签: c++ gcc rpm aix


【解决方案1】:

我刚刚遇到了同样的问题,并且能够通过在 g++ 编译器的 makefile 中禁用优化标志(如 -O2)来解决这个问题。我的 makefile 包含

CC = g++ CC_FLAGS = -g3 -ggdb -Wall -std=c++11 -DDEBUG -pthread -O2

显示来自 gdb 的回溯 std::locale::operator=(std::locale const&) ()

如果没有标志“-O2”,这不再发生

CC = g++ CC_FLAGS = -Wall -std=c++11 -DDEBUG -pthread

【讨论】:

    猜你喜欢
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 2015-10-29
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多