我们收到了一些崩溃报告,其中包含我们难以破译的堆栈跟踪信息。堆栈跟踪完全在MediaPlayer,Foundation,CoreFoundation和libsystem_c.dylib中。遗憾的是,我们无法在任何开发设备上重现,因此故障排除存在问题。
这是堆栈跟踪的一个示例。有没有人见过这样的东西,或者有什么可能导致这次崩溃的指针?
EXC_BAD_ACCESS KERN_PROTECTION_FAILURE at 0x000000016fc47fe0
Thread : Crashed: com.apple.main-thread
0 libsystem_c.dylib 0x0000000196a0624c localeconv_l
1 libsystem_c.dylib 0x0000000196a55d6c __vfprintf + 108
2 libsystem_c.dylib 0x0000000196a73680 __v2printf + 588
3 libsystem_c.dylib 0x0000000196a0620c _vsnprintf + 304
4 libsystem_c.dylib 0x0000000196a06c58 snprintf_l + 24
5 CoreFoundation 0x000000018462b01c __CFStringAppendFormatCore + 11584
6 CoreFoundation 0x00000001846282a4 _CFStringCreateWithFormatAndArgumentsAux2 + 248
7 Foundation 0x000000018546e448 -[NSPlaceholderString initWithFormat:locale:arguments:] + 172
8 Foundation 0x000000018546e308 +[NSString stringWithFormat:] + 76
9 MediaPlayer 0x00000001869bf524 -[NSObject(MPLogDescription) MP_shortDescription] + 96
10 MediaPlayer 0x00000001869bf598 -[AVPlayerItem(MPLogDescription) MP_shortDescription] + 72
11 MediaPlayer 0x00000001869bde2c -[MPAVQueueCoordinator _syncPlayerItems] + 1316
12 MediaPlayer 0x00000001869bd8a4 -[MPAVQueueCoordinator _syncItems] + 1452
13 MediaPlayer 0x00000001869becbc -[MPAVQueueCoordinator _updateCurrentItem] + 620
14 MediaPlayer 0x00000001869be61c -[MPAVQueueCoordinator _syncPlayerItems] + 3348
15 MediaPlayer 0x00000001869bd8a4 -[MPAVQueueCoordinator _syncItems] + 1452
16 MediaPlayer 0x00000001869becbc -[MPAVQueueCoordinator _updateCurrentItem] + 620
17 MediaPlayer 0x00000001869be61c -[MPAVQueueCoordinator _syncPlayerItems] + 3348
18 MediaPlayer 0x00000001869bd8a4 -[MPAVQueueCoordinator _syncItems] + 1452
19 MediaPlayer 0x00000001869becbc -[MPAVQueueCoordinator _updateCurrentItem] + 620
20 MediaPlayer 0x00000001869be61c -[MPAVQueueCoordinator _syncPlayerItems] + 3348
...
堆栈跟踪继续进行上面最后三行的几百次重复。
答案 0 :(得分:1)
在我的iOS 8.4应用程序中发生这种情况。原来,该应用程序试图加载不存在的本地视频文件。它试图加载动画.mp4'当文件被调用时' Intro.mp4'并且我没有错误捕获代码来检测它。
最终结果与上面的堆栈跟踪完全相同 - 跟踪的最后3行的几百次重复,白屏和应用程序崩溃
所以可能值得检查一下 - 它可能对某些人有所帮助,但希望你有点理智并且在加载代码时遇到一些代码错误:)
答案 1 :(得分:0)
根据你的描述,听起来玩家进入无限循环,无论是分配内存还是增加指针。这是(在这里猜测)很可能是由于加载了格式不正确的视频文件。
当应用程序耗尽可寻址空间和/或指针增加/减少到指向应用程序地址空间之外的点时,内核会因内存违规而将其杀死。
答案 2 :(得分:0)
我昨天面临同样的问题。我想在MPMoviePlayerViewController中加载视频
//Streaming video plying on MPMoviePlayerViewController
NSString *fileURL = @"http://...../myvideo.mp4";
NSURL *url = [NSURL fileURLWithPath:fileURL];
MPMoviePlayerViewController *mpViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
mpViewController.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
// Present the movie player view controller
[self presentViewController:mpViewController animated:YES completion:nil];
// Start playback
[mpViewController.moviePlayer play];
运行此操作后,我收到以下错误消息 - [MPAVQueueCoordinator _syncPlayerItems]
花了一个小时后我发现了bug :)我的代码。我在“fileURLWithPath”中传递了URL,因为它显示了erro。要解决这个问题,我只需要替换
NSURL *url = [NSURL fileURLWithPath:fileURL];
带
NSURL *url = [NSURL URLWithString:fileURL];