Re: Performance branch - svnserve crash in fs_history_prev

2010-08-25 Thread Stefan Fuhrmann

Johan Corveleyn wrote:

Hi,

I've taken the performance branch for a spin. Some of performance
increases are awesome (svn log is ~4 times faster on my machine
(tested with a file with 300 revisions)).
  

Try playing with the -c, -F and -M parameters. They should
yield result in even better performance. With sufficient memory
allotted to the server process, second runs of svn log, for
instance, will be10x faster than the first run

However, I also experienced a crash of svnserve, for both svn log
and svn blame of a big file with 2000 revisions (so this is quite
an extreme case). See both .log files in attachment. Something goes
wrong in svn_fs_fs__id_deserialize, during processing of
fs_history_prev.
  

Hm, I couldn't reproduce that problem so far even with large
repositories. Could you rerun your tests in debug mode?
The stack trace should be more reliable then (e.g. data_len
on level #3 is either bogus or the reason for the crash).

I also have crash dump files of the crashes. If you want those, let me
know and I'll send them via private email.

This was on Windows XP, a release build with VCE 2008.

Since I don't have the same binaries and PDB files that you used,
the crash dumps will probably not tell me much more than the
text files that you posted.

Thanks for testing!

-- Stefan^2.


Re: Performance branch - svnserve crash in fs_history_prev

2010-08-25 Thread Johan Corveleyn
On Wed, Aug 25, 2010 at 11:34 AM, Stefan Fuhrmann
stefanfuhrm...@alice-dsl.de wrote:
 Johan Corveleyn wrote:
 However, I also experienced a crash of svnserve, for both svn log
 and svn blame of a big file with 2000 revisions (so this is quite
 an extreme case). See both .log files in attachment. Something goes
 wrong in svn_fs_fs__id_deserialize, during processing of
 fs_history_prev.


 Hm, I couldn't reproduce that problem so far even with large
 repositories. Could you rerun your tests in debug mode?
 The stack trace should be more reliable then (e.g. data_len
 on level #3 is either bogus or the reason for the crash).

Ok, here they are in attachment (one for blame and one for log).
Reproduced with a debug build (of branches/performa...@now), on the
same machine.

Crashed with both blame and log of large file with large number of
revisions (but I don't know if that's actually relevant, maybe it's
not related). With blame it crashed much sooner as my release build.

Cheers,
-- 
Johan

Process info:
Cmd line: 
C:\research\svn\client_build\svn_branch_performance\dist\bin\svnserve.exe -d -r 
c:/research/svn/experiment/repos
Working Dir: C:\research\svn
Version:  1.7.0 (dev build), compiled Aug 19 2010, 00:50:40
Platform: Windows OS version 5.1 build 2600 Service Pack 3

Exception: ACCESS_VIOLATION

Registers:
eax=dc307ce7 ebx=00d31370 ecx=00db54eb edx=00db54eb esi=00f0f8d0 edi=00f0f930
eip=003bb02c esp=00f0f8b4 ebp=00f0f8b4 efl=00010216
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=

Stacktrace:
#1  0x003bb02c in svn_fs_fs__id_deserialize()
buffer = 0x00db54e7
id = 
#2  0x003bb5ca in svn_fs_fs__noderev_deserialize()
buffer = 0x00db54e8
noderev_p = 
noderev = 
#3  0x003bfaa9 in svn_fs_fs__dag_deserialize()
out = 
data = 
data_len = 1e0
pool = 
node = 
#4  0x004bcdfe in membuffer_cache_get()
cache = 
key = 
key_len = 31
item = 
deserializer = 
pool = 
buffer = 0x00db5308 
group_index = faa
to_find = 
entry = 
#5  0x004bcb64 in svn_membuffer_cache_get()
svn_err__temp = 
value_p = 
found = 0x00f0f9e8
cache_void = 0x00d6bc40
key = 
pool = 
full_key = 0x00db52b8
cache = 
full_key_len = 31
#6  0x004bdc63 in svn_cache__get()
value_p = 
found = 0x00f0f9e8
cache = 
key = 
pool = 
#7  0x003b1188 in dag_node_cache_get()
svn_err__temp = 
node_p = 
root = 
path = 
pool = 
node = 
cache = 
key = 
found = 0
#8  0x003b1436 in open_path()
svn_err__temp = 
inherit = 
err = 
copy_path = 
cached_node = 
entry = 0x00db5258 s9server
next = 
child = 
parent_path_p = 
root = 
path = 
flags = 0
txn_id = 
pool = 
canon_path = 
fs = 
parent_path = 
rest = 
path_so_far = 
here = 
#9  0x003b85b3 in history_prev()
svn_err__temp = 
baton = 0x00f0fbb4
pool = 
node = 
path = 
commit_rev = 
retpool = 
retry = 0
copyroot_path = 
fhd = 
history = 
revision = a1d1
fs = 
src_path = 
parent_path = 
copyroot_rev = 
commit_path = 
src_rev = 
dst_rev = 
root = 
reported = 1
prev_history = 
args = 
#10  0x003b83d0 in fs_history_prev()
svn_err__temp = 
args = 
prev_history_p = 
history = 
cross_copies = 1
pool = 
fhd = 
fs = 
prev_history = 
#11  0x00395c26 in svn_fs_history_prev()
prev_history_p = 
history = 
cross_copies = 1
pool = 
#12  0x00631c86 in find_interesting_revisions()
svn_err__temp = 
tmp_pool = 
path_rev = 
path_revisions = 
repos = 
path = 
start = 0
end = 17831
include_merged_revisions = 0
mark_as_merged = 0
duplicate_path_revs = 
authz_read_func = 
authz_read_baton = 0x00f0fe9c
pool = 
history = 
iter_pool = 
last_pool = 
root = 
kind = 
#13  0x00631706 in svn_repos_get_file_revs2()
svn_err__temp = 
repos = 
path = 
start = 0
end = 17831
include_merged_revisions = 0
authz_read_func = 
authz_read_baton = 0x00f0fe9c
handler = 
handler_baton = 0x00f0fdb0
pool = 
duplicate_path_revs = 
mainline_pos = -858993460
merged_path_revisions = 
merged_pos = -858993460
sb = 
mainline_path_revisions = 
#14  0x0040d45a in get_file_revs()
conn 

Performance branch - svnserve crash in fs_history_prev

2010-08-23 Thread Johan Corveleyn
Hi,

I've taken the performance branch for a spin. Some of performance
increases are awesome (svn log is ~4 times faster on my machine
(tested with a file with 300 revisions)).

However, I also experienced a crash of svnserve, for both svn log
and svn blame of a big file with 2000 revisions (so this is quite
an extreme case). See both .log files in attachment. Something goes
wrong in svn_fs_fs__id_deserialize, during processing of
fs_history_prev.

I also have crash dump files of the crashes. If you want those, let me
know and I'll send them via private email.

This was on Windows XP, a release build with VCE 2008.

Cheers,
-- 
Johan


Re: Performance branch - svnserve crash in fs_history_prev

2010-08-23 Thread Lieven Govaerts
On Mon, Aug 23, 2010 at 11:10 AM, Johan Corveleyn jcor...@gmail.com wrote:
 Hi,

 I've taken the performance branch for a spin. Some of performance
 increases are awesome (svn log is ~4 times faster on my machine
 (tested with a file with 300 revisions)).

 However, I also experienced a crash of svnserve, for both svn log
 and svn blame of a big file with 2000 revisions (so this is quite
 an extreme case). See both .log files in attachment. Something goes
 wrong in svn_fs_fs__id_deserialize, during processing of
 fs_history_prev.

Either you forgot the attachments, or they were dropped by our mailing
sw. Try adding a .txt extension.

Lieven


Re: Performance branch - svnserve crash in fs_history_prev

2010-08-23 Thread Johan Corveleyn
Trying again with .txt extension added.

Johan

On Mon, Aug 23, 2010 at 11:40 AM, Julian Foad julian.f...@wandisco.com wrote:
 On Mon, 2010-08-23, Lieven Govaerts wrote:
 Either you forgot the attachments, or they were dropped by our mailing
 sw. Try adding a .txt extension.

 AFAIK, the mailing list strips attachments of MIME type
 'application/octet-stream' and a bunch of other types - see
 https://issues.apache.org/jira/browse/INFRA-1194.  Regrettably, it
 doesn't inform either the sender or the recipients that it's done so.

 - Julian




Process info:
Cmd line: 
C:\research\svn\client_build\svn_branch_performance\dist\bin\svnserve.exe -d -r 
c:/research/svn/experiment/repos
Working Dir: C:\research\svn\experiment\repos
Version:  1.7.0 (dev build), compiled Aug 22 2010, 21:57:27
Platform: Windows OS version 5.1 build 2600 Service Pack 3

Exception: ACCESS_VIOLATION

Registers:
eax=75262f72 ebx=00c2ecc8 ecx=00c2ee6c edx=00c2ee68 esi=00c2ee6c edi=019f
eip=003a4dbf esp=00d7fb5c ebp=0001 efl=00010206
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=

Stacktrace:
#1  0x003a4dbf in svn_fs_fs__id_deserialize()
buffer = 0x003a7031
id = 
#2  0x003a7031 in svn_fs_fs__dag_deserialize()
out = 
data = 
data_len = c2ecc8
pool = 
#3  0x00426d83 in membuffer_cache_get()
#4  0x00426f70 in svn_membuffer_cache_get()
value_p = 
found = 0x00d7fc30
cache_void = 0x00d7fc34
key = 
pool = 
#5  0x0042737a in svn_cache__get()
value_p = 
found = 0x00d7fc30
cache = 
key = 
pool = 
#6  0x0039fde5 in dag_node_cache_get()
node_p = 
#7  0x003a20c6 in open_path()
parent_path_p = 
root = 
path = 
flags = 12991688
txn_id = 
pool = 
fs = 
parent_path = 
path_so_far = 
here = 
entry = 0x00bb2148 �...@¹
next = 
child = 
inherit = 
copy_path = 
cached_node = 
#8  0x003a3d05 in history_prev()
#9  0x003a3ff5 in fs_history_prev()
prev_history_p = 
history = 
cross_copies = 12991760
pool = 
prev_history = 
args = 
#10  0x003d54fd in get_history()
#11  0x003d6708 in do_logs()
fs = 
paths = 
hist_start = c1e110
hist_end = 0
limit = 96305
discover_changed_paths = 0
strict_node_history = 0
include_merged_revisions = 0
revprops = 
descending_order = 12706024
receiver = 
receiver_baton = 0x00405140
authz_read_func = 
authz_read_baton = 0x00402480
pool = 
iterpool = 
any_histories_left = 0
histories = 
rev_mergeinfo = 
revs = 
i = 12934224
current = 17831
send_count = 12706696
mergeinfo = 
has_children = 0
mergeinfo = 
#12  0x003d6cc9 in svn_repos_get_logs4()
repos = 
paths = 
start = c1e110
end = 0
limit = 96305
discover_changed_paths = 0
strict_node_history = 0
include_merged_revisions = 0
revprops = 
authz_read_func = 
authz_read_baton = 0x00402480
receiver = 
receiver_baton = 0x00405140
pool = 
head = b9a0b0
fs = 
descending_order = 96305
send_count = C1E27000BB2148
#13  0x0040559c in log_cmd()
conn = 
pool = 
params = 
baton = 0x00c1dc80
lb = 
full_paths = 
include_merged_revisions = 12704984
limit = C1DEF8
paths = 
revprop_items = 
changed_paths = 0
include_merged_revs_param = 0
start_rev = 0
end_rev = 0
strict_node = 12706064
#14  0x0040962b in svn_ra_svn_handle_commands2()
conn = 
pool = 
commands = 
baton = 0x0040e320
error_on_disconnect = 14155532
subpool = 
cmdname = 
params = 
cmd_hash = 
#15  0x0040781f in serve()
conn = 
params = 
pool = 
warn_baton = 
uuid = 
client_string = 
cap_log = 
client_url = 
ra_client_string = 
b = 
ver = 200C15508
cap_words = 
caplist = 
supports_mergeinfo = 12173800
#16  0x00401325 in serve_thread()
tid = 
data = 0x00b9c1c0
#17  0x6eed47b0 in dummy_worker()
opaque = 0x78543433
#18  0x78543433 in endthreadex()
#19  0x785434c7 in endthreadex()
#20  0x7c80b729 in GetModuleFileNameA()


Loaded modules:
0x0040  
C:\research\svn\client_build\svn_branch_performance\dist\bin\svnserve.exe 
(1.7.0.0, 94208 bytes)
0x7c90  C:\Windows\system32\ntdll.dll (5.1.2600.5755, 729088 bytes)
0x7c80  C:\Windows\system32\kernel32.dll (5.1.2600.5781, 1007616 bytes)
0x77dd  C:\Windows\system32\advapi32.dll (5.1.2600.5755, 634880 bytes)