mirror of
https://codeberg.org/dwl/dwl.git
synced 2025-01-14 12:57:28 -08:00
increase RLIMIT_CORE (generate a coredump)
This commit is contained in:
parent
4b8c1bf31e
commit
4b35e3b000
1 changed files with 9 additions and 0 deletions
9
dwl.c
9
dwl.c
|
@ -8,6 +8,7 @@
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <sys/resource.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
@ -321,6 +322,8 @@ static void zoom(const Arg *arg);
|
||||||
|
|
||||||
/* variables */
|
/* variables */
|
||||||
static const char broken[] = "broken";
|
static const char broken[] = "broken";
|
||||||
|
static struct rlimit oldrlimit;
|
||||||
|
static struct rlimit newrlimit;
|
||||||
static const char *cursor_image = "left_ptr";
|
static const char *cursor_image = "left_ptr";
|
||||||
static pid_t child_pid = -1;
|
static pid_t child_pid = -1;
|
||||||
static int locked;
|
static int locked;
|
||||||
|
@ -1971,6 +1974,7 @@ run(char *startup_cmd)
|
||||||
if ((child_pid = fork()) < 0)
|
if ((child_pid = fork()) < 0)
|
||||||
die("startup: fork:");
|
die("startup: fork:");
|
||||||
if (child_pid == 0) {
|
if (child_pid == 0) {
|
||||||
|
setrlimit(RLIMIT_CORE, &oldrlimit);
|
||||||
dup2(piperw[0], STDIN_FILENO);
|
dup2(piperw[0], STDIN_FILENO);
|
||||||
close(piperw[0]);
|
close(piperw[0]);
|
||||||
close(piperw[1]);
|
close(piperw[1]);
|
||||||
|
@ -2313,6 +2317,7 @@ void
|
||||||
spawn(const Arg *arg)
|
spawn(const Arg *arg)
|
||||||
{
|
{
|
||||||
if (fork() == 0) {
|
if (fork() == 0) {
|
||||||
|
setrlimit(RLIMIT_CORE, &oldrlimit);
|
||||||
dup2(STDERR_FILENO, STDOUT_FILENO);
|
dup2(STDERR_FILENO, STDOUT_FILENO);
|
||||||
setsid();
|
setsid();
|
||||||
execvp(((char **)arg->v)[0], (char **)arg->v);
|
execvp(((char **)arg->v)[0], (char **)arg->v);
|
||||||
|
@ -2793,6 +2798,10 @@ main(int argc, char *argv[])
|
||||||
char *startup_cmd = NULL;
|
char *startup_cmd = NULL;
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
|
getrlimit(RLIMIT_CORE, &oldrlimit);
|
||||||
|
newrlimit.rlim_cur = newrlimit.rlim_max = oldrlimit.rlim_max;
|
||||||
|
setrlimit(RLIMIT_CORE, &newrlimit);
|
||||||
|
|
||||||
while ((c = getopt(argc, argv, "s:hv")) != -1) {
|
while ((c = getopt(argc, argv, "s:hv")) != -1) {
|
||||||
if (c == 's')
|
if (c == 's')
|
||||||
startup_cmd = optarg;
|
startup_cmd = optarg;
|
||||||
|
|
Loading…
Reference in a new issue