Ask Your Question
0

Segfault in convertTo Android OpenCV 2.4.x->3.0

asked 2015-11-23 00:51:20 -0600

beniroquai gravatar image

Yesterday I moved my project from OpenCV 2.4 to 3.0. I've tested the code in VisualStudio. Everything works fine, but in Android I'm getting errors when I'm trying to run the code. I've built the library with OpenCL enabled (see code bellow). A simple example app, that does edge detection on CPU/GPU works fine, but the app, which was 2.4.x previously is getting weired errors:

signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x9

I'm accessing a Mat comming from Java-Side by its Jlong-Adress:

Mat& I_h_temp = *(Mat*)in_addrRawHolo;

Then I do some conversion:

I_h.convertTo(I_h, CV_64FC1);
sqrt(I_h, I_h);

There is an error comming and the App crashes:

    11-23 07:32:39.191 368-368/? I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
11-23 07:32:39.191 368-368/? I/DEBUG: UUID: 1c75fc96-14cc-406f-b6d5-c2e129dcc0f3
11-23 07:32:39.191 368-368/? I/DEBUG: Build fingerprint: 'Sony/C6903/C6903:5.1.1/14.6.A.0.368/1533290499:user/release-keys'
11-23 07:32:39.192 368-368/? I/DEBUG: Revision: '0'
11-23 07:32:39.192 368-368/? I/DEBUG: ABI: 'arm'
11-23 07:32:39.192 368-368/? I/DEBUG: pid: 32007, tid: 3898, name: Thread-8533  >>> de.example <<<
11-23 07:32:39.192 368-368/? I/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x9
11-23 07:32:39.209 368-368/? I/DEBUG:     r0 9ed54810  r1 00000002  r2 aed69940  r3 00000005
11-23 07:32:39.209 368-368/? I/DEBUG:     r4 9ed54810  r5 00000000  r6 9eb56b80  r7 aed69938
11-23 07:32:39.210 368-368/? I/DEBUG:     r8 00000005  r9 ffffffff  sl 00040000  fp 00000000
11-23 07:32:39.210 368-368/? I/DEBUG:     ip aed69940  sp ae93c718  lr 00000001  pc 9e420c9c  cpsr a00d0030
11-23 07:32:39.212 368-368/? I/DEBUG:     #00 pc 00170c9c  /data/app/de.example-1/lib/arm/libopencv_java3.so (cv::Mat::create(int, int const*, int)+1291)
11-23 07:32:39.212 368-368/? I/DEBUG:     #01 pc 00186cc3  /data/app/de.example-1/lib/arm/libopencv_java3.so (cv::_OutputArray::create(cv::Size_<int>, int, int, bool, int) const+546)
11-23 07:32:39.212 368-368/? I/DEBUG:     #02 pc 000fc7ab  /data/app/de.example-1/lib/arm/libopencv_java3.so (cv::Mat::convertTo(cv::_OutputArray const&, int, double, double) const+314)
11-23 07:32:39.212 368-368/? I/DEBUG:     #03 pc 0009110d  /data/app/de.example-1/lib/arm/libopencv_java3.so (Java_org_opencv_core_Mat_n_1convertTo__JJI+52)

The exact same code works with the old Version. I think there is a problem with the library? I've built it using

set PATH=%PATH%;C:\Users\Bene\Downloads\ninja.exe
mkdir OpenCVCL3
cd OpenCVCL3
cmake -GNinja -DCMAKE_MAKE_PROGRAM="C:/Users/Bene/Downloads/ninja.exe" -DCMAKE_TOOLCHAIN_FILE=C:/opencv3cl/platforms/android/android.toolchain.cmake -DANDROID_ABI="armeabi-v7a with NEON" -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -DWITH_OPENCL=YES C:/opencv3cl
path/to/ninja.exe install/strip

My Android.mk

LOCAL_PATH      := $(call my-dir)
LOCAL_PATH_EXT  := $(call my-dir)/../libs/
include $(CLEAR_VARS)

#opencv
OPENCVROOT:= C:/OpenCVCL3/install
OPENCV_CAMERA_MODULES:=off
OPENCV_INSTALL_MODULES:=on
#OPENCV_LIB_TYPE:= STATIC
OPENCV_LIB_TYPE:=SHARED

include ${OPENCVROOT}/sdk/native/jni/OpenCV.mk

LOCAL_ARM_MODE  := arm

LOCAL_MODULE    := native_holo

LOCAL_CFLAGS    += -DANDROID_CL
LOCAL_CFLAGS    += -O3 -ffast-math

LOCAL_C_INCLUDES ...
(more)
edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted
0

answered 2015-11-25 14:18:27 -0600

beniroquai gravatar image

Ok. I found the answer by myself. There was an error with the Opencv 3.0 Gradle Module for the Java frontend. Even though I thought I've updated the files it seems, that it was still on 2.4.11. Anyway. Now it works! :)

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2015-11-23 00:51:20 -0600

Seen: 1,237 times

Last updated: Nov 25 '15