This is what's in my config:
$config['plugins'] = array(tasklist, calendar, password, globaladdressbook, emoticons, contextmenu, pdfviewer, help, archive, zipdownload, userinfo, newmail_notifier, markasjunk, filters, sauserprefs);
I'll move globaladdressbook so it's before calendar and see if that makes any difference.
Thanks again for your help and suggestions.
Edit: Duh. Not sure what I've done, but I've started getting these errors since yesterday:
[17-Sep-2018 19:13:22 +0100]: <1ejp9o6j> DB Error: [1146] Table 'roundcubemail.calendars' doesn't exist (SQL Query: SELECT *, calendar_id AS id FROM calendars
WHERE user_id='8'
ORDER BY name) in /var/www/html/webmail/program/lib/Roundcube/rcube_db.php on line 542 (POST /?_task=mail&_action=refresh)
The table does exist, so I'm trying to work out what's going wrong!
Edit 2: Deleted the calendars table then re-initialised using 'mysql roundcubemail < drivers/database/SQL/mysql.initial.sql', and that seems to have sorted the 'Table doesn't exist' error. Need to see if it's also fixed the earlier error.
Edit 3: That's been a couple of hours now with no error at all. The table re-initialisation seems to have fixed the 'PHP Error: Addressbook source (global) not found!' error too, even though I did that when I first updated Calendar to v 3.4.0.
I guess I'll call this fixed now.