[Galaxy S I9000 Android Development] Einride:
Had another SOD, sometime between 19:50 and 20:20, most likely at about 19:55 when I received a new mail which gave a sound and LED notification. LEDs are now lit, but none of the buttons work, virtual or hardware.

Logcat: http://pastebin.com/MW6e3tzD

Kmsg: http://pastebin.com/CRxD2R3S

Looking at the logcat there was a warning during playback of the notification of a new email, then nothing for a few minutes and suddenly dalvikvm gets two exceptions and then debuggerd commits suicide to free a system_server zombie process it seems. It all goes downhill from there...

Looking at the kmsg, the device fails during a suspend/resume cycle?

<6>[36618.001308] wakeup wake lock: svnet
<6>[36618.319741] fsa9480 7-0025: dev1: 0x0, dev2: 0x0
<6>[36618.320301] s3c-rtc s3c2410-rtc: rtc disabled, re-enabling
<6>[36618.320406] [ wm8994_samsung.c (wm8994_resume,3389) ] wm8994_resume..
<6>[36618.320438] [ wm8994_samsung.c (wm8994_resume,3391) ] ------WM8994 Revision = [3]-------
<6>[36618.320707] PM: resume of devices complete after 319.271 msecs
<4>[36618.324790] Restarting tasks ...
<6>[36618.341159] [ wm8994_herring.c (wm8994_configure_clock,1146) ] USBOSC Enabled in Sleep Mode
<6>[36618.341170]
<6>[36618.341725] dai_active 0, IISMOD d0001c00, IISCON 8030ce38
<4>[36618.360578] done.

Worked fine that time, svnet asked for a wake lock, phone resumed, suspended again and went back to sleep. The next time however...

<6>[36623.977805] wakeup wake lock: svnet
<6>[36624.284561] fsa9480 7-0025: dev1: 0x0, dev2: 0x0
<6>[36624.285120] s3c-rtc s3c2410-rtc: rtc disabled, re-enabling
<6>[36624.285224] [ wm8994_samsung.c (wm8994_resume,3389) ] wm8994_resume..
<6>[36624.285256] [ wm8994_samsung.c (wm8994_resume,3391) ] ------WM8994 Revision = [3]-------
<6>[36624.285525] PM: resume of devices complete after 307.592 msecs
<4>[36624.289527] Restarting tasks ...
<6>[36624.301342] [ wm8994_herring.c (wm8994_configure_clock,1146) ] USBOSC Enabled in Sleep Mode
<6>[36624.301353]
<6>[36624.301825] dai_active 0, IISMOD d0001c00, IISCON 8030ce38
<6>[36624.309490] init: waitpid returned pid 111, status = 00000009
<5>[36624.309742] init: process 'debuggerd', pid 111 exited
<5>[36624.309888] init: process 'debuggerd' killing any children in process group
<5>[36624.310276] init: starting 'debuggerd'
<4>[36624.311249] done.
<7>[36624.311485] Universal : Card status 1
<6>[36624.311752] suspend: exit suspend, ret = 0 (2011-10-07 18:01:01.526601911 UTC)
<6>[36624.352114] binder: send failed reply for transaction 750911 to 547:547
<6>[36624.352377] binder: send failed reply for transaction 750912 to 516:13318
<6>[36624.400546] binder: 516:13318 transaction failed 29189, size 80-4
<6>[36624.409022] alarm_release: clear alarm, pending 0
<6>[36624.409158] alarm_release: clear alarm, pending 0
<6>[36624.409347] alarm_release: clear alarm, pending 0
<6>[36624.580737] init: waitpid returned pid 113, status = 00000009
<5>[36624.580953] init: process 'zygote', pid 113 exited
<5>[36624.582031] init: process 'zygote' killing any children in process group

Since I'm not familiar with the Galaxy S kernel and modules at all, I had to google dai_active and IISMOD to figure out what it is:

static int s3c2412_i2s_resume(struct platform_device *pdev,
struct snd_soc_dai *dai)
{
struct s3c2412_i2s_info *i2s = &s3c2412_i2s;

dev_info(&pdev->dev, "dai_active %d, IISMOD %08x, IISCON %08x\n",
dai->active, i2s->suspend_iismod, i2s->suspend_iiscon);

if (dai->active) {
writel(i2s->suspend_iiscon, i2s->regs + S3C2412_IISCON);
writel(i2s->suspend_iismod, i2s->regs + S3C2412_IISMOD);
writel(i2s->suspend_iispsr, i2s->regs + S3C2412_IISPSR);

writel(S3C2412_IISFIC_RXFLUSH | S3C2412_IISFIC_TXFLUSH,
i2s->regs + S3C2412_IISFIC);

ndelay(250);
writel(0x0, i2s->regs + S3C2412_IISFIC);

}

return 0;
}

There's our kmsg output right there, in an ALSA Soc Audio Layer - S3C2412 I2S driver. Add to it the log lines in between each suspend/resume from the WM8994 driver... 'sup, sound drivers?

Of course, I could be totally off the track, so that's enough of my ramblings for now. After hours of working overtime (and on a friday!) it's time for a beer.