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

Infinite stack recursion on subpool destruction

From: D.J. Heap <dj_at_shadyvale.net>
Date: 2003-10-04 18:41:58 CEST

There is a crash bug lurking somewhere in Subversion or APR as reported
by Francois Beausoleil. I believe it only affects Windows, but I'm not
positive. It occurs while an error message is being translated
('Problem running log') after a commit succeeds, but a post-commit
update fails.

In iconv_module.c in the iconv_getpath function line 86 a subpool
allocation goes bad -- somehow it's child and parent are set to the same
value which later causes an infinite stack recursion during pool
destruction. Probably due to a memory overwrite somewhere earlier is my
guess, but that's just a guess. I'm still looking at it, but someone
with more APR iconv and pool knowledge could probably find it a lot
faster. Probably this was triggered by the changes to make Windows do
translations better/correctly.

To repro, change a file in a working copy and then remove write/rename
permissions from the user you run as. Then commit -- this will let the
commit work, but the post update will fail with 'Access denied' and
cause the infinite recursion which eventually blows the stack.

For example:

D:\Temp>svnadmin create repo

D:\Temp>svn co file://localhost/d:/temp/repo wc
Checked out revision 0.

D:\Temp>cd wc

D:\Temp\wc>echo hi > file

D:\Temp\wc>svn add file
A file

D:\Temp\wc>svn commit -m "test"
Adding file
Transmitting file data .
Committed revision 1.

D:\Temp\wc>echo bye > file

D:\Temp\wc>svn st
M file

Now tweak permissions on the wc\.svn\text-base\file.svn-base file (I'm
using XP Home at the moment, so had to comment out the
svn_io_set_file_read_write call in adm_files.c instead) and commit. It
will crash.

As I said, I'll continue looking at this tomorrow, but someone more
knowledgable of this area may want to see if it's something obvious to them.

DJ

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 4 18:42:45 2003

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.