iPhone 应用程序因 Mprotect 失败错误而崩溃 (MonoTouch) [英] iPhone application crashes with Mprotect failed error (MonoTouch)
问题描述
我使用 MonoTouch 开发的 iPhone 应用程序出现问题.
我正在开发一个联系 WCF 服务的应用程序,当 WCF 服务回复时,我用返回的数据更新 UITableView,完成后它发送一个新的 WCF 异步调用,当它回复时它再次更新表等等.
I have a problem with my iPhone application developed with MonoTouch.
I am developing an application that contacts a WCF Service, and when the WCF Service answer back, I update an UITableView with the returned data, when this is done it sends a new WCF async call, and when it answer back it updates the table again and so on.
问题在于,当它在可变的时间内完成此操作时,它会崩溃并显示 Mprotect failed 错误 12.这仅在应用程序直接在手机上运行而不是在模拟器中运行时发生.
The problem is that when it has done this in a variable amount of time, it crashes with an Mprotect failed error 12. This only happens when the application is running directly on the phone and not in the simulator.
我试图在表更新发生的地方发表评论,并在向 WCF 服务发送下一个异步请求之前创建一个 Thread.Sleep(1000),但仍然是同样的错误,但可以运行更长时间而不会失败.
I have tried to out comment where the update of the table happens, and making a Thread.Sleep(1000) before sending the next Async request to the WCF Service, but still the same error, but can run longer with out failing.
我通过 SlSvcUtil.exe/noConfig 生成的代理"文件联系 WCF 服务 http://mydomain/myservice.svc
I contact the WCF Service through the "proxy" files, generated by SlSvcUtil.exe /noConfig http://mydomain/myservice.svc
我的问题是可以通过某种方式或解决方法来避免此错误吗?是我的错,还是bug?这实际上是因为我将在我的最终学校项目中使用该应用程序,所以如果我能修复它就太好了.
My question is that can this error be avoid in a way or maybe with a workaround? Is it my fault, or is it a bug? It is actually because I shall use the application in my final school project, so it could be nice if I could fix it.
我发布了控制台输出和崩溃报告的一部分,但如果您需要更多信息,请告诉我,我会发布.我不是使用 Mono 或 MonoTouch 环境的专业人士,这是我第一次使用,所以详细的回复会很好.
I post the console output, and a part from the crash report, but if you need more info please tell me, and I will post it. I am not a pro to use Mono or the MonoTouch environment it is my first time, so detailed responses would be nice.
控制台输出:
Mon Dec 27 20:37:17 tests-iPhone UIKitApplication:dk.test.iphone[0x1c3c][625] <Notice>: Mprotect failed at 0xa09a000 (length 1052672) with errno 12
Mon Dec 27 20:37:17 tests-iPhone UIKitApplication:dk.test.iphone[0x1c3c][625] <Notice>: Stacktrace:
Mon Dec 27 20:37:17 tests-iPhone UIKitApplication:dk.test.iphone[0x1c3c][625] <Notice>: at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) <0xffffffff>
Mon Dec 27 20:37:17 tests-iPhone UIKitApplication:dk.test.iphone[0x1c3c][625] <Notice>: at MonoTouch.UIKit.UIApplication.Main (string[],string,string) <0x000e0>
Mon Dec 27 20:37:17 tests-iPhone UIKitApplication:dk.test.iphone[0x1c3c][625] <Notice>: at MonoTouch.UIKit.UIApplication.Main (string[]) <0x00023>
Mon Dec 27 20:37:17 tests-iPhone UIKitApplication:dk.test.iphone[0x1c3c][625] <Notice>: at iPhoneStdView.Application.Main (string[]) <0x0001b>
Mon Dec 27 20:37:17 tests-iPhone UIKitApplication:dk.test.iphone[0x1c3c][625] <Notice>: at (wrapper runtime-invoke) object.runtime_invoke_dynamic (intptr,intptr,intptr,intptr) <0x000c3>
Mon Dec 27 20:37:17 tests-iPhone UIKitApplication:dk.test.iphone[0x1c3c][625] <Notice>: Native stacktrace:
Mon Dec 27 20:37:18 tests-iPhone ReportCrash[635] <Notice>: Formulating crash report for process iPhoneNoNavigation[625]
Mon Dec 27 20:37:18 tests-iPhone com.apple.launchd[1] (UIKitApplication:dk.test.iphone[0x1c3c][625]) <Warning>: (UIKitApplication:dk.test.iphone[0x1c3c]) Job appears to have crashed: Abort trap
Mon Dec 27 20:37:18 tests-iPhone SpringBoard[27] <Warning>: Application 'iPhoneStdView' exited abnormally with signal 6: Abort trap
崩溃报告:
Thread 0 Crashed:
0 dyld 0x2fe08110 0x2fe00000 + 33040
1 libSystem.B.dylib 0x3020259e 0x301ff000 + 13726
2 libSystem.B.dylib 0x302531da 0x301ff000 + 344538
3 iPhoneNoNavigation 0x0051975c 0x1000 + 5343068
4 iPhoneNoNavigation 0x00538080 0x1000 + 5468288
5 libSystem.B.dylib 0x302765cc 0x301ff000 + 488908
6 libSystem.B.dylib 0x30201d64 0x301ff000 + 11620
7 CoreFoundation 0x3081fc38 0x307f8000 + 162872
8 CoreFoundation 0x3081f4c2 0x307f8000 + 160962
9 CoreFoundation 0x3081f270 0x307f8000 + 160368
10 CoreFoundation 0x3081f178 0x307f8000 + 160120
11 GraphicsServices 0x31e445ec 0x31e40000 + 17900
12 GraphicsServices 0x31e44698 0x31e40000 + 18072
13 UIKit 0x31e5111c 0x31e4d000 + 16668
14 UIKit 0x31e4f128 0x31e4d000 + 8488
15 iPhoneNoNavigation 0x0006e754 0x1000 + 448340
Thread 0 crashed with ARM Thread State:
r0: 0x35f4d17c r1: 0x302765a9 r2: 0x35989b04 r3: 0x0000000e
r4: 0x2fe29e78 r5: 0x07d17490 r6: 0x302765d3 r7: 0x2fffe24c
r8: 0x00000000 r9: 0x3598762c r10: 0x0000000d r11: 0x07d17470
ip: 0x3598762c sp: 0x2fffe240 lr: 0x3e08dc60 pc: 0x2fe08110
cpsr: 0x20000030
推荐答案
错误 12 是 ENOMEM,您已经耗尽了 iphone 上的所有可用内存.
Error 12 is ENOMEM, you've exhausted all the memory available on the iphone.
这篇关于iPhone 应用程序因 Mprotect 失败错误而崩溃 (MonoTouch)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!