projects
/
yaz-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Simplify tcpip_get a bit YAZ-831
[yaz-moved-to-github.git]
/
src
/
backtrace.c
diff --git
a/src/backtrace.c
b/src/backtrace.c
index
567e55f
..
6bc22bf
100644
(file)
--- a/
src/backtrace.c
+++ b/
src/backtrace.c
@@
-39,12
+39,12
@@
#define BACKTRACE_SZ 100
static char static_progname[256];
#define BACKTRACE_SZ 100
static char static_progname[256];
+#if HAVE_EXECINFO_H
static void yaz_invoke_backtrace(char *buf, int buf_sz)
{
FILE *file = yaz_log_file();
int fd = fileno(file);
static void yaz_invoke_backtrace(char *buf, int buf_sz)
{
FILE *file = yaz_log_file();
int fd = fileno(file);
-#if HAVE_EXECINFO_H
pid_t pid;
int fds[2];
void *backtrace_info[BACKTRACE_SZ];
pid_t pid;
int fds[2];
void *backtrace_info[BACKTRACE_SZ];
@@
-54,11
+54,16
@@
static void yaz_invoke_backtrace(char *buf, int buf_sz)
sz = backtrace(backtrace_info, sz);
backtrace_symbols_fd(backtrace_info, sz, fd);
sz = backtrace(backtrace_info, sz);
backtrace_symbols_fd(backtrace_info, sz, fd);
- pipe(fds);
+ if (pipe(fds) == -1)
+ {
+ const char *cp = "backtrace: pipe failed\n";
+ write(fd, cp, strlen(cp));
+ return;
+ }
pid = fork();
if (pid == (pid_t) (-1))
{ /* error */
pid = fork();
if (pid == (pid_t) (-1))
{ /* error */
- const char *cp = "backtrace: fork failure";
+ const char *cp = "backtrace: fork failure\n";
write(fd, cp, strlen(cp));
}
else if (pid == 0)
write(fd, cp, strlen(cp));
}
else if (pid == 0)
@@
-121,10
+126,6
@@
static void yaz_invoke_backtrace(char *buf, int buf_sz)
}
close(fds[1]);
}
}
close(fds[1]);
}
-#else
- strcat(buf, "no backtrace support (execinfo.h not found)\n");
- write(fd, buf, strlen(buf));
-#endif
}
static void yaz_panic_sig_handler(int sig)
}
static void yaz_panic_sig_handler(int sig)
@@
-156,6
+157,7
@@
static void yaz_panic_sig_handler(int sig)
yaz_invoke_backtrace(buf, sizeof buf);
abort();
}
yaz_invoke_backtrace(buf, sizeof buf);
abort();
}
+#endif
void yaz_enable_panic_backtrace(const char *progname)
{
void yaz_enable_panic_backtrace(const char *progname)
{