Open Bug 1739893 Opened 4 years ago Updated 4 years ago

holiday calendars don't work in new 91+ versions

Categories

(Calendar :: Provider: ICS/WebDAV, defect)

Thunderbird 91
defect

Tracking

(Not tracked)

UNCONFIRMED

People

(Reporter: david, Unassigned)

Details

Attachments

(3 files)

User Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36

Steps to reproduce:

also "file->open->calendar file" doesn't seem to work any more either. If I download the ICS file and open it, the calendar is blank. (One of the same ICS calendars I routinely used with version 78)

Actual results:

It displays "Please select the calendars you would like to subscribe to." It shows a calendar with the exact name of the ics file, but it is completely greyed out, and can't be checked, and the properties button can't be clicked.

Clicking the subscribe button does not add calendar.

Expected results:

Calendar should have been added based on the contents of the ICS file.

Subscribing to these calendars works:

Please follow these steps to provide more information:

  1. Press the Alt key.
  2. Open menu Tools > Developer Tools > Error Console.
  3. Clear it.
  4. Try to subscribe to a calendar.
  5. Mention the calendar url and the error messages which got added to the console (if any) here.

Thank you.

Flags: needinfo?(david)

Ah yes, you're right, and thank you for mentioning Developer Tools: that was very helpful!

I can confirm that the GermanHolidays.ics is working properly. The originally reported error was the result of a console error from an existing calendar in the profile, that was causing the add new calendar to not work properly.

The cal-z12.ics will cause the console error. Here are details on how to duplicate in a clean profile:

Starting with a clean profile, when I add https://the-solitaries.com/ics/cal-z12.ics, I get the following console error:

NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [calIIcalProperty.valueAsDatetime] 2 CalRecurrenceDate.jsm:112
    set icalProperty resource:///modules/CalRecurrenceDate.jsm:112
    setItemBaseFromICS resource:///components/calItemBase.js:935
    set icalComponent resource:///modules/CalEvent.jsm:164
    run resource:///modules/CalIcsParser.jsm:272

In order to debug this, I had to:

  • edit the newly added calendar
  • set its update to "manual."
  • completely close and reopen thunderbird
  • open devtools
  • set breakpoints
  • finally hit "synchronize."

Before I hit "synchronize," the error does not show up in the console. However when it stops on the breakpoint, it already shows the error in the console, seeming to indicate that this line has already executed without having stopped on the breakpoint. The error has a (2), which I think means the same error occurred twice.

But it does stop on the breakpoint. After it has stopped on the breakpoint I'm able to inspect values and such, but if I try to step in or forward, things start to act strangely.

And once the CalRecurrenceDate.jsm:112 has occurred, much of the calendar panel controls cease to work until thunderbird is completely restarted. If I try to add a new calendar, I get the originally reported problem of a grayed out calendar. Also "synchronize" will no longer work.

This appears to be happening on the RDATE property, for the first item in the calendar:

BEGIN:VEVENT
DTSTART;VALUE=DATE:20101128
DTEND;VALUE=DATE:20101129
RDATE;VALUE=DATE:20111127,20121202,20131201,20141130,20151129,20161127
 ,20171203,20181202,20191201,20201129,20211128,20221127,20231203,2024120
 1,20251130,20261129,20271128,20281203,20291202,20301201,20311130,203211
 28,20331127,20341203,20351202,20361130,20371129,20381128,20391127
SUMMARY:1: First Sunday in Advent
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
TRANSP:TRANSPARENT
END:VEVENT

When I inspect on the breakpoint at CalRecurrenceDate.jsm:112:

   this.mDate = prop.valueAsDatetime;

I see that the value of prop.valueAsDatetime is:

icalString: "RDATE;VALUE=DATE:20111127\r\n"
parent: XPCWrappedNative_NoHelper
propertyName: "RDATE"
value: "20111127"
valueAsDatetime: XPCWrappedNative_NoHelper
valueAsIcalString: "20111127"
<prototype>: XPC_WN_Proto_JSClass

I can't see any more information than that, but based on that output and the name prop.valueAsDatetime, I surmise that this code might be missing support for a comma-separated list of dates in RDATE (see examples in the RFC-5545, section 3.8.5.2), and when this occurs it's throwing an uncaught exception that breaks the calendar panel.

Flags: needinfo?(david)

Here is a screen shot of the error with call stack. This isn't identical to the text copy/paste in the previous comment; the two were captured at different times, after several restarts and the calendar being removed and readded.

You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: