diff options
Diffstat (limited to 'libglusterfs/src/common-utils.c')
| -rw-r--r-- | libglusterfs/src/common-utils.c | 19 | 
1 files changed, 19 insertions, 0 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index 2d4415f506d..e7d54d48b22 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -357,6 +357,9 @@ gf_print_trace (int32_t signum)          /* Pending frames, (if any), list them in order */          ret = write (fd, "pending frames:\n", 16); +        if (ret < 0) +                goto out; +          {                  glusterfs_ctx_t *ctx = glusterfs_ctx_get ();                  struct list_head *trav = ((call_pool_t *)ctx->pool)->all_frames.next; @@ -372,16 +375,25 @@ gf_print_trace (int32_t signum)                                           gf_mgmt_list[tmp->root->op]);                          ret = write (fd, msg, strlen (msg)); +                        if (ret < 0) +                                goto out; +                          trav = trav->next;                  }                  ret = write (fd, "\n", 1); +                if (ret < 0) +                        goto out;          }          sprintf (msg, "patchset: %s\n", GLUSTERFS_REPOSITORY_REVISION);          ret = write (fd, msg, strlen (msg)); +        if (ret < 0) +                goto out;          sprintf (msg, "signal received: %d\n", signum);          ret = write (fd, msg, strlen (msg)); +        if (ret < 0) +                goto out;          {                  /* Dump the timestamp of the crash too, so the previous logs @@ -390,7 +402,11 @@ gf_print_trace (int32_t signum)                  tm    = localtime (&utime);                  strftime (timestr, 256, "%Y-%m-%d %H:%M:%S\n", tm);                  ret = write (fd, "time of crash: ", 15); +                if (ret < 0) +                        goto out;                  ret = write (fd, timestr, strlen (timestr)); +                if (ret < 0) +                        goto out;          }          gf_dump_config_flags (fd); @@ -404,9 +420,12 @@ gf_print_trace (int32_t signum)                  backtrace_symbols_fd (&array[1], size-1, fd);                  sprintf (msg, "---------\n");                  ret = write (fd, msg, strlen (msg)); +                if (ret < 0) +                        goto out;          }  #endif /* HAVE_BACKTRACE */ +out:          /* Send a signal to terminate the process */          signal (signum, SIG_DFL);          raise (signum);  | 
