Skip to content

Restore sigpipe #72

Merged
merged 2 commits into from
Mar 20, 2018
Merged

Restore sigpipe #72

merged 2 commits into from
Mar 20, 2018

Commits on Mar 20, 2018

  1. mxqd: Fix typo in message

    donald committed Mar 20, 2018
    Configuration menu
    Copy the full SHA
    33eddd1 View commit details
    Browse the repository at this point in the history
  2. mxqd: Restore SIGPIPE to default for job

    The mysql client library sets SIGPIPE to SIG_IGN which gets inherited by
    the user processes:
    
        root@sigchld:~# cat /proc/27900/status |grep Sig
        SigQ:   0/30656
        SigPnd: 0000000000000000
        SigBlk: 0000000000000000
        SigIgn: 0000000000001000
        SigCgt: 0000000000000000
    
    This makes a difference for things like
    
         CMD | head -1
    
    because CMD is not killed by SIGPIPE when `head` is finished. It will get
    an error "broken pipe" on the next write and may or may not emit this to
    stderr.
    
    This bug was partially caused by #63 (commit ff2f49f (mxqd: Use
    synchronous signals)), where we changed our own signal handling to
    synchronous mode. While in the previous mode, we unknowingly fixed the
    change done by the mysql library, we then just set and reset the blocking
    mask, which doesn't restore an ignored signal.
    
    Restore SIGCHLD to SIG_DFL when we initialize the child process for the
    user.
    
    With this patch applied, no more signals are blocked for the user
    process.
    
        buczek@theinternet:~/git/mxq (restore-sigpipe)$ cat /proc/17081/status |grep Sig
        SigQ:   1/127301
        SigPnd: 0000000000000000
        SigBlk: 0000000000000000
        SigIgn: 0000000000000000
        SigCgt: 0000000000000000
    
    Fixes: #71
    donald authored and pmenzel committed Mar 20, 2018
    Configuration menu
    Copy the full SHA
    56c6fd2 View commit details
    Browse the repository at this point in the history