Неверный адрес кучи и фатальный сигнал 11

Время от времени мое приложение падает, и в моем журнале будет написано:

@@@ ABORTING: INVALID HEAP ADDRESS IN dlfree
Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1)

Иногда code=2, но всегда Fatal signal 11и неверный адрес кучи.

Я пытался выяснить, что это значит и как это исправить. Эта тема оказалась самой полезной; однако я все еще без решения.

Ошибка возникает, когда я запускаю пару AsyncTasksдля загрузки нескольких изображений.

Это моя основная AsyncTask

public class FetchArtistImages extends AsyncTask implements Constants {

private final WeakReference contextReference;

public FetchArtistImages(Context context) {
    contextReference = new WeakReference(context);
}

@Override
protected String[] doInBackground(Void... params) {
    String[] projection = new String[] {
            Audio.Artists._ID, Audio.Artists.ARTIST
    };
    String sortOrder = Audio.Artists.DEFAULT_SORT_ORDER;
    Uri uri = Audio.Artists.EXTERNAL_CONTENT_URI;
    Cursor c = contextReference.get().getContentResolver()
            .query(uri, projection, null, null, sortOrder);
    ArrayList artistIds = new ArrayList();
    if (c != null) {
        int count = c.getCount();
        if (count > 0) {
            final int ARTIST_IDX = c.getColumnIndex(Audio.Artists.ARTIST);
            for (int i = 0; i < count; i++) {
                c.moveToPosition(i);
                artistIds.add(c.getString(ARTIST_IDX));
            }
        }
        c.close();
        c = null;
    }
    return artistIds.toArray(new String[artistIds.size()]);
}

@Override
protected void onPostExecute(String[] result) {
    for (int i = 0; i < result.length; i++) {
            new LastfmGetArtistImages(contextReference.get()).executeOnExecutor(
                    AsyncTask.THREAD_POOL_EXECUTOR, result[i]);
    }
    super.onPostExecute(result);
}

Несмотря на то, что я пытался выяснить, что с этим делать, я все еще теряюсь, когда дело доходит до исправления. Если у кого-то есть какое-то понимание, я определенно был бы признателен за его просмотр. Ошибка не возникает каждый раз, когда я выполняюмои AsyncTasks, но я не могу найти шаблон, который помог бы определить, почему это происходит. На SO есть пара других тем о фатальном сигнале 11, но в моем случае они не очень помогают.

42
задан Community 23 May 2017 в 12:24
поделиться