This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Reading compressed character maps and gzip EPIPE issues.


* Carlos O'Donell:

> Current localedef uses posix_spawnp, which uses vfork, which blocks
> all signals while it starts the child. Should we be setting the
> signal mask appropriately for posix_spawnp so SIGPIPE can reach
> gzip? Is that what we're getting at?

I'm pretty sure that posix_spawnp does not block signals in this way.
If it does, it would be a bug.  strace shows this (with current
master):

30925 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
30925 execve("/usr/local/bin/gzip", ["gzip", "-d", "-c"], 0x7ffe16fec8f8 /* 47 vars */) = -1 ENOENT (No such file or directory)
30925 execve("/usr/bin/gzip", ["gzip", "-d", "-c"], 0x7ffe16fec8f8 /* 47 vars */) = -1 ENOENT (No such file or directory)
30925 execve("/bin/gzip", ["gzip", "-d", "-c"], 0x7ffe16fec8f8 /* 47 vars */ <unfinished ...>

This suggests to me that posix_spawnp properly restores the signal
mask.  I think you need to investigate why your environment runs
localedef with SIGPIPE blocked.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]