You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is something that has appeared in crash logs. Unfortunately, I don't know how to reproduce it. The worst part about this crash is that once it happens, it will happen every time the user enters the view controller that uses FastImageCache.
This is something that has appeared in crash logs. Unfortunately, I don't know how to reproduce it. The worst part about this crash is that once it happens, it will happen every time the user enters the view controller that uses FastImageCache.
@mallorypaine Sorry, I haven't been able to get a hold of user data for this. We haven't run into this issue lately. It was happening when our project was in earlier stages of development, so my only thought is that other crashes in the view controller were causing the image cache to become corrupted.
This isn't a recursion crash per se. It appears that there's either an
issue with _inUseEntries having become corrupted or with _MRUEntries. The
fact that _nextEntryIndex is being called recursively repeatedly tells me
that your image table somehow has many more entries than its maximum count.
Do you know the count and the max count when this crash occurs? Any idea
how your table got to be so much bigger than maxCount? That should never
happen...
NSInteger index = [unoccupiedIndexes firstIndex];
if (index == NSNotFound) {
index = _entryCount;
}
if (index >= [self _maximumCount] && [_MRUEntries count]) {
// Evict the oldest/least-recently accessed entry here
NSString *oldestEvictableEntityUUID = [self oldestEvictableEntityUUID];
if (oldestEvictableEntityUUID) {
[self deleteEntryForEntityUUID:oldestEvictableEntityUUID];
index = [self _nextEntryIndex]; // <----- Line 587
}
}
if (index >= [self _maximumCount]) {
NSString *message = [NSString stringWithFormat:@"FICImageTable -
unable to evict entry from table '%@' to make room. New index %ld, desired
max %d", [_imageFormat name], (long)index, [self _maximumCount]];
[self.imageCache _logMessage:message];
}
return index;
}
—
Reply to this email directly or view it on GitHub #82 (comment).
This could be related actually, but when I attempt to delete an image from the image table, it actually doesn't delete. The image table data actually grows up to 200+ MB and there's no way to control it.
I wonder if this was an issue that was fixed recently?
This could be related actually, but when I attempt to delete an image from
the image table, it actually doesn't delete. The image table data actually
grows up to 200+ MB and there's no way to control it.
I wonder if this was an issue that was fixed recently?
We're on a version of FIC from a year ago.
—
Reply to this email directly or view it on GitHub #82 (comment).
Pretty embarrassing on our part but we actually don't know. (didn't fork, we just imported the source)
All I know is that we got the latest from Master sometime before March 7, 2014... Which means after 1.2 and before 1.3 as it looks like.
I can provide the zip of our version of FICImageCache if that helps. I tried to go through a few diffs to see how far off we are from 1.3 and doesn't seem like much has changed so we can assume 1.3.
Appreciate the help, let me know if there are more info you need.
Activity
mallorypaine commentedon Dec 24, 2014
Can you save the FIC data from a user who has hit this bug and then send it to me? I'd be happy to debug.
Sent from my iPhone
jwutke commentedon Jan 5, 2015
Hey, sorry for the delay in answering. I'll see if I am able to get that info for you.
bliang commentedon May 28, 2015
Any luck? We are seeing this very often.
mallorypaine commentedon Jun 8, 2015
@bliang @jwutke can you send me a sample app including user data which reproduces this issue? I'd be happy to take a look.
jwutke commentedon Jun 9, 2015
@mallorypaine Sorry, I haven't been able to get a hold of user data for this. We haven't run into this issue lately. It was happening when our project was in earlier stages of development, so my only thought is that other crashes in the view controller were causing the image cache to become corrupted.
bliang commentedon Aug 3, 2015
@mallorypaine I don't have a sample app that can reproduce this consistently but for whatever it's worth:
Thread : Crashed: com.path.FastImageCacheQueue
0 CoreFoundation 0x00000001843a5df4 CFBasicHashFindBucket + 952
1 CoreFoundation 0x00000001843b7038 CFBagGetValue + 20
2 CoreFoundation 0x00000001843b7038 CFBagGetValue + 20
3 Foundation 0x00000001852e520c -[NSCountedSet member:] + 80
4 CoreFoundation 0x00000001843b7008 -[NSSet containsObject:] + 28
5 SampleApp2 0x00000001000f3e00 -FICImageTable oldestEvictableEntityUUID
6 SampleApp2 0x00000001000f3c38 -FICImageTable _nextEntryIndex
7 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
8 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
9 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
10 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
11 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
12 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
13 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
14 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
15 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
16 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
17 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
18 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
19 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
20 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
21 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
22 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
23 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
24 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
25 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
26 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
27 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
28 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
29 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
30 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
31 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
32 SampleApp2 0x00000001000f3c74 -FICImageTable _nextEntryIndex
bliang commentedon Aug 3, 2015
- (NSInteger)_nextEntryIndex { NSMutableIndexSet *unoccupiedIndexes = [[NSMutableIndexSet alloc] initWithIndexesInRange:NSMakeRange(0, _entryCount)]; [unoccupiedIndexes removeIndexes:_occupiedIndexes]; NSInteger index = [unoccupiedIndexes firstIndex]; if (index == NSNotFound) { index = _entryCount; } if (index >= [self _maximumCount] && [_MRUEntries count]) { // Evict the oldest/least-recently accessed entry here NSString *oldestEvictableEntityUUID = [self oldestEvictableEntityUUID]; if (oldestEvictableEntityUUID) { [self deleteEntryForEntityUUID:oldestEvictableEntityUUID]; index = [self _nextEntryIndex]; // ----- Line 587 } } if (index >= [self _maximumCount]) { NSString *message = [NSString stringWithFormat:@"FICImageTable - unable to evict entry from table '%@' to make room. New index %ld, desired max %d", [_imageFormat name], (long)index, [self _maximumCount]]; [self.imageCache _logMessage:message]; } return index; }mallorypaine commentedon Aug 3, 2015
This isn't a recursion crash per se. It appears that there's either an
issue with _inUseEntries having become corrupted or with _MRUEntries. The
fact that _nextEntryIndex is being called recursively repeatedly tells me
that your image table somehow has many more entries than its maximum count.
Do you know the count and the max count when this crash occurs? Any idea
how your table got to be so much bigger than maxCount? That should never
happen...
On Mon, Aug 3, 2015 at 10:19 AM, Brian Liang notifications@github.com
wrote:
bliang commentedon Aug 4, 2015
The maximum limit is set to 50 during the cache.
This could be related actually, but when I attempt to delete an image from the image table, it actually doesn't delete. The image table data actually grows up to 200+ MB and there's no way to control it.
I wonder if this was an issue that was fixed recently?
We're on a version of FIC from a year ago.
mallorypaine commentedon Aug 4, 2015
What is the most recent FIC commit in your version of FIC?
On Tue, Aug 4, 2015 at 10:54 AM, Brian Liang notifications@github.com
wrote:
bliang commentedon Aug 4, 2015
Pretty embarrassing on our part but we actually don't know. (didn't fork, we just imported the source)
All I know is that we got the latest from Master sometime before March 7, 2014... Which means after 1.2 and before 1.3 as it looks like.
I can provide the zip of our version of FICImageCache if that helps. I tried to go through a few diffs to see how far off we are from 1.3 and doesn't seem like much has changed so we can assume 1.3.
Appreciate the help, let me know if there are more info you need.