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.
Надеюсь, что это поможет.