- When environ is not yet initialized, currently dmtcphijack.so simply returns.
  (This occurs when executing libc.so.6 .)
  We should spend more effort to find environ at top of stack.
  Note that bash also plays tricks with environ, but bash still gives
    us a working getenv().

- We currently wrap fork(), but not vfork().  Usually, the exec happens
  soon after vfork().  But if we checkpoint after vfork() and before
  exec, then we would miss the child process.  This should be fixed.

- setsighandler fails if user has reset our signal handler
  Do we cleanly tell the user what signal is being used by app,
  and to reurn dmtcp with --sigckpt  set to other signal?

- Extend list of syscalls using netdb to put wrappers around them.
  The danger is that in invoking the netdb, they might want to
  create a socket.  Then we detect this, and we try to create
  a socket to the coordinator.  This hits our wrapper function, which
  then creates an infinite loop.  At least, we think we saw this in
  Ubuntu 6.06 (dapper).
          
- Many more exotic fcntl()/ioctl() flags are not checkpointed

- Should refuse to call DMTCP recursively, perhaps by maintaining
  environment variable $DMTCPLVL (similar to $SHLVL), and refusing
  to recurse if it's already 1.  (Maybe in the future, we might
  support this.)

- dmtcp_coordinator should refuse to allow other users to connect to it.
  (Are there security issues with respect to spoofing, also?)

- Tab completion fails on tcsh. (?)

- Wrapper protection lock for vfprintf (called by all functions of printf
  family) and iofputs(used for )

- Analyze why the return from maskstderr() and unmaskstderr() solves the problem.

- --enable-debug  when combined with enable-pid-virtualization exposes some
  problems which are visible in OpenMPI and some other programs.

PID-VIRTUALIZATION:
1. wait status of zombie processes
     Store status of those processes which were zombie at checkpoint time. If
     the parent process does a wait() system call for that child after restart
     we should return its status.
2. update dmtcp_restart.cpp to check and restore orphaned child processes at restart.
3. better error handling for missing processes.

REPLACE all temporary files present in $DMTCP_TMP_DIR with some sort of shared-memory files.
