I’m able to 100% reproduce this bug, reinstalling the app won’t help though. The problem is that Davdroid is unable to set the TZ that Evolution sets for a CalDAV entry. Here’s the error message I receive :
java.lang.NullPointerException: Attempt to invoke virtual method 'void java.util.Calendar.setTimeZone(java.util.TimeZone)' on a null object reference
at java.text.DateFormat.setTimeZone(DateFormat.java:690)
at net.fortuna.ical4j.model.Iso8601.<init>(Iso8601.java:77)
at net.fortuna.ical4j.model.Date.<init>(Date.java:150)
at net.fortuna.ical4j.model.DateTime.<init>(DateTime.java:262)
at net.fortuna.ical4j.util.Dates.getInstance(Dates.java:223)
at net.fortuna.ical4j.model.component.Observance.getLatestOnset(Observance.java:230)
at net.fortuna.ical4j.model.TimeZone.getRawOffset(TimeZone.java:180)
at net.fortuna.ical4j.model.TimeZone.<init>(TimeZone.java:69)
at net.fortuna.ical4j.data.CalendarBuilder$ContentHandlerImpl.endComponent(CalendarBuilder.java:245)
at net.fortuna.ical4j.data.CalendarParserImpl$ComponentParser.parse(CalendarParserImpl.java:444)
at net.fortuna.ical4j.data.CalendarParserImpl$ComponentParser.access$900(CalendarParserImpl.java:406)
at net.fortuna.ical4j.data.CalendarParserImpl$PropertyListParser.parse(CalendarParserImpl.java:208)
at net.fortuna.ical4j.data.CalendarParserImpl.parseCalendar(CalendarParserImpl.java:115)
at net.fortuna.ical4j.data.CalendarParserImpl.parseCalendarList(CalendarParserImpl.java:180)
at net.fortuna.ical4j.data.CalendarParserImpl.parse(CalendarParserImpl.java:149)
at net.fortuna.ical4j.data.CalendarBuilder.build(CalendarBuilder.java:198)
at net.fortuna.ical4j.data.CalendarBuilder.build(CalendarBuilder.java:178)
at at.bitfire.ical4android.Event$Companion.fromReader(Event.kt:78)
at at.bitfire.ical4android.Event$Companion.fromReader$default(Event.kt:72)
at at.bitfire.davdroid.syncadapter.CalendarSyncManager.processVEvent(CalendarSyncManager.kt:159)
at at.bitfire.davdroid.syncadapter.CalendarSyncManager.access$processVEvent(CalendarSyncManager.kt:41)
at at.bitfire.davdroid.syncadapter.CalendarSyncManager$downloadRemote$2$1$1.invoke(CalendarSyncManager.kt:144)
at at.bitfire.davdroid.syncadapter.CalendarSyncManager$downloadRemote$2$1$1.invoke(CalendarSyncManager.kt:41)
at at.bitfire.davdroid.syncadapter.SyncManager.useRemote(SyncManager.kt:798)
at at.bitfire.davdroid.syncadapter.CalendarSyncManager$downloadRemote$2$1.invoke(CalendarSyncManager.kt:131)
at at.bitfire.davdroid.syncadapter.CalendarSyncManager$downloadRemote$2$1.invoke(CalendarSyncManager.kt:41)
at at.bitfire.dav4android.Response$Companion.parse(Response.kt:211)
at at.bitfire.dav4android.DavResource$processMultiStatus$2.invoke(DavResource.kt:465)
at at.bitfire.dav4android.DavResource.processMultiStatus(DavResource.kt:484)
at at.bitfire.dav4android.DavResource.processMultiStatus(DavResource.kt:435)
at at.bitfire.dav4android.DavCalendar.multiget(DavCalendar.kt:151)
at at.bitfire.davdroid.syncadapter.CalendarSyncManager$downloadRemote$2.invoke(CalendarSyncManager.kt:130)
at at.bitfire.davdroid.syncadapter.CalendarSyncManager$downloadRemote$2.invoke(CalendarSyncManager.kt:41)
at at.bitfire.davdroid.syncadapter.SyncManager.useRemote(SyncManager.kt:787)
at at.bitfire.davdroid.syncadapter.SyncManager.useRemoteCollection(SyncManager.kt:808)
at at.bitfire.davdroid.syncadapter.CalendarSyncManager.downloadRemote(CalendarSyncManager.kt:129)
at at.bitfire.davdroid.syncadapter.SyncManager$syncRemote$1$1.run(SyncManager.kt:447)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:457)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
and this is the entry that causes this:
BEGIN:VCALENDAR
CALSCALE:GREGORIAN
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:/freeassociation.sourceforge.net/Europe/Berlin
X-LIC-LOCATION:Europe/Berlin
BEGIN:DAYLIGHT
TZNAME:CEST
DTSTART:19160429T230000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;UNTIL=19160430T220000Z;BYDAY=-1SU;BYMONTH=4
END:DAYLIGHT
BEGIN:STANDARD
TZNAME:CET
DTSTART:19161007T010000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;UNTIL=19160930T230000Z;BYDAY=1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
TZNAME:CEST
DTSTART:19170416T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;UNTIL=19180415T010000Z;BYDAY=3MO;BYMONTH=4
END:DAYLIGHT
BEGIN:STANDARD
TZNAME:CET
DTSTART:19170917T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;UNTIL=19180916T010000Z;BYDAY=3MO;BYMONTH=9
END:STANDARD
BEGIN:DAYLIGHT
TZNAME:CEST
DTSTART:19400402T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;UNTIL=19400401T010000Z;BYDAY=1MO;BYMONTH=4
END:DAYLIGHT
BEGIN:STANDARD
TZNAME:CET
DTSTART:19421105T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;UNTIL=19421102T010000Z;BYDAY=1MO;BYMONTH=11
END:STANDARD
BEGIN:DAYLIGHT
TZNAME:CEST
DTSTART:19430326T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;UNTIL=19430329T010000Z;BYDAY=-1MO;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZNAME:CET
DTSTART:19431001T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;UNTIL=19441002T010000Z;BYDAY=1MO;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
TZNAME:CEST
DTSTART:19440402T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;UNTIL=19450402T000000Z;BYDAY=1MO;BYMONTH=4
END:DAYLIGHT
BEGIN:DAYLIGHT
TZNAME:CEMT
DTSTART:19450524T020000
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
RRULE:FREQ=YEARLY;UNTIL=19450523T230000Z;BYDAY=-2TH;BYMONTH=5
END:DAYLIGHT
BEGIN:DAYLIGHT
TZNAME:CEST
DTSTART:19450924T030000
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;UNTIL=19450924T020000Z;BYDAY=-1MO;BYMONTH=9
END:DAYLIGHT
BEGIN:STANDARD
TZNAME:CET
DTSTART:19451118T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;UNTIL=19451118T020000Z;BYDAY=3SU;BYMONTH=11
END:STANDARD
BEGIN:STANDARD
TZNAME:CET
DTSTART:19460102T000000
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;UNTIL=19451231T220000Z;BYDAY=1TU;BYMONTH=1
END:STANDARD
BEGIN:DAYLIGHT
TZNAME:CEST
DTSTART:19460408T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;UNTIL=19460414T010000Z;BYDAY=2SU;BYMONTH=4
END:DAYLIGHT
BEGIN:STANDARD
TZNAME:CET
DTSTART:19461001T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;UNTIL=19461007T010000Z;BYDAY=1MO;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
TZNAME:CEST
DTSTART:19470401T030000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;UNTIL=19470406T010000Z;BYDAY=1SU;BYMONTH=4
END:DAYLIGHT
BEGIN:DAYLIGHT
TZNAME:CEMT
DTSTART:19470513T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
RRULE:FREQ=YEARLY;UNTIL=19470511T000000Z;BYDAY=2SU;BYMONTH=5
END:DAYLIGHT
BEGIN:DAYLIGHT
TZNAME:CEST
DTSTART:19470624T030000
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;UNTIL=19470629T020000Z;BYDAY=-1SU;BYMONTH=6
END:DAYLIGHT
BEGIN:STANDARD
TZNAME:CET
DTSTART:19471007T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;UNTIL=19491002T020000Z;BYDAY=1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
TZNAME:CEST
DTSTART:19480415T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;UNTIL=19480418T010000Z;BYDAY=3SU;BYMONTH=4
END:DAYLIGHT
BEGIN:DAYLIGHT
TZNAME:CEST
DTSTART:19490408T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;UNTIL=19490410T010000Z;BYDAY=2SU;BYMONTH=4
END:DAYLIGHT
BEGIN:STANDARD
TZNAME:CET
DTSTART:19800102T000000
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;UNTIL=19791231T220000Z;BYDAY=1TU;BYMONTH=1
END:STANDARD
BEGIN:DAYLIGHT
TZNAME:CEST
DTSTART:19800401T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;UNTIL=19800406T010000Z;BYDAY=1SU;BYMONTH=4
END:DAYLIGHT
BEGIN:STANDARD
TZNAME:CET
DTSTART:19800930T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYDAY=-1SU;BYMONTH=9
END:STANDARD
BEGIN:DAYLIGHT
TZNAME:CEST
DTSTART:19810325T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZNAME:CET
DTSTART:19961028T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
UID:29499b32bcbfd6e8d587877903d31f8b4197ef37
DTSTAMP:20180507T042915Z
DTSTART;TZID=/freeassociation.sourceforge.net/Europe/Berlin:
20181112T173000
DTEND;TZID=/freeassociation.sourceforge.net/Europe/Berlin:
20181112T190000
SEQUENCE:2
SUMMARY:St. Martinsfest
LOCATION:Kita Buntspecht
TRANSP:OPAQUE
CLASS:PUBLIC
CREATED:20180507T052305Z
LAST-MODIFIED:20180507T052305Z
BEGIN:VALARM
X-EVOLUTION-ALARM-UID:ca54afeb78f18a27d0334eb25167ccec92e77f6f
ACTION:DISPLAY
TRIGGER;RELATED=START:-PT5M
END:VALARM
END:VEVENT
END:VCALENDAR
The problematic line(s) are the ones with
TZID=/freeassociation.sourceforge.net/Europe/Berlin:
Changing this to a known TZ solves the problematic sync. This problem is new to my installations but 100% reproducible on different devices. Nextcloud Calendar, K-Mail or Evolution don’t have problems with this entries, only Davdroid on my two Android 8.0 devices.