Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Commits on Mar 2, 2011
  1. Merge branch 'attach-fds'

    authored
Commits on Feb 23, 2011
  1. @pozdnychev

    fix: avoid memory leakage in case realloc() fails

    pozdnychev authored committed
    [nelhage@nelhage.com: Change error handling slightly]
Commits on Feb 20, 2011
  1. Be smarter about choosing which fd's to attach.

    authored
    Instead of using readlink, stat() the child's file descriptors and
    compare the result to the device in /proc/$pid/stat and /dev/tty. This
    lets us properly attach a 'less' that is taking input from a pipe.
Commits on Feb 19, 2011
Commits on Feb 12, 2011
Commits on Jan 28, 2011
  1. Explicitly CONT the child on attach, and then STOP/CONT after attach.

    authored
    The explicit CONT on attach is needed in order for wait() to work on
    older kernels, and the STOP/CONT after attach is better at making bash
    notice the process is running again.
  2. Merge branch 'force-bg'

    authored
  3. Prefer mmap2() if present.

    authored
    i386 has an mmap(), but mmap2() is the one we want with the right
    calling convention.
Commits on Jan 27, 2011
Commits on Jan 25, 2011
  1. Send the child an explicit SIGCONT once we're done.

    authored
    This causes bash to notice that the process is backgrounded, which prevents it
    from sending a SIGTERM when the original shell exits.
  2. Copy the termios settings before we background the target process.

    authored
    If the target /doesn't/ properly initialize the terminal after a
    SIGTSTP/continue (I'm looking at you, emacs), we need to be sure to grab the
    terminal state before we suspend it and the shell resets the terminal to cooked
    mode.
  3. Use wait4 instead of waitid().

    authored
    waitid() seems to return EINVAL sometimes, for reasons I don't understand.
  4. Try to stop the target with SIGTSTP before attaching.

    authored
    This should both cause the target process to redraw / reinitialize the
    terminal (since it thinks it's been backgrounded and restarted), and should give
    you back the old terminal, since it sees the process now running in the
    "background".
Commits on Jan 22, 2011
  1. Fix compilation on amd64.

    authored
  2. Handle attaching to processes that are already session leaders.

    authored
    These are actually easier -- we just need to TIOCNOTTY, instead of
    playing games with a dummy child and setsid.
Commits on Jan 18, 2011
  1. Fix the rt_sigaction call.

    authored
    sizeof(sigset_t) is something ludicrous like 0x80 in userspace. Just hard-code
    it at 8, since all the userspace definitions seem to be lies.
  2. Don't allow the child to run unchecked between two syscalls.

    authored
    We were letting the child return from fork() and run to the next
    syscall. This happened to work on my system with 'less', but
    segfaulted on mutt. Instead, we need to reset the child to before the
    syscall point, so that none of its code is ever run.
  3. Checkpoint working version.

    authored
Something went wrong with that request. Please try again.