diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike
index fd5071f32d3c1e6bfcf3b28f401476b83c32a44a..cff8ae537529b867bb3d080c8bdaa98400f153f7 100644
--- a/lib/modules/Sql.pmod/pgsql.pike
+++ b/lib/modules/Sql.pmod/pgsql.pike
@@ -1215,12 +1215,12 @@ private void procmessage() {
     }
     break;
   }
-  PD("Closing database processloop %O\n",err);
+  PD("Closing database processloop %s\n", err ? describe_backtrace(err) : "");
   _delayederror=err;
   if (objectp(portal)) {
-  #ifdef PG_DEBUG
+#ifdef PG_DEBUG
     showportal(0);
-  #endif
+#endif
     portal->_purgeportal();
   }
   if(!terminating && _options.reconnect)
@@ -1234,7 +1234,7 @@ private void procmessage() {
   if (err) {
     unnamedstatement=0;
     termlock = 0;
-    throw(err);
+    PD("Terminating processloop due to %s\n", describe_backtrace(err));
   }
 }
 
@@ -1251,10 +1251,12 @@ private void procmessage() {
     catch(cancelquery());
   if (unnamedstatement)
     termlock = unnamedstatement->lock(1);
-  c->close();
+  if (c)				// Prevent trivial backtraces
+    c->close();
   if (unnamedstatement)
     lock = unnamedstatement->lock(1);
-  destruct(c);
+  if (c)
+    destruct(c);
   lock = 0;
   destruct(waitforauthready);
 }
diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod
index b51d3cbf41139e1009ac679e3206596ce7ec148c..713073f8c22b81ac1091e67bae040d5b11e980ab 100644
--- a/lib/modules/Sql.pmod/pgsql_util.pmod
+++ b/lib/modules/Sql.pmod/pgsql_util.pmod
@@ -249,7 +249,7 @@ class conxiin {
   }
 
   final int read_cb(mixed id,mixed b) {
-    PD("Read callback %O\n",((string)b)
+    PD("Read callback %O\n", b && ((string)b)
 #ifndef PG_DEBUGMORE
       [..255]
 #endif