Skip to content

Android:NDK:Troubleshooting

NDK사용중 발생할 수 있는 문제점에 대한 설명.

NDK Note: The Mangling of 'Va_list' Has Changed in GCC 4.

아래와 같은 메시지를 컴파일 빌드시 발견 할 수 있을 것이다.

In file included from jni/fskmodule.cpp:7:0:
/xxxx/usr/include/jni.h:592:13: note: the mangling of 'va_list' has changed in GCC 4.4

이와 같은 현상을 해결하기 위해서 Android.mk 파일에 아래의 플래그를 추가하면 된다.

LOCAL_CFLAGS = -Wno-psabi

Fatal signal 11 (SIGSEGV)

안드로이드 LogCat에서 아래와 같은 로그가 나타날 수 있다.

A/libc  Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)
  • libc: strlen(), sprintf(),... 등등의 C standard library를 구현한 라이브러리
  • signal 11 (SISSEGV) - Segmentation Violation의 약자로 잘못된 메모리 참조
  • at 0x0000000 - 0x00000 메모리 번지를 참조함

즉, [[JNI]측 코드에서 strlen 등의 Standard C함수호출시 파라미터가 NULL이 넘어가서 NULL을 참조하려다 난 오류일 가능성이 높다. 참고로, 로그를 잘 보면 C코드의 Stack도 확인할 수 있다.

See also