diff --git a/django/core/handlers/base.py b/django/core/handlers/base.py
index 9679ae8..20a6a10 100644
--- a/django/core/handlers/base.py
+++ b/django/core/handlers/base.py
@@ -191,8 +191,20 @@ class BaseHandler(object):
 
         except: # Handle everything else.
             # Get the exception info now, in case another exception is thrown later.
-            signals.got_request_exception.send(sender=self.__class__, request=request)
-            response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
+            exc_info = sys.exc_info()
+            signal_responses = signals.got_request_exception.send_robust(sender=self.__class__, request=request)
+            for signal_response in signal_responses:
+                if isinstance(signal_response[1], Exception):
+                    message = 'Base Handler Error %s: ' % signal_response[1] 
+                    logger.error(message+'%s', request.path,
+                        exc_info=exc_info,
+                        extra={
+                            'status_code': 500,
+                            'request': request,
+                            'error': signal_response[1]
+                        }
+                    )
+            response = self.handle_uncaught_exception(request, resolver, exc_info)
 
         try:
             # Apply response middleware, regardless of the response
diff --git a/tests/view_tests/tests/test_defaults.py b/tests/view_tests/tests/test_defaults.py
index d55ed53..7a74b0b 100644
--- a/tests/view_tests/tests/test_defaults.py
+++ b/tests/view_tests/tests/test_defaults.py
@@ -1,9 +1,16 @@
 from __future__ import unicode_literals
 
+import logging
+
+from django.utils.six import StringIO
+
+from django.core.signals import got_request_exception
+from django.dispatch import receiver
 from django.contrib.contenttypes.models import ContentType
+
 from django.test import TestCase
 from django.test.utils import (setup_test_template_loader,
-    restore_template_loaders, override_settings)
+    restore_template_loaders, override_settings, patch_logger)
 
 from ..models import Author, Article, UrlArticle
 
@@ -33,8 +40,27 @@ class DefaultsTests(TestCase):
 
     def test_server_error(self):
         "The server_error view raises a 500 status"
-        response = self.client.get('/views/server_error/')
-        self.assertEqual(response.status_code, 500)
+        with self.settings(DEBUG=True):
+            with patch_logger('django.request', 'error') as calls:
+                response = self.client.get('/views/server_error/')
+                self.assertEqual(response.status_code, 500)
+                self.assertEqual(len(calls), 1)        
+
+    def test_server_error_with_handler_error(self):
+        """
+        The server_error view raises a 500 status and while handling
+        the error, the next error is raised.
+        """
+
+        @receiver(got_request_exception)
+        def handler(sender, **kwargs):
+            raise Exception('I am a Handler Error')
+
+        with self.settings(DEBUG=True):
+            with patch_logger('django.request', 'error') as calls:
+                response = self.client.get('/views/server_error/')
+                self.assertEqual(response.status_code, 500)
+                self.assertEqual(len(calls), 2)
 
     def test_custom_templates(self):
         """
