Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 60559)
+++ wp-includes/functions.php	(working copy)
@@ -3886,6 +3886,29 @@
 		$message  .= "\n<p><a href='javascript:history.back()'>$back_text</a></p>";
 	}
 
+	// Ensure HTTP 500 status code for critical errors, even if headers were already sent.
+	$is_critical_error = false;
+	if ( is_string( $message ) ) {
+		$is_critical_error = (
+			false !== stripos( $message, 'critical error' ) ||
+			false !== stripos( $message, 'There has been a critical error' )
+		);
+	} elseif ( function_exists( 'is_wp_error' ) && is_wp_error( $message ) ) {
+		$error_message = $message->get_error_message();
+		$is_critical_error = (
+			false !== stripos( $error_message, 'critical error' ) ||
+			false !== stripos( $error_message, 'There has been a critical error' )
+		);
+	}
+
+	if ( $is_critical_error ) {
+		$parsed_args['response'] = 500;
+		// Set HTTP status code even if headers were already sent.
+		if ( function_exists( 'http_response_code' ) ) {
+			http_response_code( 500 );
+		}
+	}
+
 	if ( ! did_action( 'admin_head' ) ) :
 		if ( ! headers_sent() ) {
 			header( "Content-Type: text/html; charset={$parsed_args['charset']}" );
