Search code examples
androidopencvcrashgpslocationlistener

Android app crashes with QMI_LOC_EVENT_POSITION_REPORT_IND_V02


I'm running an app on LG G Pad 8.3, with Android 4.4.2. The app uses OpenCV to process video input and also uses GPS information. 20-30 seconds after starting, the app crashes without a message. The debug output is pasted below. It seems that this line: E/LocSvc_ApiV02( 865): I/<--- void globalEventCb(locClientHandleType, uint32_t, locClientEventIndUnionType, void*) line 81 QMI_LOC_EVENT_POSITION_REPORT_IND_V02 is the important one, followed by "Location listener died" shortly after. I haven't been able to find sufficient information on these. Also interestingly, on my Samsung Galaxy S3 mini (Android 4.2.2), the same app works without any issues.

E/mm-camera-intf(  347): VIDEO_DENOISER_PROCESSING  = 6439.000000us 1920x1080
E/QCameraHWI_Preview(  347): Qandroid::status_t android::QCameraStream_preview::processPreviewFrameWithDisplay(mm_camera_super_buf_t*): PCB callback enabled
E/QCameraHWI_Preview(  347):  void android::QCameraStream_preview::resizePreviewFrame(camera_memory_t*) : E  
D/QCameraHWI_Preview(  347):  void android::QCameraStream_preview::resizePreviewFrame(camera_memory_t*) : X  
D/CameraClient(  347): dataCallback(16)
D/CameraClient(  347): frame is copied
D/CameraClient(  347): copyFrameAndPostCopiedFrame
D/CameraClient(  347): setPreviewCallbackFlag(0) (pid 28124)
E/QualcommCamera(  347): Qvoid android::disable_msg_type(camera_device*, int32_t): E
I/QCameraHWI(  347): disableMsgType: E
I/QCameraHWI(  347): disableMsgType: X, msgType =0x10, mMsgEnabled=0xc0d
D/JavaCameraView(28124): Preview Frame received. Frame size: 3110400
D/CameraClient(  347): setPreviewCallbackFlag(5) (pid 28124)
I/QCameraHWI(  347): enableMsgType: E, msgType =0x10
I/QCameraHWI(  347): enableMsgType: X, msgType =0x10, mMsgEnabled=0xc1d
E/mm-camera-intf(  347): VIDEO_DENOISER_PROCESSING  = 10711.000000us 1920x1080
E/QCameraHWI_Preview(  347): Qandroid::status_t android::QCameraStream_preview::processPreviewFrameWithDisplay(mm_camera_super_buf_t*): PCB callback enabled
E/QCameraHWI_Preview(  347):  void android::QCameraStream_preview::resizePreviewFrame(camera_memory_t*) : E  
D/QCameraHWI_Preview(  347):  void android::QCameraStream_preview::resizePreviewFrame(camera_memory_t*) : X  
D/CameraClient(  347): dataCallback(16)
D/CameraClient(  347): frame is copied
D/CameraClient(  347): copyFrameAndPostCopiedFrame
D/CameraClient(  347): setPreviewCallbackFlag(0) (pid 28124)
E/QualcommCamera(  347): Qvoid android::disable_msg_type(camera_device*, int32_t): E
I/QCameraHWI(  347): disableMsgType: E
I/QCameraHWI(  347): disableMsgType: X, msgType =0x10, mMsgEnabled=0xc0d
D/JavaCameraView(28124): Preview Frame received. Frame size: 3110400
D/CameraClient(  347): setPreviewCallbackFlag(5) (pid 28124)
I/QCameraHWI(  347): enableMsgType: E, msgType =0x10
I/QCameraHWI(  347): enableMsgType: X, msgType =0x10, mMsgEnabled=0xc1d
E/mm-camera-intf(  347): VIDEO_DENOISER_PROCESSING  = 8362.000000us 1920x1080
E/QCameraHWI_Preview(  347): Qandroid::status_t android::QCameraStream_preview::processPreviewFrameWithDisplay(mm_camera_super_buf_t*): PCB callback enabled
E/QCameraHWI_Preview(  347):  void android::QCameraStream_preview::resizePreviewFrame(camera_memory_t*) : E  
D/QCameraHWI_Preview(  347):  void android::QCameraStream_preview::resizePreviewFrame(camera_memory_t*) : X  
D/CameraClient(  347): dataCallback(16)
D/CameraClient(  347): frame is copied
D/CameraClient(  347): copyFrameAndPostCopiedFrame
D/CameraClient(  347): setPreviewCallbackFlag(0) (pid 28124)
E/QualcommCamera(  347): Qvoid android::disable_msg_type(camera_device*, int32_t): E
I/QCameraHWI(  347): disableMsgType: E
I/QCameraHWI(  347): disableMsgType: X, msgType =0x10, mMsgEnabled=0xc0d
D/JavaCameraView(28124): Preview Frame received. Frame size: 3110400
D/CameraClient(  347): setPreviewCallbackFlag(5) (pid 28124)
I/QCameraHWI(  347): enableMsgType: E, msgType =0x10
I/QCameraHWI(  347): enableMsgType: X, msgType =0x10, mMsgEnabled=0xc1d
E/mm-camera-intf(  347): VIDEO_DENOISER_PROCESSING  = 7751.000000us 1920x1080
E/QCameraHWI_Preview(  347): Qandroid::status_t android::QCameraStream_preview::processPreviewFrameWithDisplay(mm_camera_super_buf_t*): PCB callback enabled
E/QCameraHWI_Preview(  347):  void android::QCameraStream_preview::resizePreviewFrame(camera_memory_t*) : E  
D/QCameraHWI_Preview(  347):  void android::QCameraStream_preview::resizePreviewFrame(camera_memory_t*) : X  
D/CameraClient(  347): dataCallback(16)
D/CameraClient(  347): frame is copied
D/CameraClient(  347): copyFrameAndPostCopiedFrame
E/LocSvc_ApiV02(  865): I/<--- void globalEventCb(locClientHandleType, uint32_t, locClientEventIndUnionType, void*) line 81 QMI_LOC_EVENT_POSITION_REPORT_IND_V02
E/mm-camera(  379): afd_algo_run: AFD success, std_width -1, flicker_freq 60
I/Vold    (  336): [LGE][VOLD][NetlinkHandler.cpp][onEvent()] subsys:cpu, action:0
I/Vold    (  336): [LGE][VOLD][NetlinkHandler.cpp][onEvent()] subsys:cpu, action:0
D/LocationManagerService(  865): Location listener died
I/LocationManagerService(  865): remove 42e000a8
I/ActivityManager(  865): Process com.example.opencvhello (pid 28124) has died.
I/WindowState(  865): WIN DEATH: Window{42acb930 u0 com.example.opencvhello/com.example.opencvhello.MainActivity}
W/ActivityManager(  865): Force removing ActivityRecord{42b66ae0 u0 com.example.opencvhello/.MainActivity t56}: app died, no saved state
W/CameraService(  347): Disconnecting camera client 0xb8d926a0 since the binder for it died (this pid 347)
D/CameraClient(  347): disconnect E (pid 347)
D/CameraClient(  347): hardware teardown
E/QualcommCamera(  347): Qvoid android::disable_msg_type(camera_device*, int32_t): E
I/QCameraHWI(  347): disableMsgType: E
I/QCameraHWI(  347): disableMsgType: X, msgType =0xffff, mMsgEnabled=0x0
E/QualcommCamera(  347): Qvoid android::stop_preview(camera_device*): E
I/QCameraHWI(  347): void android::QCameraHardwareInterface::stopPreview(): stopPreview: E

Solution

  • As answered here, try calling the garbage collector manually in onCameraFrame() as such :

    System.gc();
    

    That solved my problem where the app closed without any error after a minute or so.