opencv와 jni를 이용하여 안드로이드 포팅중입니다.
우선 so파일을 만드는 cpp파일은 다음과 같습니다.

#include <jni.h>
#include "FindAll.h"

JNIEXPORT void JNICALL
Java_exam_TheHiddenCatch_FindAll_matching(JNIEnv *env, jobject obj, jstring img1, jstring img2) {
 double min, max;
 const char *image1 = NULL; const char *image2 = NULL;
 image1 = env->GetStringUTFChars(img1,NULL);
 image2 = env->GetStringUTFChars(img2,NULL);

 IplImage *graysrc = NULL; IplImage *resize = NULL;
 IplImage *graydst = NULL; IplImage *dresize = NULL;
 IplImage *cresize = NULL; IplImage *cdresize = NULL;
 IplImage *colorsrc = NULL; IplImage *colordst = NULL;
 IplImage *dtmp[400]; IplImage *result[400];
 int flag[400]={0};

 CvPoint max_loc, min_loc, curr_loc;
 int i, d, x=0, y=0;

 graysrc=cvLoadImage(image1,CV_LOAD_IMAGE_GRAYSCALE);     // 흑백으로 load
 if(graysrc!=0)
  __android_log_print(ANDROID_LOG_INFO,"jni","graysrc success");
 else
  __android_log_print(ANDROID_LOG_INFO,"jni","graysrc failed");

(중략)


이 matching()을 java코드에서 수행시켜주면 DDMS에 다음과 같은 에러가 뜹니다...


11-22 16:47:40.632: INFO/ActivityManager(63): Displayed activity exam.TheHiddenCatch/.Matching2: 493 ms (total 493 ms)
11-22 16:47:41.902: INFO/jni(19052): graysrc failed
11-22 16:47:41.942: INFO/jni(19052): colorsrc failed
11-22 16:47:41.952: INFO/jni(19052): no1
11-22 16:47:41.972: INFO/jni(19052): /sdcard/TheHiddenCatch/D1.jpg
11-22 16:47:41.972: INFO/jni(19052): /sdcard/TheHiddenCatch/D2.jpg
11-22 16:47:42.232: INFO/DEBUG(28): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
11-22 16:47:42.232: INFO/DEBUG(28): Build fingerprint: 'generic/sdk/generic/:2.1-update1/ECLAIR/35983:eng/test-keys'
11-22 16:47:42.252: INFO/DEBUG(28): pid: 19052, tid: 19052  >>> exam.TheHiddenCatch <<<
11-22 16:47:42.252: INFO/DEBUG(28): signal 11 (SIGSEGV), fault addr 00000028
11-22 16:47:42.262: INFO/DEBUG(28):  r0 00000023  r1 bebf327c  r2 bebf48e0  r3 00000000
11-22 16:47:42.272: INFO/DEBUG(28):  r4 80ce7b70  r5 4104ba64  r6 4104ba4c  r7 00000000
11-22 16:47:42.272: INFO/DEBUG(28):  r8 bebf4918  r9 4104ba64  10 00000000  fp 00000000
11-22 16:47:42.282: INFO/DEBUG(28):  ip afbc30c8  sp bebf32a0  lr afbc1053  pc 80c1c432  cpsr 00000030
11-22 16:47:42.602: INFO/DEBUG(28):          #00  pc 0001c432  /data/data/exam.TheHiddenCatch/lib/libFindAll.so
11-22 16:47:42.622: INFO/DEBUG(28):          #01  pc 0000f1f4  /system/lib/libdvm.so
11-22 16:47:42.632: INFO/DEBUG(28):          #02  pc 00038018  /system/lib/libdvm.so
11-22 16:47:42.652: INFO/DEBUG(28):          #03  pc 000316a2  /system/lib/libdvm.so
11-22 16:47:42.662: INFO/DEBUG(28):          #04  pc 0003d31c  /system/lib/libdvm.so
11-22 16:47:42.662: INFO/DEBUG(28):          #05  pc 00013f58  /system/lib/libdvm.so
11-22 16:47:42.682: INFO/DEBUG(28):          #06  pc 00019888  /system/lib/libdvm.so
11-22 16:47:42.682: INFO/DEBUG(28):          #07  pc 00018d5c  /system/lib/libdvm.so
11-22 16:47:42.702: INFO/DEBUG(28):          #08  pc 0004d3bc  /system/lib/libdvm.so
11-22 16:47:42.712: INFO/DEBUG(28):          #09  pc 00054e74  /system/lib/libdvm.so
11-22 16:47:42.732: INFO/DEBUG(28):          #10  pc 00013f58  /system/lib/libdvm.so
11-22 16:47:42.742: INFO/DEBUG(28):          #11  pc 00019888  /system/lib/libdvm.so
11-22 16:47:42.762: INFO/DEBUG(28):          #12  pc 00018d5c  /system/lib/libdvm.so
11-22 16:47:42.762: INFO/DEBUG(28):          #13  pc 0004d6d0  /system/lib/libdvm.so
11-22 16:47:42.782: INFO/DEBUG(28):          #14  pc 0003a72c  /system/lib/libdvm.so
11-22 16:47:42.802: INFO/DEBUG(28):          #15  pc 0002be52  /system/lib/libdvm.so
11-22 16:47:42.812: INFO/DEBUG(28):          #16  pc 00026f7c  /system/lib/libandroid_runtime.so
11-22 16:47:42.812: INFO/DEBUG(28):          #17  pc 00027c60  /system/lib/libandroid_runtime.so
11-22 16:47:42.822: INFO/DEBUG(28):          #18  pc 00008cae  /system/bin/app_process
11-22 16:47:42.832: INFO/DEBUG(28):          #19  pc 0000c2c6  /system/lib/libc.so
11-22 16:47:42.852: INFO/DEBUG(28):          #20  pc b00018aa  /system/bin/linker
11-22 16:47:42.862: INFO/DEBUG(28): code around pc:
11-22 16:47:42.862: INFO/DEBUG(28): 80c1c420 20049a23 f7ff1c21 22b2ee0e 446a0152
11-22 16:47:42.872: INFO/DEBUG(28): 80c1c430 6a9a6813 d9002af0 2304e225 9a189326
11-22 16:47:42.892: INFO/DEBUG(28): 80c1c440 9b1a991a 188924b2 01644aba 189a446c
11-22 16:47:42.892: INFO/DEBUG(28): code around lr:
11-22 16:47:42.902: INFO/DEBUG(28): afbc1040 00804a0a 58c7189b 1c311c38 f7ff1c2a
11-22 16:47:42.902: INFO/DEBUG(28): afbc1050 1c04ee7e da042800 ee90f7ff 29046801
11-22 16:47:42.912: INFO/DEBUG(28): afbc1060 1c20d0f2 46c0bdf8 0000207c 000000a8
11-22 16:47:42.912: INFO/DEBUG(28): stack:
11-22 16:47:42.922: INFO/DEBUG(28):     bebf3260  000000a9 
11-22 16:47:42.922: INFO/DEBUG(28):     bebf3264  ad03a5b5  /system/lib/libdvm.so
11-22 16:47:42.922: INFO/DEBUG(28):     bebf3268  0000aa98  [heap]
11-22 16:47:42.932: INFO/DEBUG(28):     bebf326c  43ba6388  /dev/ashmem/mspace/dalvik-heap/2 (deleted)
.................



SIGSEGV가 발행하는데 이게 메모리참조에 문제가 있다는 거라는데..

어떻게 해야할까요...ㅠ