You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by William Uther <wi...@cse.unsw.edu.au> on 2002/12/10 04:26:52 UTC

ra_svn deadlock on MacOS X?

Hi,
   Is ra_svn supposed to be passing 'make check' yet?

   svn seems to deadlock for me in test 5 of diff_tests.py when run over  
ra_svn and ssh.  Details on my experiments below.

Later,

Will              :-}

I have the following setup:

MacOS X 10.2.2
neon 0.23.5 with ssl and zlib (through fink)
BDB 4.0 (through fink)
BDB 4.1 (through fink) (tried with both versions of BDB libs installed,  
but only one set of headers at a time - same response with both  
versions.  I used otool to check it was linking with the correct  
libraries.)
svn revision 4062

"./configure" \
"--enable-maintainer-mode" \
"--disable-shared" \
"--with-neon=/sw" \
"--with-berkeley-db=/sw/include/db4:/sw/lib" \
"--with-dbm=db4" \
"--with-iconv=/sw" \

make check passes for ra_local
I'm not building mod_dav_svn

I then set up my system so that ssh can connect locally without a  
password (using ssh authorized_hosts), and do the following:

add 'localhost' as a group in ~/.subversion/servers.
add

 > [localhost]
 > svn-tunnel-agent = ssh

to ~/.subversion/servers

make install (this step is important - you need to check an up to date  
svnserve on the other end of the ssh pipe)

env  
BASE_URL=svn://localhost/Users/willu/src/subversion/subversion/tests/ 
clients/cmdline make check

Most of the tests pass until I get to diff_test 5 which never completes  
(The machine is ok, but you can leave it running overnight and it gets  
no further.  The machine load drops from just over 1 to almost 0).   
Here is the tail of the output:

stdout:

Running all tests in copy_tests.py...success
Running all tests in diff_tests.py...^CTraceback (most recent call  
last):
   File "./build/run_tests.py", line 170, in ?
     main()
   File "./build/run_tests.py", line 163, in main
     failed = th.run(sys.argv[base_index+5:])
   File "./build/run_tests.py", line 35, in run
     failed = self._run_test(prog) or failed
   File "./build/run_tests.py", line 97, in _run_test
     failed = self._run_prog(progname, cmdline)
   File "./build/run_tests.py", line 127, in _run_prog
     rv = os.spawnv(os.P_WAIT, progname, cmdline)
   File "/usr/lib/python2.2/os.py", line 485, in spawnv
     return _spawnvef(mode, file, args, None, execv)
   File "/usr/lib/python2.2/os.py", line 468, in _spawnvef
     wpid, sts = waitpid(pid, 0)
KeyboardInterrupt
make: *** [check] Error 1

from tests.log:

PASS:  diff_tests.py 4: replace a file with a file
CMD: svn "co" "--username" "jrandom" "--password" "rayjandom"  
"svn://localhost/Users/willu/src/subversion/subversion/tests/clients/ 
cmdline/repositories/diff_tests-5" "working_copies/diff_tests-5"
CMD: svn "up" "-rHEAD"
CMD: svn "add" "A/B/E/theta"
CMD: svn "diff"
CMD: svn "diff" "-rHEAD"
CMD: svn "ci" "-m" "log msg"
CMD: svn "up"
CMD: svn "diff" "-r" "1"
CMD: svn "up" "-rHEAD"
CMD: svn "add" "A/B/T"
CMD: svn "add" "A/B/T/phi"
CMD: svn "diff"
CMD: svn "diff" "-rHEAD"
CMD: svn "ci" "-m" "log msg"
CMD: svn "up"
CMD: svn "diff" "-r" "2"
CMD: svn "up" "-rHEAD"
CMD: svn "diff"
CMD: svn "diff" "-rHEAD"
CMD: svn "ci" "-m" "log msg"
CMD: svn "up"
CMD: svn "diff" "-r" "3"
CMD: svn "up" "-r" "4"
CMD: svn "diff" "-r" "1"
CMD: svn "diff" "-r" "1"
CMD: svn "diff" "-r" "1"
CMD: svn "up" "-r" "1"
CMD: svn "diff" "-r" "4"
CMD: svn "diff" "-r" "4"
CMD: svn "diff" "-r" "4"
CMD: svn "diff" "-r" "1:4"
Interrupted

