【问题标题】:Every single Qt application crashes in one place?每个 Qt 应用程序都在一个地方崩溃?
【发布时间】:2011-10-09 08:51:57
【问题描述】:

基本上,我尝试运行的所有 Qt 应用程序都会在一个地方崩溃:

#0  0x0000000000000000 in ?? ()
#1  0x0000000100f4f570 in QIconvCodec::createIconv_t ()
#2  0x0000000100f5043b in QIconvCodec::convertToUnicode ()
#3  0x0000000100032c7e in QString::fromLocal8Bit ()
#4  0x0000000100e7cb89 in QSystemLocale::fallbackLocale ()
#5  0x00000001000161e0 in QLocalePrivate::updateSystemPrivate ()

我怀疑它与 iconv 有关,因为它在 Mac OS X 上不是很“稳定”。我不知道问题是什么,我尝试从 Macports 重新安装 libiconv 甚至构建我自己,我仍然遇到同样的问题。

也许它 dlsyms 所需的符号(可能丢失)然后跳转到地址,导致该地址(因此在回溯中出现 0x0000000000000000)。

可能是什么问题?(抱歉,如果问错地方了)

【问题讨论】:

    标签: qt libiconv


    【解决方案1】:

    听起来是个合理的猜测。

    你能编译一个在 Mac 上崩溃但在 Linux 或 Windows 上成功的测试用例吗?

    当然,你可以看一下源代码——Qt 函数体往往很小,而且因子很多,所以应该很容易看出哪里出了问题。

    【讨论】:

    • 我无法在运行 OS X 的任何其他机器上重现此问题。这是我的主要开发机器,因此我对无法运行/调试任何 Qt 应用程序(包括IDE)。
    【解决方案2】:

    查看您的地址,我可以看到它们是 64 位的。也许您在 32 位和 64 位二进制文​​件之间存在某种类型的不兼容?

    【讨论】:

    • 链接器和/或加载器会阻塞,不是吗?
    【解决方案3】:

    我遇到了同样的问题,最终构建了 Qt 库的调试版本以弄清楚发生了什么。 Qt 库似乎假设机器上有一个 /usr/lib/libconv.dylib。对于我的机器,解决方案很简单...

    sudo ln -s /usr/lib/libiconv.2.dylib /usr/lib/libiconv.dylib

    【讨论】:

    • 为了简洁起见,在这里添加我的 0.2CAD 评论,非常感谢@peter 提供解决方案。我正在运行 OSX 10.6.8 并且我无法运行 VB 很长时间了......它总是抛出:Exception Type: EXC_BAD_ACCESS (SIGBUS)Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000000 ..Thread 0 Crashed: Dispatch queue: com.apple.main-thread`0 ??? 0000000000 0 + 0` ` 1 QtCoreVBox 0x0183b692 QIconvCodec::convertToUnicode(char const*, ...` 接受的解决方案也解决了这个问题,以防有人遇到和我一样的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多