BradLarson / GPUImage

An open source iOS framework for GPU-based image and video processing
http://www.sunsetlakesoftware.com/2012/02/12/introducing-gpuimage-framework
BSD 3-Clause "New" or "Revised" License
20.23k stars 4.61k forks source link

SIGSEGV/SEGV_ACCERR #1614

Closed sourcebits-mahesh closed 10 years ago

sourcebits-mahesh commented 10 years ago

Hi ,

I was getting the SIGSEGV/SEGV_ACCERR crash report from crittercism tool integrated in my app, this was because of taking a video capturing and leaving the app in sleep mode for 15-20 minutes after coming back from sleep mode the app crashed, this is blocker issue in my case .Please suggest the solution, thanks in advance The following shows the sample code used: GPUImageiOSBlurFilter * blurFilterObj = [[GPUImageiOSBlurFilter alloc] init]; blurFilterObj.blurRadiusInPixels = 4.5f ; blurFilterObj.downsampling = 2.5f ; blurFilterObj.saturation = 1.0f;

GPUImageView *backgroundImageView = [[GPUImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; [backgroundImageView setBackgroundColorRed:255.0f green:255.0f blue:255.0f alpha:1.0f] ; [self.view insertSubview:backgroundImageView atIndex:0];

   CSBlurView  *blurView = [[CSBlurView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    [self.view addSubview:blurView];

GPUImageVideoCamera *liveVideo = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPresetMedium cameraPosition:AVCaptureDevicePositionFront]; liveVideo.outputImageOrientation = UIInterfaceOrientationPortrait; liveVideo.horizontallyMirrorFrontFacingCamera = YES ;

    //Add Targets to live video
    [liveVideo addTarget:blurView];
   [liveVideo addTarget:blurFilterObj];
 [blurFilterObj addTarget:blurView];

The following represents the crash report

libGPUSupportMercury.dylib 0x322d48f6 gpus_ReturnNotPermittedKillClient + 1 IMGSGX543GLDriver 0x2c7e282d SubmitPackets + 125 GLEngine 0x2fc44c3d gliPresentViewES + 17
OpenGLES 0x2fc4f139 -[EAGLContext presentRenderbuffer:] + 65
0x0006f2a3 -GPUImageContext presentBufferForDisplay 0x00074a75 -GPUImageView presentFramebuffer 0x0004e23d runSynchronouslyOnVideoProcessingQueue (GPUImageOutput.m:27 0x00074cdd -GPUImageView newFrameReadyAtTime:atIndex:
0x0002096f -GPUImageVideoCamera updateTargetsForVideoCameraUsingCacheTextureAtWidth:height:time: 0x00020ceb -GPUImageVideoCamera processVideoSampleBuffer:
0x000216bf __74-[GPUImageVideoCamera captureOutput:didOutputSampleBuffer:fromConnection:]_block_invoke (GPUImageVideoCamera.m:966) libdispatch.dylib 0x38246d1b _dispatch_call_block_and_release + 11
libdispatch.dylib 0x3824d273 _dispatch_queue_drain$VARIANT$mp + 375 libdispatch.dylib 0x3824d06b _dispatch_queue_invoke$VARIANT$mp + 43 libdispatch.dylib 0x3824dce1 _dispatch_root_queue_drain + 77 libdispatch.dylib 0x3824df59 _dispatch_worker_thread2 + 57
libsystem_pthread.dylib 0x38388dbf _pthread_wqthread + 299
libsystem_pthread.dylib 0x38388c84 start_wqthread + 8

Regards, Mahesh

BradLarson commented 10 years ago

gpus_ReturnNotPermittedKillClient indicates that you are attempting to render OpenGL ES content while your application is in the background. You have to listen for when your application is going to transition to the background and pause or stop any processing actions (like video capture) before your application goes to the background.

If you search the issues here, you'll see a number of suggestions from others for how to do this.