Reproduced this by just creating an event in Outlook and waiting for it to fire in Thunderbird.
Bad alarm:
[calAlarmService] considering alarm for item: test alarm time: 2011/11/23 10:30:00 UTC isDate=0 snooze time: 2011/11/23 10:30:00 UTC isDate=0
[calAlarmService] now is 2011/11/23 10:55:45 UTC isDate=0
[calAlarmService] last ack was: 2011/11/23 10:29:59 UTC isDate=0
[calAlarmService] alarm is in the past and unack'd, firing now!
Reference good alarm (I would have previously dismissed through Outlook):
[calAlarmService] considering alarm for item: X alarm time: 2011/10/28 13:00:00 UTC isDate=0 snooze time: null
[calAlarmService] now is 2011/11/23 10:55:45 UTC isDate=0
[calAlarmService] last ack was: 2011/11/25 13:59:59 UTC isDate=0
[calAlarmService] X - alarm previously ackd.
Refernce good alarm (in the future, not fired yet):
[calAlarmService] considering alarm for item: Y alarm time: 2011/11/25 14:00:00 UTC isDate=0 snooze time: null
[calAlarmService] now is 2011/11/23 10:55:45 UTC isDate=0
[calAlarmService] alarm is in the future.
[calAlarmService] alarm is too late.
getInterfaces called
...
-> Looks like the ack checking logic is off (I wonder if "alarm is in the past and unack'd" actually means "alarm is in the past OR unack'd" - and perhaps the ack logic itself isn't working properly?
Reproduced this by just creating an event in Outlook and waiting for it to fire in Thunderbird.
Bad alarm:
[calAlarmService] considering alarm for item: test alarm time: 2011/11/23 10:30:00 UTC isDate=0 snooze time: 2011/11/23 10:30:00 UTC isDate=0
[calAlarmService] now is 2011/11/23 10:55:45 UTC isDate=0
[calAlarmService] last ack was: 2011/11/23 10:29:59 UTC isDate=0
[calAlarmService] alarm is in the past and unack'd, firing now!
Reference good alarm (I would have previously dismissed through Outlook):
[calAlarmService] considering alarm for item: X alarm time: 2011/10/28 13:00:00 UTC isDate=0 snooze time: null
[calAlarmService] now is 2011/11/23 10:55:45 UTC isDate=0
[calAlarmService] last ack was: 2011/11/25 13:59:59 UTC isDate=0
[calAlarmService] X - alarm previously ackd.
Refernce good alarm (in the future, not fired yet):
[calAlarmService] considering alarm for item: Y alarm time: 2011/11/25 14:00:00 UTC isDate=0 snooze time: null
[calAlarmService] now is 2011/11/23 10:55:45 UTC isDate=0
[calAlarmService] alarm is in the future.
[calAlarmService] alarm is too late.
getInterfaces called
...
-> Looks like the ack checking logic is off (I wonder if "alarm is in the past and unack'd" actually means "alarm is in the past OR unack'd" - and perhaps the ack logic itself isn't working properly?