Мое приложение аварийно завершило работу без какой-либо трассировки стека, кроме этой ошибки:
A/libc: Fatal signal 11 (SIGSEGV), code 128, fault addr 0x0 in tid 12680 (dio.downloadapp)
После устранения неполадок я сузил его до этой строки как той, которая вызывает эту ошибку:
val details = gson.fromJson(fileReader, VideoDetails::class.java)
Это происходит из метода модели представления:
private fun onVideoDetailsFetched() {
try {
val file = File(context.filesDir, QUEUE_VIDEO_DETAILS_FILE)
val fileReader = FileReader(file)
val details = gson.fromJson(fileReader, VideoDetails::class.java)
videoDetails.send(details)
} catch (e: Exception) {
e.printStackTrace()
}
}
Файл был создан в методе класса Worker из библиотеки WorkManager:
private fun VideoDetails.saveVideoDetails() {
val json = gson.toJson(this)
File(applicationContext.filesDir, VIDEO_DETAILS_FILE).writeText(json)
}
Также VideoDetails
- это просто данные класс со связкой строк и одним растровым изображением:
data class VideoDetails(
val filename: String? = null,
val title: String? = null,
val vcodec: String? = null,
val acodec: String? = null,
val duration: String? = null,
val filesize: String? = null,
val width: String? = null,
val height: String? = null,
val bitrate: String? = null,
val framerate: String? = null,
val encoder: String? = null,
val encodedBy: String? = null,
val date: String? = null,
val creationTime: String? = null,
val artist: String? = null,
val album: String? = null,
val albumArtist: String? = null,
val track: String? = null,
val genre: String? = null,
val composer: String? = null,
val performer: String? = null,
val copyright: String? = null,
val publisher: String? = null,
val language: String? = null,
var thumbnail: Bitmap? = null
)
Странно, что cra sh происходит только тогда, когда Gson.fromJson()
вызывается в третий раз. Первые два раза работает нормально.
У кого-нибудь есть идеи, почему я получаю эту ошибку? И как ее решить?
Обновление:
Похоже, работает, когда я удаляю растровое изображение. Теперь проблема в том, как сохранить растровое изображение и заставить его работать.