我怎么试一个崩溃的时候我跑我的垃圾回收程序在罗塞塔?
-
25-09-2019 - |
题
我有一个普遍程序,其目标是10.5以及使用垃圾收集。我建设,ppc,i386和x86_64.
我没有接到一个物理支持的机器所以我试图利用塞塔,以确认支持部分中的程序能否正常工作。
然而,只要作为程序启动在罗塞塔,立即崩溃的以下崩溃的记录:
Process: FooApp [91567]
Path: /Users/rob/Development/src/FooApp/build/Release 64-bit/FooApp.app/Contents/MacOS/FooApp
Identifier: com.companyX.FooApp
Version: 0.9 (build d540e05) (2)
Code Type: PPC (Translated)
Parent Process: launchd [708]
Date/Time: 2010-04-09 18:32:23.962 +1000
OS Version: Mac OS X 10.6.3 (10D573)
Report Version: 6
Exception Type: EXC_CRASH (SIGTRAP)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Crashed Thread: 5
...snip non-relevant threads...
Thread 5 Crashed:
0 libSystem.B.dylib 0x8023656a __pthread_kill + 10
1 libSystem.B.dylib 0x80235e17 pthread_kill + 95
2 com.companyX.FooApp 0xb80bfb30 0xb8000000 + 785200
3 com.companyX.FooApp 0xb80c0037 0xb8000000 + 786487
4 com.companyX.FooApp 0xb80dd8e8 0xb8000000 + 907496
5 com.companyX.FooApp 0xb8145397 spin_lock_wrapper + 1791
6 com.companyX.FooApp 0xb801ceb7 0xb8000000 + 118455
我用苹果文件在调试翻译的应用程序和信息 这页 附库的应用程序时,它的运行在罗塞塔。该应用程序,立即打破入调试器在启动:
Program received signal SIGTRAP, Trace/breakpoint trap.
[Switching to thread 15107]
0x9151fdd4 in auto_fatal ()
(gdb) bt
#0 0x9151fdd4 in auto_fatal ()
#1 0x91536d84 in Auto::Thread::get_register_state ()
#2 0x915372f8 in Auto::Thread::scan_other_thread ()
#3 0x91529be4 in Auto::Zone::scan_registered_threads ()
#4 0x91539114 in Auto::MemoryScanner::scan_thread_ranges ()
#5 0x9153b000 in Auto::MemoryScanner::scan ()
#6 0x9153049c in Auto::Zone::collect ()
#7 0x915198f4 in auto_collect_internal ()
#8 0x9151a094 in auto_collection_work ()
#9 0x96687434 in _dispatch_call_block_and_release ()
#10 0x9668912c in _dispatch_queue_drain ()
#11 0x96689350 in _dispatch_queue_invoke ()
#12 0x966895c0 in _dispatch_worker_thread2 ()
#13 0x966896fc in _dispatch_worker_thread ()
#14 0x965a97e8 in _pthread_body ()
(gdb)
我没有想法从哪里开始与此有关。它看起来像垃圾的收集是失败的非常严重。是垃圾回收的支持应用程序不支持在罗塞塔?我看不到任何提及的这种限制在该文件如果是这样。
没有任何人有任何想法?
解决方案
我现在已经确定,垃圾收集到支持的应用程序无法运行所使用的罗塞塔。后挖掘在谷歌我发现一对夫妇的提及关于在可可豆-开发的邮件列表,虽然没有"正式"从苹果。
我已确认,即使是默认的可可应用程序模板应用程序会立即崩溃,如果编为ppc与垃圾收集,然后推出的在罗塞塔。
我必须说这是非常令人沮丧的是,没有提到这个限制在 普遍的二元方案拟订准则 (其中讨论塞塔), 垃圾收集编程指南 或豹AppKit或基金会发行说明。这也令人沮丧的是,运行不会产生某种有益的错误信息。
作为豹/Rosetta/支持现在是"传统技术"我不想申请一个错误对这一疏忽会做得很好,但希望这种答案将帮助那些遇到了相同的问题。
其他提示
您可以测试它的一种方法是禁用垃圾收集器当你的应用程序启动。
[[NSGarbageCollector defaultCollector] disable];
您会泄漏像疯了似的,但对于一个小测试这可能是工作好。与此有一点需要注意的是,你需要确保它是这种情况发生在你的应用程序的第一件事情之一。在main
将是一个不错的地方,但如果你链接到该做的工作在+load
方法(或有构造)的框架,你可能需要做的是在框架(或介库代替)。
不隶属于 StackOverflow