问题
I'm doing an app in Titanium for Android and IOS. When I navigate a lot in the application I have a random exception and the app crashes.
How can I know where is the problem?
The app is a little complex to explain:
It has two windows, first window is for "home" view that is only in portrait mode, and when I click to go to another view, I close the first window, I open another window and I add a view with the content to this window. The content view load the same web view with different url.
The app loads ok and I can navigate for the different views and windows ok. But when I navigate a lot, finally I have a EXC_BAC_ACCESS (SIGSEGV) and KERN_INVALID_ADDRESS
This only happens on device (on simulator it works ok) with iPad os 5.1.1 and os 7.0.2.
This is the log where the thread crashes:
Incident Identifier: 1A3E94A0-E6FC-4BFF-BB3B-7651D66664DE
CrashReporter Key: d4422d11c83ca9acf2212996b20dd1078f00f36c
Hardware Model: iPad3,3
Process: Appname [16747]
Path: /var/mobile/Applications/1BACB160-AED8-4F5F-A599-4F7F1F4A4DC4/Appname.app/Appname
Identifier: Appname
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2013-10-31 11:56:58.680 +0100
OS Version: iPhone OS 5.1.1 (9B206)
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000
Crashed Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libicucore.A.dylib 0x37953fb2 utext_setNativeIndex + 122
1 libicucore.A.dylib 0x379542a6 icu::RuleBasedBreakIterator::following(int) + 246
2 WebKit 0x35f20b2c -[NSString(WebStringDrawing) __web_drawInRect:withFont:ellipsis:alignment:letterSpacing:lineSpacing:includeEmoji:truncationRect:measureOnly:renderedStringOut:drawUnderline:] + 2176
3 WebKit 0x35e99078 -[NSString(WebStringDrawing) __web_drawInRect:withFont:ellipsis:alignment:letterSpacing:lineSpacing:includeEmoji:truncationRect:measureOnly:renderedStringOut:] + 108
4 WebKit 0x35e98ffc -[NSString(WebStringDrawing) __web_drawInRect:withFont:ellipsis:alignment:letterSpacing:lineSpacing:includeEmoji:truncationRect:measureOnly:] + 100
5 WebKit 0x35e98f88 -[NSString(WebStringDrawing) _web_drawInRect:withFont:ellipsis:alignment:lineSpacing:includeEmoji:truncationRect:measureOnly:] + 100
6 WebKit 0x35e98f14 -[NSString(WebStringDrawing) _web_sizeInRect:withFont:ellipsis:lineSpacing:] + 80
7 UIKit 0x34fba65c -[NSString(UIStringDrawing) sizeWithFont:constrainedToSize:lineBreakMode:lineSpacing:] + 108
8 UIKit 0x3512ee0e -[NSString(UIStringDrawing) sizeWithFont:constrainedToSize:lineBreakMode:] + 46
9 Appname 0x0014528c -[TiUILabel sizeForFont:] (TiUILabel.m:57)
10 Appname 0x0014537a -[TiUILabel contentWidthForWidth:] (TiUILabel.m:69)
11 Appname 0x001449bc -[TiUILabelProxy contentWidthForWidth:] (TiUILabelProxy.m:17)
12 Appname 0x00116fb4 -[TiViewProxy autoWidthForSize:] (TiViewProxy.m:756)
13 Appname 0x00120dbc -[TiViewProxy computeChildSandbox:withBounds:] (TiViewProxy.m:2543)
14 Appname 0x0011fbb8 -[TiViewProxy measureChildren:] (TiViewProxy.m:2352)
15 Appname 0x00121e36 -[TiViewProxy layoutChildren:] (TiViewProxy.m:2818)
16 Appname 0x0011dd9a -[TiViewProxy refreshView:] (TiViewProxy.m:2061)
17 Appname 0x0011f25c -[TiViewProxy layoutChildrenIfNeeded] (TiViewProxy.m:2264)
18 Appname 0x001d5ba0 +[TiLayoutQueue layoutProxy:] (TiLayoutQueue.m:79)
19 Appname 0x001d59b0 performLayoutRefresh (TiLayoutQueue.m:46)
20 CoreFoundation 0x32a5fa2c __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 8
21 CoreFoundation 0x32a5f692 __CFRunLoopDoTimer + 358
22 CoreFoundation 0x32a5e268 __CFRunLoopRun + 1200
23 CoreFoundation 0x329e149e CFRunLoopRunSpecific + 294
24 CoreFoundation 0x329e1366 CFRunLoopRunInMode + 98
25 GraphicsServices 0x32b2e432 GSEventRunModal + 130
26 UIKit 0x34fc0cce UIApplicationMain + 1074
27 Appname 0x000b8c34 main (main.m:36)
28 Appname 0x000b8470 ___lldb_unnamed_function1$$Appname + 32
Thread 0 crashed with ARM Thread State:
r0: 0x00000000 r1: 0x00000000 r2: 0x00000000 r3: 0x00000000
r4: 0x0d65c6b0 r5: 0x0d65c690 r6: 0x00000000 r7: 0x2feabfac
r8: 0x00000003 r9: 0x2feabf6c r10: 0x00000003 r11: 0x08052950
ip: 0x00000000 sp: 0x2feabfa4 lr: 0x00000000 pc: 0x37953fb2
cpsr: 0x80000030
I've also had the log of other threads and information about Binary Images. If it's useful I can paste it.
How can I know what is the cause of the problem and where is the problem?
Thank you very much
回答1:
You get EXC_BAC_ACCESS because you are trying to access object which was removed from memory. It happens only on device when you navigate to many windows because every window takes some part of memory and when there is no more space for new windows iOS clears old objects who were deleted by you previously.
You can replicate this issue on simulator by forcing Memory Warning pressing ⇧ + ⌘ + M.
To solve your issue you have to store variable pointing to window object which you want to reopen later in some global dictionary.
回答2:
Finally, I think it was a problem with webview component. I created a web view in each view (I need it to show some graphs) and when I return to home view, I tried to remove it. I think the problem is that you can't remove it completely and it takes a lot of memory.
Finally I solved it creating a webview in app.js and using it in all views changing the url and dimensions.
来源:https://stackoverflow.com/questions/19544264/how-to-understand-exc-bac-access-sigsegv-kern-invalid-address-log