Hi list. I suffer from this bug: http://bugs.winehq.org/show_bug.cgi?id=27014 In wine sources there're not so many places where exec(3) family is used. In some places SIGCHLD and SIGPIPE are restored to default before calling exec(), in others they aren't. What's the difference?
Can anyone explain me the why SIGCHLD not restored to default before calling execvp() here: http://source.winehq.org/source/libs/port/spawn.c?v=wine-1.3.19#L42 int spawnvp(int mode, const char *cmdname, const char *const argv[]) { ... if (mode == _P_OVERLAY) { execvp(cmdname, (char **)argv); /* if we get here it failed */ #ifdef ENOTSUP if (errno != ENOTSUP) /* exec fails on MacOS if the process has multiple threads */ #endif return -1; }
Because it's not forked and if execvp() fails, we end up with the default handler?