I realize that this is an old post, but just in case it would still be useful to someone. I have experienced the exact same error in similar conditions and after I patched a file the problem was solved.
In the file include/class.user.php, line 597 I changed this:
$this->default_email->address = $email->getClean();
$this->default_email->save();
into this:
if(!$this->default_email){
$this->default_email = UserEmail::ensure($email->getClean());
$this->emails->add($this->default_email);
}
else {
$this->default_email->address = $email->getClean();
$this->default_email->save();
}
My version is osTicket (v1.14.1).