Uploaded image for project: 'Subversion'
  1. Subversion
  2. SVN-1709

interrupted client doesn't stop processing network traffic

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • all
    • 1.3.0
    • libsvn_ra_neon
    • None

    Description

      Jack Repenning witnessed this bug once when fooling with svn privately on Linux,
      and so has a Collabnet customer on win32.  And now D.J. Heap has managed to
      reproduce the bug on both win32 and fedora.  Apparently it's possible to hit
      "control-C" during a checkout cause apache to spike up to 100% cpu, some sort of
      infinite loop.  
      
      I'm filing this as a P1, because this is a major showstopper:  it prevents work
      from being done (i.e. a client can bring down an entire server), and there's no
      workaround.  We need a mod_dav_svn or apache expert to hunt this down ASAP.  A
      client should *never* be able to bring down a server.
      
      Here's DJ's report:
      
      -------------------------------------------
      
      I was able to recreate the problem I think -- if you cancel a checkout 
      from Apache it looks to me like mod_dav_svn keeps going.
      
      After cancelling it at the client I attached to Apache and followed the 
      loops around a few times, but I couldn't see how mod_dav_svn would be 
      able to tell if the socket was dead.  I'm not sure if it's supposed to 
      check something or if Apache tells it the client died or what.  Also, I 
      get the same behavior on Linux (Fedora Core 1).
      
      With svnserve, the client process and server thread exit almost immediately.
      
      The mod_dav_svn stacktrace (a few seconds after the client has been 
      Ctrl-C'd) looked like this and just kept looping and sending the xml 
      until complete:
      
       >	mod_dav_svn.so!svn_fs__parse_entries_skel
        	mod_dav_svn.so!get_dir_entries
        	mod_dav_svn.so!dir_entry_id_from_node
        	mod_dav_svn.so!svn_fs__dag_open
        	mod_dav_svn.so!open_path
        	mod_dav_svn.so!txn_body_node_id
        	mod_dav_svn.so!do_retry
        	mod_dav_svn.so!svn_fs__retry_txn
        	mod_dav_svn.so!svn_fs_node_id
        	mod_dav_svn.so!dav_svn_get_safe_cr
        	mod_dav_svn.so!send_vsn_url
        	mod_dav_svn.so!add_helper
        	mod_dav_svn.so!upd_add_file
        	mod_dav_svn.so!add_file_or_dir
        	mod_dav_svn.so!delta_dirs
        	mod_dav_svn.so!add_file_or_dir
        	mod_dav_svn.so!delta_dirs
        	mod_dav_svn.so!add_file_or_dir
        	mod_dav_svn.so!delta_dirs
        	mod_dav_svn.so!add_file_or_dir
        	mod_dav_svn.so!delta_dirs
        	mod_dav_svn.so!add_file_or_dir
        	mod_dav_svn.so!delta_dirs
        	mod_dav_svn.so!svn_repos_dir_delta
        	mod_dav_svn.so!finish_report
        	mod_dav_svn.so!svn_repos_finish_report
        	mod_dav_svn.so!dav_svn__update_report
        	mod_dav_svn.so!dav_svn_deliver_report
        	mod_dav.so!dav_method_report
      

      Attachments

        1. 1_svn_daverr2.diff
          5 kB
          Joe Orton

        Issue Links

          Activity

            People

              Unassigned Unassigned
              sussman Ben Collins-Sussman
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: