2011-11-28 2 views
0

내 안드로이드 코드 네이티브에서 충돌 문제가 있습니다.
내 앱은 scenario (Click here)에 설명 된 앱과 유사합니다.malloc과 충돌하고 안드로이드 네이티브 코드가 무료

Java 레이어는 일부 원시 API를 호출하여 기본 레이어를 호출하고 일부 프로세스를 삽입합니다.
네이티브 호출에서 처리를 위해 스레드를 시작하는 동안 네이티브 호출이 즉시 반환됩니다.
처리가 완료되면 (자), 네이티브 thread는 결과를 통지하기 위해서 Java 함수 (콜백 함수)를 호출합니다. 이것은 JNI 함수를 사용하고 * jvm-> AttachCurrentThread()를 사용하여 수행되었습니다.

로그 cat의 스택 트레이스 덤프에서 관찰 한 것은 처리를 완료하지 않았으며 malloc 또는 free (일부 mallocs 이후 또는 일부 해제 이후 및 일관성없는)에서 항상 충돌합니다.

어쨌든 안드로이드의 네이티브 코드에서 메모리 손상을 찾을 수 있습니까? android.mk 파일

LOCAL_EXPORT_LDLIBS += -lc 

플래그를 추가하여이 용액 I 시도 상술 한 바와 같이 링크

. 하지만 도움이되지는 않았지만 여전히 충돌을 관찰 할 수있었습니다.

누군가가 동일한 해결책을 알고 있다면 알려주십시오.

P.S : 네이티브 처리에 사용하고있는 코드는 다른 제품 (안드로이드 기반이 아닙니다)에 대해 완전히 테스트되었습니다. 안드로이드로 포팅을 시도 할 때의 문제. 실제로 memset 함수

감사 & 감사합니다,
SSuman185 내가 문제를 발견

+1

실용 가능한 가장 작은 샘플을 제공해 주시겠습니까? – qrtt1

+0

시도했지만 실행 가능한 예제를 만들 수 없습니다. – Suman

답변

0

는() 메모리를 해제 한 후 수행되고 있었다. 놀랍게도,이 코드는 이미 발표되었고 다른 플랫폼에서도 잘 작동합니다. 그러나 그것은 안드로이드에서 충돌을주고있다.

관련 문제