[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Multiple Concurrent Connections?

From: Tim Coulter <tim_at_timothyjcoulter.com>
Date: 2007-07-19 07:50:55 CEST

Daniel,

Here's some errors that I'm getting:

1) ruby: pthread_mutex_lock.c:82: __pthread_mutex_lock: Assertion
`mutex->__data.__owner == 0' failed.

There's no stack trace with this one.

2) /usr/lib/ruby/1.8/svn/util.rb:60: [BUG] Segmentation fault
ruby 1.8.5 (2006-08-25) [i486-linux]

The code at util.rb at line 60 is a dispatcher that calls functions I
believe are from SWIG (or have something to do with SWIG). I ran the
program through strace and found this piece which might be significant.
Note that my repository is at
location /home/tcoulter/workspace/OpenCertification/svn/development/.

[Lots and lots of output, right up 'til the end:]

open("/home/tcoulter/workspace/OpenCertification/svn/development/db/transactions/8-1.txn/props", O_RDONLY|O_CREAT|O_LARGEFILE, 0666) = 5
read(5, "K 15\nsvn:check-locks\nV 4\ntrue\nK "..., 4096) = 80
close(5) = 0
sigprocmask(SIG_BLOCK, NULL, []) = 0
sigprocmask(SIG_BLOCK, NULL, []) = 0
sigprocmask(SIG_BLOCK, NULL, []) = 0
sigprocmask(SIG_BLOCK, NULL, []) = 0
sigprocmask(SIG_BLOCK, NULL, []) = 0
sigprocmask(SIG_BLOCK, NULL, []) = 0
sigprocmask(SIG_BLOCK, NULL, []) = 0
open("/home/tcoulter/workspace/OpenCertification/svn/development/db/transactions/8-1.txn/props", O_RDONLY|O_CREAT|O_LARGEFILE, 0666) = 5
read(5, "K 15\nsvn:check-locks\nV 4\ntrue\nK "..., 4096) = 80
close(5) = 0
open("/home/tcoulter/workspace/OpenCertification/svn/development/db/transactions/8-1.txn/node.0.0", O_RDONLY|O_LARGEFILE) = 5
read(5, "id: 0.0.t8-1\ntype: dir\npred: 0.0"..., 4096) = 82
close(5) = 0
open("/home/tcoulter/workspace/OpenCertification/svn/development/db/transactions/8-1.txn/node.0.0", O_RDONLY|O_LARGEFILE) = 5
read(5, "id: 0.0.t8-1\ntype: dir\npred: 0.0"..., 4096) = 82
close(5) = 0
open("/home/tcoulter/workspace/OpenCertification/svn/development/db/transactions/8-1.txn/node.0.0.children", O_RDONLY|O_LARGEFILE) = 5
read(5, "K 7\nanswers\nV 14\ndir 7.0.r5/425\n"..., 4096) = 207
read(5, "", 4096) = 0
close(5) = 0
open("/home/tcoulter/workspace/OpenCertification/svn/development/db/transactions/8-1.txn/node._0.0", O_RDONLY|O_LARGEFILE) = 5
read(5, "id: _0.0.t8-1\ntype: dir\ncount: 0"..., 4096) = 76
close(5) = 0
open("/home/tcoulter/workspace/OpenCertification/svn/development/db/transactions/8-1.txn/node._0.0.children", O_RDONLY|O_LARGEFILE) = 5
read(5, "END\nK 7\nlast_id\nV 14\nfile _1.0.t"..., 4096) = 36
read(5, "", 4096) = 0
close(5) = 0
open("/home/tcoulter/workspace/OpenCertification/svn/development/db/transactions/8-1.txn/node._1.0", O_RDONLY|O_LARGEFILE) = 5
read(5, "id: _1.0.t8-1\ntype: file\ncount: "..., 4096) = 76
close(5) = 0
open("/home/tcoulter/workspace/OpenCertification/svn/development/db/locks/970/970884caf3eb877137dfe022f0b7e75e", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
write(2, "/usr/lib/ruby/1.8/svn/util.rb:60"...,
34/usr/lib/ruby/1.8/svn/util.rb:60: ) = 34
write(2, "[BUG] ", 6[BUG] ) = 6
write(2, "Segmentation fault", 18Segmentation fault) = 18
write(2, "\nruby 1.8.5 (2006-08-25) [i486-l"..., 39
ruby 1.8.5 (2006-08-25) [i486-linux]

) = 39
rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
tgkill(12913, 12913, SIGABRT) = 0
--- SIGABRT (Aborted) @ 0 (0) ---
+++ killed by SIGABRT (core dumped) +++
Process 12913 detached

I was not able to find out where the core was actually dumped to.

3) "Can't grab FSFS txn list mutex"

Here's a trace. Ignore the "Committing... (TODO: give more info)" bit;
that's a message from me.

Svn::Error: /build/buildd/subversion-1.4.3dfsg1/subversion/libsvn_fs_fs/fs_fs.c:335 Can't grab FSFS txn list mutex: Invalid argument: Committing... (TODO: give more info):
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/abstract_adapter.rb:120:in `log'
/home/tcoulter/workspace/OpenCertification/config/../vendor/plugins/acts_as_subversioned/lib/subversion_adapter.rb:147:in `commit'
/home/tcoulter/workspace/OpenCertification/config/../vendor/plugins/acts_as_subversioned/lib/subversion_adapter.rb:170:in `repository'
/home/tcoulter/workspace/OpenCertification/config/../vendor/plugins/acts_as_subversioned/lib/subversion_adapter.rb:146:in `commit'
./vendor/plugins/acts_as_subversioned/lib/subversion_schema_statements.rb:56:in `create_table'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/migration.rb:273:in `send'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/migration.rb:273:in `method_missing'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/migration.rb:257:in `say_with_time'
/usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/migration.rb:257:in `say_with_time'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/migration.rb:271:in `method_missing'
./db/migrate//005_add_database_structure_for_tagging.rb:3:in `real_up'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/migration.rb:210:in `send'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/migration.rb:210:in `migrate'
/usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/migration.rb:210:in `migrate'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/migration.rb:333:in `migrate'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/migration.rb:328:in `each'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/migration.rb:328:in `migrate'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/migration.rb:295:in `up'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/migration.rb:286:in `migrate'
/usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/tasks/databases.rake:4
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:392:in `call'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:392:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:392:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:392:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:362:in `invoke'
/usr/lib/ruby/1.8/thread.rb:135:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:355:in `invoke'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:369:in
`invoke_prerequisites'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1003:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1003:in `send'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1003:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:368:in
`invoke_prerequisites'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:361:in `invoke'
/usr/lib/ruby/1.8/thread.rb:135:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:355:in `invoke'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1739:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1739:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1739:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1761:in
`standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1733:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1711:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1761:in
`standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1708:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/bin/rake:7
/usr/bin/rake:16:in `load'
/usr/bin/rake:16

All of these errors seem to happen in place of each other. If it's not
one, it's the other. The segmentation fault (3) is the most frequent,
followed by the "Can't grab FSFS txn list mutex" (2) and the pthread
assertion (1), respectively.

Again, thanks a lot for your help. Let me know if there's anything I can
do.

Tim

On Wed, 2007-07-18 at 13:51 -0700, Daniel Rall wrote:
> On Wed, 18 Jul 2007, Tim Coulter wrote:
>
> > All,
> >
> > Is Subversion supposed to handle multiple concurrent connections using
> > the Ruby bindings through the FS module, or am I supposed to limit it to
> > one connection at a time (say, using threads and synchronizing)?
>
> I don't have first-hand knowledge of exactly how the Ruby bindings are
> written in this area, but I would expect that multiple concurrent
> connections would be supported.
>
> > I'm connecting to Subversion straight from the filesystem API, and I'm
> > not going through a client context. I seem to get random errors which
> > suggest that the ladder is true.
>
> Would you provide more detail about what you're doing, and the errors
> that you're seeing? A stack trace would be quite helpful, too.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Thu Jul 19 07:50:06 2007

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.