Skip to content
Snippets Groups Projects
  1. Jul 22, 2009
  2. Jul 18, 2009
  3. Jul 08, 2009
    • agl@chromium.org's avatar
      Linux: SUID sandbox support · 4378a822
      agl@chromium.org authored
        * Make processes dumpable when they crash.
        * Find crashing processes by searching for a socket inode, rather
          than relying on SCM_CREDENTIALS. The kernel doesn't translate PIDs
          between PID namespaces with SCM_CREDENTIALS, so we can't use the
          PID there.
        * Use a command line flag to the renderer to enable crash dumping.
          Previously it tried to access the user's home directory for this
          information.
        * Search for a sandbox helper binary and, if found, use it.
        * Include the source for a sandbox helper binary. It's currently not
          built by default.
      
      http://codereview.chromium.org/149230
      R=evan,markus
      BUG=8081
      
      
      git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20110 0039d316-1c4b-4281-b951-d872f2087c98
      4378a822
  4. Jun 16, 2009
  5. Jun 15, 2009
  6. Jun 06, 2009
  7. Jun 04, 2009
  8. Jun 02, 2009
  9. May 28, 2009
  10. May 27, 2009
  11. May 26, 2009
  12. May 22, 2009
    • agl@chromium.org's avatar
      Linux: add Breakpad support · 9a5d2a52
      agl@chromium.org authored
      This commits a rewrite of the Breakpad Linux client.
      
      The old code:
       * Had a number of plain bugs in it, but those could just have been
         fixed.
       * Allocated memory from the heap, which is a no go.
       * Made libc calls which can enter the dynamic linker - another source
         of crashes.
       * Didn't understand some of the tricks needed, like clone() via libc
         will write to random areas of memory because it assumes that it's
         only called from libpthread
      
      Additionally, we had one more requirement which meant changing the
      interface:
       * We need to be able to crash dump the renderers from the browser
         process.
      
      And that last one really needed a rewrite.
      
      We intend to try and upstream this new code into Breakpad.
      
      The new Breakpad design works like this:
      
      When a renderer crashes, a signal handler runs on an alternative stack
      and collects information about the registers of the thread before the
      crash. Then we enter Chromium specific code an send a datagram message
      to a magic file descriptor (4) containing:
        * the registers and tid of the crashing thread
        * the active URL
        * a file descriptor to a socket
        * a CREDENTIALS structure giving the PID of the renderer.
      
      On the other end of the socket is an object on the IO thread
      (render_crash_handler_host_linux.cc) which reads and parses the
      datagram. The CREDENTIALS structure is validated by the kernel, so the
      renderer can't lie about it's PID and try and get the browser to crash
      dump the wrong process.
      
      The browser then ptraces the renderer and extracts all the needed
      information to write a minidump to a temp file. Then we write a byte
      to the file descriptor which the renderer gave the browser in the
      datagram and that's the signal to the renderer to finish dying. It
      dies by sending itself the same signal which trigger the crash dump in
      the first place, so it will appear to crash as normal as far as kernel
      core dumps and waitpid are concerned.
      
      The browser then constucts a MIME message in a temp file for upload to
      the crash service. We then fork out to /usr/bin/wget to actually do
      the upload (since Debian numbers suggest that 99.8% of users have wget
      installed.) A second forked child unlinks the temp files once wget has
      completed.
      
      For a browser crash, everything works pretty much the same except that
      the datagram step is omitted and we clone() off a process to ptrace
      ourselves and write the minidump.
      
      This code is only enabled in Chrome branded builds. Stub source files
      are substituted in the case of a Chromium build.
      
       http://codereview.chromium.org/115526
      
      BUG=9646,10772
      TEST=Build a Chrome branded binary. Send SEGV to a renderer and verify that wget output appears on stderr. Send a SEGV to the main binary and verify the same.
      
      
      git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16719 0039d316-1c4b-4281-b951-d872f2087c98
      9a5d2a52
  13. May 20, 2009
  14. May 17, 2009
  15. May 15, 2009
  16. May 13, 2009
  17. May 08, 2009
  18. May 06, 2009
  19. Apr 30, 2009
  20. Apr 29, 2009
  21. Apr 28, 2009
  22. Apr 27, 2009
  23. Apr 25, 2009
  24. Apr 22, 2009
  25. Apr 10, 2009
  26. Apr 09, 2009
  27. Apr 07, 2009
Loading