FATAL SIGNAL 11 (Sigsegv) при 0x00000000 (код = 1)?

Почему возникает эта проблема?

public static String path;
private VideoView mVideoView;


mVideoView = (VideoView) findViewById(R.id.surface_view);
mVideoView.setVideoPath(path);
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();

//...

    private int mLayout = VideoView.VIDEO_LAYOUT_ZOOM;

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        if (mVideoView != null)
            mVideoView.setVideoLayout(mLayout, 0);
        super.onConfigurationChanged(newConfig);
    }

this is error

Ответ 1

Сообщение об ошибке, которое вы видите, вызвано разыменованием нулевого указателя в собственном коде. Из того, что вы показываете, трудно угадать, что может быть причиной.

На вашем месте я бы дважды проверял, что вы не передаете пустые ссылки на системный или библиотечный метод.

Ответ 2

Как упоминалось Никола, это, скорее всего, вызвано разыменованием нулевого указателя в нативном коде. У меня была аналогичная проблема и она была решена путем отладки трассировки стека.

Если вы отключите фильтрацию в своем журнале, вы увидите всю трассировку стека. Это даст вам подробную информацию о том, где произошел сбой, я использовал следующий python script, чтобы найти точную причину; https://code.google.com/p/android-ndk-stacktrace-analyzer/wiki/Usage

В моем случае появился нулевой указатель из-за запуска пользовательской сборки Android.

Удачи.

Ответ 3

Скорее всего, проблема с потоками... Я когда-то работал в Fatal Signal 11, когда я делал что-то не туда...

Вероятно, setVideoLayout() - вызывает в вас реализацию onConfigurationChanged().

Было бы полезно, если бы вы могли разместить еще несколько кода...

Ответ 4

Вы можете увидеть из последнего вызова коллекции Garbage Collection, что сборщик мусора не смог освободить память и что у вас нет доступной памяти. Насколько велики ваши буферы? Сколько им нужна дополнительная комната?

Одно из возможных решений заключается в том, чтобы исследовать использование большего размера кучи, установив android:largeHeap="true", чтобы разрешить большой размер кучи в манифесте приложения, зарегистрированный на сайте разработчиков ..

Ответ 5

У меня была та же проблема, используя вкладку galaxy galaxy 2, загружающую любой веб-сайт WiX:

Фатальный сигнал 11 (SIGSEGV) при 0x00000000 (код = 1)

и выйти из всего приложения.

Изучая больше, я нашел сообщение о ROM BUG. Итак, я подключаю телефон и F11 (eclipse), чтобы скомпилировать тот же код. И... Он работает! Я все еще получаю ошибку в своем планшете.

ТАБЛЕТКИ: Samsung Galaxy Tabg 2 GT-P5100 ANDROID 4.0.3 KERNEL 3.0.8

ТЕЛЕФОН: Samsung Galaxy Young DUOS (старый, но прошивка обновлена) GT-S6102B ANDROID 4.4.2 KERNEL 2.6.35.7

Работайте в моем телефоне, но сбой на планшете, когда я загружаю любой веб-сайт, созданный с помощью инструмента WiX.

хорошая информация здесь: google + link

Ответ 6

У меня была аналогичная проблема при завершении моей работы двумя TextureViews (например, нажатием кнопки home):

Fatal signal 11 (SIGSEGV), code 1, fault addr 0xa4680000 in tid 29013 (pool-4-thread-1)

Лог-код показал, что segv появился внутри функции drawXXX. Поэтому я попытался не рисовать, когда поверхность разрушена:

private synchronized void doDraw(Canvas canvas) {
...
}

doDraw() регулярно вызывается фоновым потоком. Если быть точным, используйте ScheduledExecutorService. Эта вещь остановлена ​​в уничтоженном слушателе, который также получил синхронизированное ключевое слово:

public synchronized boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) {
    executorService.shutdownNow();
    return true;
}

Это гарантирует, что поверхность может быть уничтожена только в том случае, если в настоящее время ничего не нарисовано.

Больше нет сбоев при выходе из этой активности!

Мне кажется, что никто не использует TextureViews, но все же SurfaceViews. К сожалению, последний имеет некоторые проблемы при рисовании полупрозрачной графики на некоторых устройствах, поэтому я переключился на TextureView.

Надеюсь, что это поможет.