2010-12-28 5 views
2

MonoTouch로 개발 한 iPhone 응용 프로그램에 문제가 있습니다.
WCF 서비스에 연결하는 응용 프로그램을 개발 중입니다. WCF 서비스가 응답하면 반환 된 데이터로 UITableView를 업데이트합니다.이 작업이 완료되면 새로운 WCF 비동기 호출이 전송되고 응답하면 다시 테이블에.iPhone 응용 프로그램이 Mprotect 오류 (MonoTouch)로 오류 발생

문제는 가변적 인 시간에이 작업을 수행하면 Mprotect failed 오류 12와 충돌한다는 것입니다. 이것은 응용 프로그램이 시뮬레이터가 아닌 전화에서 직접 실행될 때만 발생합니다.

나는 테이블의 업데이트가 발생하는 곳에서 주석을 작성하고 WCF 서비스에 다음 비동기 요청을 보내기 전에 Thread.Sleep (1000)을 작성하려고했지만 여전히 동일한 오류가 발생하지만 더 이상 실행하지는 못합니다. 실패.

나는 http://mydomain/myservice.svc

내 질문이이 오류가있는 방식으로 아니면 해결 방법으로 회피 할 수있다 SlSvcUtil.exe /에서 noconfig에 의해 생성 된 "프록시"파일을 통해 WCF 서비스에 문의? 내 잘못입니까, 아니면 벌레입니까? 실제로 최종 학교 프로젝트에서이 신청서를 사용하기 때문에 실제로 해결할 수 있으면 좋을 것입니다.

콘솔 출력을 게시하고 충돌 보고서의 일부를 게시하지만 더 많은 정보가 필요하면 알려 주시면 게시 해 드리겠습니다. Mono 또는 MonoTouch 환경을 처음 사용하는 전문가가 아니므로 상세한 응답이 좋을 것입니다.

콘솔 출력 :

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 

충돌 보고서 : 12 ENOMEM입니다

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 

답변

7

오류, 당신은 아이폰에서 사용할 수있는 모든 메모리를 소모했습니다.

+0

정말인가요? AppDelegate 클래스의 ReceiveMemoryWarning 메서드를 오버라이드했습니다. public override void ReceiveMemoryWarning (UIApplication 응용 프로그램) { Log.Error ("Memory warning", "memory"); } 하지만이 오류가 발생하지 않습니다 .. – user555866

+0

예, 확실합니다. –

+0

그래,이 문제를 피하기 위해 뭔가 할 수 있니? 아니면 더 많은 메모리가되도록 내 프로그램 코드를 변경해야합니다. 나는 내 프로그램이 너무 무거운 기억이 될 수 있다는 것을 알지 못한다. – user555866