所以我收到了我的 iOS 应用程序的 Crashlytics 崩溃报告。对于一些用户,应用程序一直在崩溃,在崩溃日志中给出 SIGABRT。
无数小时以来,我一直试图找出此错误的原因,但由于错误的发生率(大约 1-2% 的用户),我一直无法重现该错误,而且由于来自 Crashlytics 的信息量有限,我一直找不到这个错误的根本原因。
该应用程序的部署目标是 iOS 7,并且装有 iOS 10+ 的各种尺寸的设备都遇到了崩溃(我不确定 iOS 9、8 或 7 是否也遇到了错误——Crashlytics 仅显示 iOS 上的崩溃10+)
这是堆栈跟踪:
CRASH_INFO_ENTRY_1
*** error for object 0x17127f4c0: Invalid pointer dequeued from free list
CRASH_INFO_ENTRY_0
abort() called
Crashed: com.apple.main-thread
SIGABRT ABORT 0x000000018e2ea014
#0. Crashed: com.apple.main-thread
0 libsystem_kernel.dylib 0x18f6ca014 __pthread_kill + 8
1 libsystem_pthread.dylib 0x18f791460 pthread_kill + 112
2 libsystem_c.dylib 0x18f63e3f4 abort + 140
3 libsystem_malloc.dylib 0x18f70ea38
_nano_vet_and_size_of_live + 330
4 libsystem_malloc.dylib 0x18f710bf0
_nano_malloc_check_clear + 392
5 libsystem_malloc.dylib 0x18f70fbb4 nano_calloc + 80
6 libsystem_malloc.dylib 0x18f701180 malloc_zone_calloc + 152
7 libsystem_malloc.dylib 0x18f7010c4 calloc + 40
8 libobjc.A.dylib 0x18f131cfc cache_t::reallocate(unsigned int, unsigned int) + 52
9 libobjc.A.dylib 0x18f1321fc cache_fill + 216
10 libobjc.A.dylib 0x18f13cd00 lookUpImpOrForward + 412
11 libobjc.A.dylib 0x18f147258 _objc_msgSend_uncached + 56
12 UIKit 0x1967274e8 -[UITableView _endCellAnimationsWithContext:] + 13964
13 Champion 0x100097bf4 -[MatchdayComposeController controllerDidChangeContent:] (MatchdayComposeController.m:427)
14 CoreData 0x192abfe28 __82-[NSFetchedResultsController(PrivateMethods) _core_managedObjectContextDidChange:]_block_invoke + 4760
15 CoreData 0x192abeb80 -[NSFetchedResultsController(PrivateMethods) _core_managedObjectContextDidChange:] + 124
16 CoreFoundation 0x19069622c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 20
17 CoreFoundation 0x190695930 _CFXRegistrationPost + 400
18 CoreFoundation 0x1906956ac ___CFXNotificationPost_block_invoke + 60
19 CoreFoundation 0x190704b9c -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1504
20 CoreFoundation 0x1905d7bf4 _CFXNotificationPost + 376
21 Foundation 0x1910de6bc -[NSNotificationCenter postNotificationName:object:userInfo:] + 68
22 CoreData 0x1929eed1c -[NSManagedObjectContext(_NSInternalNotificationHandling) _postObjectsDidChangeNotificationWithUserInfo:] + 724
23 CoreData 0x192a75170 -[NSManagedObjectContext(_NSInternalChangeProcessing) _createAndPostChangeNotification:deletions:updates:refreshes:deferrals:wasMerge:] + 1336
24 CoreData 0x1929ed338 -[NSManagedObjectContext(_NSInternalChangeProcessing) _processRecentChanges:] + 2116
25 CoreData 0x1929ebe3c -[NSManagedObjectContext save:] + 416
26 Champion 0x10008e2ac -[AppDelegate saveContext] (AppDelegate.m:263)
27 Champion 0x10009d1d4 +[Globals saveManagedObjectContext] (Globals.m:157)
28 Champion 0x10006ee4c -[EntitySyncClient saveUpdates:] (EntitySyncClient.m:232)
29 Champion 0x1000690a0 -[MatchController datepickerDidChangeValue:] (MatchController.m:994)
30 UIKit 0x1965799a0 -[UIApplication sendAction:to:from:forEvent:] + 96
31 UIKit 0x196579920 -[UIControl sendAction:to:forEvent:] + 80
32 UIKit 0x196563dd0 -[UIControl _sendActionsForEvents:withEvent:] + 452
33 UIKit 0x196e62c44 -[_UIDatePickerView pickerView:didSelectRow:inComponent:] + 540
34 UIKit 0x1967b965c -[UIPickerView _sendSelectionChangedForComponent:notify:] + 116
35 UIKit 0x1967b9894 -[UIPickerView _sendSelectionChangedFromTable:notify:] + 344
36 UIKit 0x196ce6878 -[UIPickerTableView _scrollingFinished] + 188
37 UIKit 0x196ce6a50 -[UIPickerTableView scrollViewDidEndDecelerating:] + 28
38 UIKit 0x196857abc -[UIScrollView(UIScrollViewInternal) _scrollViewDidEndDeceleratingForDelegate] + 132
39 UIKit 0x1966ed2cc -[UIScrollView(UIScrollViewInternal) _stopScrollDecelerationNotify:] + 332
40 UIKit 0x1966ece08 -[UIScrollView _smoothScrollWithUpdateTime:] + 2356
41 QuartzCore 0x1938ff640 CA::Display::DisplayLinkItem::dispatch(unsigned long long) + 44
42 QuartzCore 0x1938ff4ec CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 444
43 IOKit 0x190968570 IODispatchCalloutFromCFMessage + 372
44 CoreFoundation 0x19069256c __CFMachPortPerform + 180
45 CoreFoundation 0x1906aa934 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 56
46 CoreFoundation 0x1906aa0e8 __CFRunLoopDoSource1 + 436
47 CoreFoundation 0x1906a7bcc __CFRunLoopRun + 1840
48 CoreFoundation 0x1905d6048 CFRunLoopRunSpecific + 444
49 GraphicsServices 0x192059198 GSEventRunModal + 180
50 UIKit 0x1965af818 -[UIApplication _run] + 684
51 UIKit 0x1965aa550 UIApplicationMain + 208
52 Champion 0x1000b082c main (main.m:14)
53 libdispatch.dylib 0x18f5b85b8 (Missing)
如有任何帮助,我将不胜感激。如果我能得到任何类型的重现 Crashlytics 错误的指示,我也将不胜感激。
用代码更新问题
在 controllerDidChangeContent: 中,主要是 TableView 正在结束更新。
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
[self.tableView endUpdates];
if(controller.fetchedObjects.count == 0){
self.showsNoMatchesHint = YES;
}
else{
self.showsNoMatchesHint = NO;
}
}
最佳答案
鉴于您的程序的最后一次喘息是在 _endCellAnimationsWithContext 中,并且这些类型的动画通常发生在单元格编辑完成时,我会在该特定表格完成单元格编辑操作时调查问题。那里还有一个选择器 View 和一个通知,所以应该缩小一些范围。祝你好运。
关于iOS:从 Crashlytics 了解 SIGABRT 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43741338/
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上
我经常将预配置的lambda插入可枚举的方法中,例如“map”、“select”等。但是“注入(inject)”的行为似乎有所不同。例如与mult4=lambda{|item|item*4}然后(5..10).map&mult4给我[20,24,28,32,36,40]但是,如果我制作一个2参数lambda用于像这样的注入(inject),multL=lambda{|product,n|product*n}我想说(5..10).inject(2)&multL因为“inject”有一个可选的单个初始值参数,但这给了我......irb(main):027:0>(5..10).inject
是否有self验证的问题列表。看着那个,我可以确定我知道。我应该复习一下。在学习的过程中,我列了一个这样的list,但它只包含我在某处听说过的项目。我需要一段时间才能找到新的东西。 最佳答案 以下是针对ruby和Rails的一些测试列表。证书名称:RubyonRails谁提供:oDeskIncorporation认证费用:免费网站:https://www.odesk.com/tests/985?pos=0证书名称:RubyonRails提供者:Techgig.com(TimesBusinessSolutionsLimited(T
我想覆盖store_accessor的getter。可以查到here.代码在这里:#Fileactiverecord/lib/active_record/store.rb,line74defstore_accessor(store_attribute,*keys)keys=keys.flatten_store_accessors_module.module_evaldokeys.eachdo|key|define_method("#{key}=")do|value|write_store_attribute(store_attribute,key,value)enddefine_met
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?