osx lion上的奇怪崩溃可能是由于错误的符号查找

时间:2013-01-19 04:35:48

标签: xcode dylib

我在OS / X Lion上运行了一个c ++应用程序,它在调用glIsBuffer(0)时崩溃了。 XCode 4.5堆栈跟踪状态:

错误:地址不包含指向目标文件中某个部分的部分

和DYLD_PRINT_APIS显示:

dlopen(/System/Library/Frameworks/ApplicationServices.framework/Frameworks/CoreGraphics.framework/CoreGraphics, 0x00000009)
...
dlsym(0x7f9288d00cd0, gliCopyAttributes)
dlsym(0x7f9288d00cd0, gliGetVersion)
dlsym(0x7f9298d70620, __CGBitmapContextDelegateCreate)
dlsym(0xffffffffffffffff, CGSCopyCoreGraphicsCapabilities)
Segmentation fault: 11

对dlsym()的最后一次调用似乎已经传递了一个相当奇怪的库句柄。我查看了dlopen的返回值,但它应该在出错时返回NULL。在日志中没有报告dlopen调用的错误。

CGSCopyCoreGraphicsCapabilities是一个核心图形调用,虽然谷歌没有发现任何文档。我目前的假设是dlsym使用了无效的库句柄。可能没有加载或卸载了正确的Core Graphics库。

运行otool会显示一些版本不匹配:

/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)

但我不知道它们是否相关。

任何人都可以帮忙解读可能存在的问题吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

固定。事实证明,框架必须明确地链接在一起。不知何故,依赖关系在链接时得到解决但在运行时失败。