[Nexus One Android Development] scotte9999:
Kernel NULL pointer dereference (and panic...duh)

I've got a repeatable, odd behavior with 0902 and 0906 snapshots (that's all I've ever tried, having come from BCM ICS before that).

If I install and configure Google Voice, it works great.

If I then reboot the phone, when I launch GV the kernel panics and the phone restarts.

Re-installing GV lets it work...until a reboot. It looks like clearing the dalvik-cache works too ("works" means GV works until the next reboot).

The last_kmsg is attached, but the salient part looks like:

[ 211.148864] mdp_wait: timeout waiting for mdp to complete 0x1
[ 211.149688] mdp_dump_blit: src: w=480 h=800 f=0xa offs=0x2f6000 mem_id=41
[ 211.150177] mdp_dump_blit: dst: w=60 h=94 f=0xc offs=0x0 mem_id=60
[ 211.150970] mdp_dump_blit: src_rect: x=0 y=38 w=480 h=762
[ 211.151458] mdp_dump_blit: dst_rect: x=0 y=0 w=60 h=94
[ 211.152221] mdp_dump_blit: alpha=0x000000ff
[ 211.152679] mdp_dump_blit: transp_max=0xffffffff
[ 211.153442] mdp_dump_blit: flags=00020000
[ 211.153900] MDP_TFETCH_STATUS: 00000000
[ 211.154327] MDP_TFETCH_TILE_COUNT: 00020002
[ 211.155090] MDP_TFETCH_FETCH_COUNT: 00000009
[ 211.159545] MDP_BGTFETCH_STATUS: 00000000
[ 211.163085] MDP_BGTFETCH_TILE_COUNT: 00010001
[ 211.167572] MDP_BGTFETCH_FETCH_COUNT: 00000022
[ 211.171752] MDP_PPP_SCALE_STATUS: 000003c4
[ 211.176086] MDP_PPP_BLEND_STATUS: 00000003
[ 211.179931] MDP_INTR_STATUS: 0000c000
[ 211.183471] MDP_INTR_ENABLE: 00000000
[ 211.189453] mdp_ppp_blit_and_wait: failed!
[ 211.191192] original request:
[ 211.194152] flags: 0x20000
[ 211.196838] src_start: 0x3b700000
[ 211.200744] src_len: 0x02000000
[ 211.203643] src.offset: 0x2f6000
[ 211.206848] src.format: 0xa
[ 211.211090] src.width: 480
[ 211.212402] src.height: 800
[ 211.215148] src_rect.x: 0
[ 211.217773] src_rect.y: 38
[ 211.223815] src_rect.w: 480
[ 211.224578] src_rect.h: 762
[ 211.226013] dst_start: 0x3d700000
[ 211.229492] dst_len: 0x00006000
[ 211.233093] dst.offset: 0x0
[ 211.235656] dst.format: 0xc
[ 211.238342] dst.width: 60
[ 211.241088] dst.height: 94
[ 211.244049] dst_rect.x: 0
[ 211.246307] dst_rect.y: 0
[ 211.249084] dst_rect.w: 60
[ 211.251800] dst_rect.h: 94
[ 211.254302] dead request:
[ 211.258880] flags: 0x20000
[ 211.259613] src_start: 0x3b700000
[ 211.262969] src_len: 0x02000000
[ 211.266357] src.offset: 0x2f6000
[ 211.270019] src.format: 0xa
[ 211.272369] src.width: 480
[ 211.275146] src.height: 800
[ 211.277923] src_rect.x: 0
[ 211.280578] src_rect.y: 38
[ 211.283233] src_rect.w: 480
[ 211.285980] src_rect.h: 762
[ 211.288970] dst_start: 0x3d700000
[ 211.292480] dst_len: 0x00006000
[ 211.295562] dst.offset: 0x0
[ 211.299591] dst.format: 0xc
[ 211.301422] dst.width: 60
[ 211.303771] dst.height: 94
[ 211.306488] dst_rect.x: 0
[ 211.309295] dst_rect.y: 0
[ 211.311706] dst_rect.w: 60
[ 211.314697] dst_rect.h: 94
[ 211.317077] kernel BUG at drivers/video/msm/mdp_ppp.c:784!
[ 211.324554] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[ 211.331115] pgd = daa70000
[ 211.333404] [00000000] *pgd=00000000
[ 211.337402] Internal error: Oops: 805 [#1] PREEMPT
[ 211.341644] last sysfs file: /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state

This is on a GSM (AT&T) N1, with a2sd and dc2sd enabled (although I'm not sure that matters).

I thought it had to do with a stale dalvik-cache, since the behavior seems to be that it works when the cache is fresh, but I've cleared the one on NAND and the one on /sd-ext, so "the" cache being used must be the right one. :)

Not sure how to debug this further.