Сбой с malloc и свободным в Android нативный код - PullRequest
0 голосов
/ 28 ноября 2011

Я столкнулся с проблемой сбоя в нативной части моего кода Android.
Мое приложение похоже на приложение, описанное в этом сценарии (Нажмите здесь) .

Уровень Java будет вызывать собственный уровень, вызывая некоторый собственный API и инициируя некоторый процесс.
Собственный вызов немедленно возвращается обратно при запуске потока в нативном для обработки.
Как только обработка завершена, собственный поток вызовет функцию Java (функцию обратного вызова) для информирования о результате. Это было сделано с помощью функций JNI и использования * jvm-> AttachCurrentThread ().

То, что я наблюдаю из дампа трассировки стека в журнале cat, это то, что он даже не завершил обработку, и он всегда падает на malloc или свободен (после некоторых malloc или после некоторых освобождений и не согласован).

Есть ли способ найти повреждение памяти в нативном коде Android?

Как упоминалось в приведенной выше ссылке, я попытался с этим решением, добавив

LOCAL_EXPORT_LDLIBS += -lc

флаг в файле android.mk. Но это не помогло, я все еще могу наблюдать за авариями.

Пожалуйста, дайте мне знать, если кто-нибудь знает решение для того же.

P.S .: Код, который я использую для нативной обработки, полностью протестирован для другого продукта (которого нет на Android). Столкнувшись с проблемами при попытке портирования на Android.

Спасибо и всего наилучшего,
SSuman185

1 Ответ

0 голосов
/ 06 декабря 2011

Я обнаружил проблему, на самом деле memset () выполнялся после освобождения памяти.Удивительно то, что этот код уже выпущен и отлично работает для других платформ.Но это дает сбои в Android.

...