GraphicBuffer: unflatten: registerBuffer failed: Bad address (-14)
以前あった現象
OpenGLRenderer GL error from OpenGLRenderer: 0x505
GraphicBufferMapper registerBuffer failed -14 (Bad address)
今回のログ
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0000000018:14:04.256: I/PowerManagerService(1785): Waking up from sleep... 18:14:04.670: D/SurfaceFlinger(129): Screen acquired, type=0 flinger=0x4113b318 18:14:04.802: I/ActivityManager(1785): Process com.google.process.gapps (pid 1705) has died. 18:14:04.904: E/IMGSRV(1785): :0: __map: Map device memory failed 18:14:04.904: W/GraphicBufferMapper(1785): registerBuffer(0x5d98d1a0) failed -14 (Bad address) 18:14:04.904: E/GraphicBuffer(1785): unflatten: registerBuffer failed: Bad address (-14) 18:14:04.904: I/WindowManager(1785): Lock screen displayed! 18:14:04.912: A/libc(1785): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 1800 (UI) 18:14:05.021: I/DEBUG(127): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 18:14:05.021: I/DEBUG(127): Build fingerprint: 'Android/full_maguro/maguro:4.2.1/JOP40D/' 18:14:05.021: I/DEBUG(127): Revision: '9' 18:14:05.021: I/DEBUG(127): pid: 1785, tid: 1800, name: UI >>> system_server <<< 18:14:05.021: I/DEBUG(127): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000 18:14:05.552: I/DEBUG(127): r0 00000000 r1 00000002 r2 5958ce24 r3 00000000 18:14:05.552: I/DEBUG(127): r4 5efc7b58 r5 5efc7b84 r6 5954a0b4 r7 5dd564fc 18:14:05.552: I/DEBUG(127): r8 00000300 r9 0000877f sl 00008779 fp 00000000 18:14:05.552: I/DEBUG(127): ip 00000000 sp 5efc7b00 lr 595c94cc pc 592304e8 cpsr 60000010 18:14:05.552: I/DEBUG(127): d0 000004a044941000 d1 4000000044941000 18:14:05.560: I/DEBUG(127): d2 3fe0000000000000 d3 bf56c16c16c15177 18:14:05.560: I/DEBUG(127): d4 3bc3198a2e000000 d5 3ba3198a2e000000 18:14:05.560: I/DEBUG(127): d6 0075007400780065 d7 3f19999a00650072 18:14:05.560: I/DEBUG(127): d8 0000000000000310 d9 441c000000000000 18:14:05.560: I/DEBUG(127): d10 400921fb44440000 d11 bfe0000000000000 18:14:05.560: I/DEBUG(127): d12 4000000000000000 d13 3f00000000000000 18:14:05.560: I/DEBUG(127): d14 0000000000000000 d15 0000000000000000 18:14:05.560: I/DEBUG(127): d16 3fe3333340000000 d17 3ff0000000000000 18:14:05.560: I/DEBUG(127): d18 b96377ce858a5d48 d19 3929f5135cb87c55 18:14:05.560: I/DEBUG(127): d20 0000000000000000 d21 397377ce858a5d48 18:14:05.560: I/DEBUG(127): d22 3fa555555555554c d23 bcb1a62633145c07 18:14:05.560: I/DEBUG(127): d24 3ff0000000000000 d25 0000000000000000 18:14:05.560: I/DEBUG(127): d26 4078c00000000000 d27 4081f00000000000 18:14:05.560: I/DEBUG(127): d28 8000000000000000 d29 3ff0000000000000 18:14:05.560: I/DEBUG(127): d30 3ff0000000000000 d31 3ff0000000000000 18:14:05.560: I/DEBUG(127): scr 2000009b 18:14:05.560: I/DEBUG(127): backtrace: 18:14:05.560: I/DEBUG(127): #00 pc 000014e8 /system/vendor/lib/libpvrANDROID_WSEGL.so 18:14:05.560: I/DEBUG(127): #01 pc 0000b4c8 /system/vendor/lib/libsrv_um.so
221 status_t GraphicBuffer::unflatten(void const* buffer, size_t size, 222 int fds[], size_t count) 223 { 224 if (size < 8*sizeof(int)) return NO_MEMORY; 225 226 int const* buf = static_cast<int const*>(buffer); 227 if (buf[0] != 'GBFR') return BAD_TYPE; 228 229 const size_t numFds = buf[6]; 230 const size_t numInts = buf[7]; 231 232 const size_t sizeNeeded = (8 + numInts) * sizeof(int); 233 if (size < sizeNeeded) return NO_MEMORY; 234 235 size_t fdCountNeeded = 0; 236 if (count < fdCountNeeded) return NO_MEMORY; 237 238 if (handle) { 239 // free previous handle if any 240 free_handle(); 241 } 242 243 if (numFds || numInts) { 244 width = buf[1]; 245 height = buf[2]; 246 stride = buf[3]; 247 format = buf[4]; 248 usage = buf[5]; 249 native_handle* h = native_handle_create(numFds, numInts); 250 memcpy(h->data, fds, numFds*sizeof(int)); 251 memcpy(h->data + numFds, &buf[8], numInts*sizeof(int)); 252 handle = h; 253 } else { 254 width = height = stride = format = usage = 0; 255 handle = NULL; 256 } 257 258 mOwner = ownHandle; 259 260 if (handle != 0) { 261 status_t err = mBufferMapper.registerBuffer(handle); <=この中でエラーが起きた。 262 if (err != NO_ERROR) { 263 ALOGE("unflatten: registerBuffer failed: %s (%d)", <=ここを通った。 264 strerror(-err), err); 265 return err; 266 } 267 } 268 269 return NO_ERROR; 270 }
49 status_t GraphicBufferMapper::registerBuffer(buffer_handle_t handle) 50 { 51 ATRACE_CALL(); 52 status_t err; 53 54 err = mAllocMod->registerBuffer(mAllocMod, handle); <=ここでエラー 55 56 ALOGW_IF(err, "registerBuffer(%p) failed %d (%s)", <=ここを通った。 57 handle, err, strerror(-err)); 58 return err; 59 }
以下の感じで登録される
78 struct private_module_t HAL_MODULE_INFO_SYM = { 79 base: { 80 common: { 81 tag: HARDWARE_MODULE_TAG, 82 version_major: 1,