I just tried using 'svnserve -d' and no ssh tunnelling.  This time the  
load dropped to 0 inside update_tests.py.  tests.log reveals:

START: update_tests.py
CMD: svnadmin "create" "local_tmp/repos"
CMD: svn "import" "--username" "jrandom" "--password" "rayjandom" "-m"  
"Log mess
age for revision 1."  
"svn://localhost/Users/willu/src/subversion/subversion/test
s/clients/cmdline/local_tmp/repos" "local_tmp/greekfiles"
CMD: svn "co" "--username" "jrandom" "--password" "rayjandom"  
"svn://localhost/U
sers/willu/src/subversion/subversion/tests/clients/cmdline/ 
repositories/update_t
ests-1" "working_copies/update_tests-1"
Interrupted


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: ra_svn deadlock on MacOS X?

Posted by Ben Collins-Sussman <su...@collab.net>.
William Uther <wi...@cse.unsw.edu.au> writes:

> P.S.  If the problem is with the MacOS server code, I'd be interested
> in trying with a linux server and a MacOS client.  Any thoughts on how
> you might run 'make check' in this situation?  i.e. I'd be able to run
> 'make check' on the server to verify that the linux client and server
> were both correct, but is there a way to check the MacOS client
> without worrying about the MacOS server?

No dice.  The python test suite requires that everything happen on the
same box:  svnadmin create, svn import, svn co, etc.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: ra_svn deadlock on MacOS X?

Posted by William Uther <wi...@cse.unsw.edu.au>.
On Tuesday, December 10, 2002, at 04:05  PM, Greg Hudson wrote:

>> Most of the tests pass until I get to diff_test 5 which never 
>> completes
>
> diff_tests 5 tests a code path which opens two connections to the
> repository ("svn diff -r 3:4 url").  So it will expose any
> single-threadedness problem on the server side.  In daemon mode, right
> now you're single-threaded if APR_HAS_FORK isn't defined; in ssh mode, 
> a
> single-threadedness could be the result of an sshd problem (though I've
> never heard of anything like that) or a Berkeley db locking problem.

A BDB locking problem was my take too (especially since I vaguely 
remember BDB 4.0 was known to have some locking problems on MacOS X).

Does anyone know how to go about tracking this down?

>> I just tried using 'svnserve -d' and no ssh tunnelling.  This time the
>> load dropped to 0 inside update_tests.py.  tests.log reveals:
>
> I can't explain that one.  I'll try to verify tonight that daemon-mode
> ra_svn passes the test suite, though I'll be trying on Linux, not MacOS
> X.

I was surprised too.  I was especially surprised since the same test 
passes when using ssh tunnelling.

Be well,

Will          :-}

P.S.  If the problem is with the MacOS server code, I'd be interested 
in trying with a linux server and a MacOS client.  Any thoughts on how 
you might run 'make check' in this situation?  i.e. I'd be able to run 
'make check' on the server to verify that the linux client and server 
were both correct, but is there a way to check the MacOS client without 
worrying about the MacOS server?


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: ra_svn deadlock on MacOS X?

Posted by Greg Hudson <gh...@MIT.EDU>.
On Mon, 2002-12-09 at 23:26, William Uther wrote:
> Hi,
>    Is ra_svn supposed to be passing 'make check' yet?

It's possible there's been a regression, but it has certainly done so in
the past.

> Most of the tests pass until I get to diff_test 5 which never completes  

diff_tests 5 tests a code path which opens two connections to the
repository ("svn diff -r 3:4 url").  So it will expose any
single-threadedness problem on the server side.  In daemon mode, right
now you're single-threaded if APR_HAS_FORK isn't defined; in ssh mode, a
single-threadedness could be the result of an sshd problem (though I've
never heard of anything like that) or a Berkeley db locking problem.

> I just tried using 'svnserve -d' and no ssh tunnelling.  This time the  
> load dropped to 0 inside update_tests.py.  tests.log reveals:

I can't explain that one.  I'll try to verify tonight that daemon-mode
ra_svn passes the test suite, though I'll be trying on Linux, not MacOS
X.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org