sighandler: provide gdb with pipe stdin/stdout fds (necessary for gdb < 7.5)
This commit is contained in:
parent
38869004fe
commit
9d8a4ebc61
|
@ -62,6 +62,11 @@ static int backtrace(void) {
|
|||
return -1;
|
||||
} else if (pid_gdb == 0) {
|
||||
/* child */
|
||||
int stdin_pipe[2],
|
||||
stdout_pipe[2];
|
||||
|
||||
pipe(stdin_pipe);
|
||||
pipe(stdout_pipe);
|
||||
|
||||
/* close standard streams in case i3 is started from a terminal; gdb
|
||||
* needs to run without controlling terminal for it to work properly in
|
||||
|
@ -70,6 +75,12 @@ static int backtrace(void) {
|
|||
close(STDOUT_FILENO);
|
||||
close(STDERR_FILENO);
|
||||
|
||||
/* We provide pipe file descriptors for stdin/stdout because gdb < 7.5
|
||||
* crashes otherwise, see
|
||||
* http://sourceware.org/bugzilla/show_bug.cgi?id=14114 */
|
||||
dup2(stdin_pipe[0], STDIN_FILENO);
|
||||
dup2(stdout_pipe[1], STDOUT_FILENO);
|
||||
|
||||
char *pid_s = NULL;
|
||||
sasprintf(&pid_s, "%d", pid_parent);
|
||||
|
||||
|
|
Loading…
Reference in New Issue