public function showFatalErrorScreen($sSubject = '', $sMessage = '', $oDetails = null)
    {
        if (is_array($sMessage)) {
            $sMessage = implode("\n", $sMessage);
        }

        if (is_null($oDetails)) {
            $oDetails = (object) [
                'type'      => null,
                'code'      => null,
                'msg'       => null,
                'file'      => null,
                'line'      => null,
                'backtrace' => null,
            ];
        }

        //  Get the backtrace
        if (function_exists('debug_backtrace')) {
            $oDetails->backtrace = debug_backtrace();
        } else {
            $oDetails->backtrace = [];
        }

        set_status_header(HttpCodes::STATUS_INTERNAL_SERVER_ERROR);
        $this->renderErrorView(
            '500',
            [
                'sSubject' => $sSubject,
                'sMessage' => $sMessage,
                'oDetails' => $oDetails,
            ]
        );
        exit(HttpCodes::STATUS_INTERNAL_SERVER_ERROR);
    }