Ok, I track this down to being a bug in DigitalAccessPass LiveLinks. On line
1776 in the
DAP-WP-LiveLinks.php file they call a core WordPress action
wp_login but they do not pass the core WP_User object which is expected by plugins which also hook into this core WP action. To work around this, I made a tweak to Link which check to see if the user was passed and if it was not then it loads its own instance before proceeding. This seems to solve the issue.