diff --git a/src/core/lib/iomgr/error.c b/src/core/lib/iomgr/error.c
index 9f5ba76fd6c75602cd7098f822e027ec9155f84c..aa94bb7fdf7d5f6d509f5303ab2e4f51b9b21dbf 100644
--- a/src/core/lib/iomgr/error.c
+++ b/src/core/lib/iomgr/error.c
@@ -248,7 +248,10 @@ static grpc_error *copy_error_and_unref(grpc_error *in) {
   if (is_special(in)) {
     if (in == GRPC_ERROR_NONE) return GRPC_ERROR_CREATE("no error");
     if (in == GRPC_ERROR_OOM) return GRPC_ERROR_CREATE("oom");
-    if (in == GRPC_ERROR_CANCELLED) return GRPC_ERROR_CREATE("cancelled");
+    if (in == GRPC_ERROR_CANCELLED)
+      return grpc_error_set_int(GRPC_ERROR_CREATE("cancelled"),
+                                GRPC_ERROR_INT_GRPC_STATUS,
+                                GRPC_STATUS_CANCELLED);
     return GRPC_ERROR_CREATE("unknown");
   }
   grpc_error *out = gpr_malloc(sizeof(*out));
diff --git a/src/core/lib/iomgr/tcp_posix.c b/src/core/lib/iomgr/tcp_posix.c
index 017f52c367748a56dca38bb2230255a718b61cca..1046b60bcc91bdc4f7e4c6adb1abb5be8327a396 100644
--- a/src/core/lib/iomgr/tcp_posix.c
+++ b/src/core/lib/iomgr/tcp_posix.c
@@ -160,7 +160,7 @@ static void call_read_cb(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp,
                          grpc_error *error) {
   grpc_closure *cb = tcp->read_cb;
 
-  if (false && grpc_tcp_trace) {
+  if (grpc_tcp_trace) {
     size_t i;
     const char *str = grpc_error_string(error);
     gpr_log(GPR_DEBUG, "read: error=%s", str);
@@ -394,7 +394,7 @@ static void tcp_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
   grpc_tcp *tcp = (grpc_tcp *)ep;
   grpc_error *error = GRPC_ERROR_NONE;
 
-  if (false && grpc_tcp_trace) {
+  if (grpc_tcp_trace) {
     size_t i;
 
     for (i = 0; i < buf->count; i++) {
diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index 77c17a4975b94b5ad56853115068c9fc2d5c69d7..708ea3502af87d91a8bde21a131bbe0311a07547 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -407,9 +407,10 @@ static void set_status_code(grpc_call *call, status_source source,
 static void set_status_details(grpc_call *call, status_source source,
                                grpc_mdstr *status) {
   if (call->status[source].details != NULL) {
-    GRPC_MDSTR_UNREF(call->status[source].details);
+    GRPC_MDSTR_UNREF(status);
+  } else {
+    call->status[source].details = status;
   }
-  call->status[source].details = status;
 }
 
 static void get_final_status(grpc_call *call,