diff --git a/lib/SimpleSAML/Error/NoState.php b/lib/SimpleSAML/Error/NoState.php
index 5cbf047c3225d3d2d73e1383da2d8aee08f2b324..b7610d4766b63c218a4dbe19b73bdd7279556731 100644
--- a/lib/SimpleSAML/Error/NoState.php
+++ b/lib/SimpleSAML/Error/NoState.php
@@ -29,24 +29,9 @@ class SimpleSAML_Error_NoState extends SimpleSAML_Error_Error {
 
 		header('HTTP/1.0 500 Internal Server Error');
 
-		$globalConfig = SimpleSAML_Configuration::getInstance();
-
-		$reportId = SimpleSAML_Utilities::stringToHex(SimpleSAML_Utilities::generateRandomBytes(4));
-		SimpleSAML_Logger::error('Error report with id ' . $reportId . ' generated.');
+		$errorData = $this->saveError();
 
 		$session = SimpleSAML_Session::getInstance();
-
-		$errorData = array(
-			'exceptionMsg' => $this->getMessage(),
-			'exceptionTrace' => implode("\n", $this->format()),
-			'reportId' => $reportId,
-			'trackId' => $session->getTrackID(),
-			'url' => SimpleSAML_Utilities::selfURLNoQuery(),
-			'version' => $globalConfig->getVersion(),
-		);
-		$session->setData('core:errorreport', $reportId, $errorData);
-
-
 		$attributes = $session->getAttributes();
 		if (isset($attributes['mail'][0])) {
 			$email = $attributes['mail'][0];
@@ -55,6 +40,7 @@ class SimpleSAML_Error_NoState extends SimpleSAML_Error_Error {
 		}
 
 
+		$globalConfig = SimpleSAML_Configuration::getInstance();
 		$t = new SimpleSAML_XHTML_Template($globalConfig, 'core:no_state.tpl.php');
 
 		/* Enable error reporting if we have a valid technical contact email. */
@@ -62,7 +48,7 @@ class SimpleSAML_Error_NoState extends SimpleSAML_Error_Error {
 			/* Enable error reporting. */
 			$baseurl = SimpleSAML_Utilities::getBaseURL();
 			$t->data['errorReportAddress'] = $baseurl . 'errorreport.php';
-			$t->data['reportId'] = $reportId;
+			$t->data['reportId'] = $errorData['reportId'];
 			$t->data['email'] = $email;
 		}