On Tue, Aug 31, 2010 at 12:37 AM, Stefan Fuhrmann <
[email protected]> wrote:
> Johan Corveleyn wrote:
>
>> On Mon, Aug 30, 2010 at 9:32 PM, Johan Corveleyn <[email protected]<mailto:
>> [email protected]>> wrote:
>>
>> On Mon, Aug 30, 2010 at 12:05 PM, Stefan Fuhrmann
>> <[email protected] <mailto:[email protected]>>
>>
>> wrote:
>>
>> I thought so ;) To narrow down the nature of the problem,
>> I added some checks that should be able to discern plain
>> data corruption from (de-)serialization issues. Please apply
>> either the patch or replace the original files with the versions
>> in the .zip file.
>>
>> A debug build should then, hopefully, trigger a different
>> and more specific assertion.
>>
>>
>> Ok, will try that now.
>>
>>
>> :-(, I updated to r990759 and applied your attached debug.patch, but I
>> just get the same assertion (offset by 4 lines), with no additional
>> information:
>>
>> [[[
>> $ svnserve -d -r c:/research/svn/experiment/repos
>> Assertion failed: *ptr > buffer, file
>> ..\..\..\subversion\libsvn_subr\svn_temp_serializer.c, line 286
>> ]]]
>>
>> Anything else I can try?
>>
>> The failure was expected. With the patched code, I just
> hope to get more context information.
>
> Could you send me the call stack dump? My suspicion is
> that the DAG node is already (partially) garbage before it
> actually gets added to the cache.
Ok, here it is in attachment (I removed the assert that you added in this
commit, so that the app would really crash; otherwise I couldn't get a crash
dump (or can I?)).
(I hope the attachments (file svn-crash...log.txt and svn-crash...dmp) get
through; if not, let me know and I'll zip them or something)
Some additional info:
- I couldn't reproduce the crash with a narrow range. Not even 90000:0 would
crash it (right after startup).
- BUT: if after 90000:0 I run log without -r arguments, I get an error on
the client side:
[[[
..\..\..\subversion\svn\log-cmd.c:746: (apr_err=160013)
..\..\..\subversion\libsvn_client\log.c:606: (apr_err=160013)
..\..\..\subversion\libsvn_repos\log.c:1474: (apr_err=160013)
svn: File not found: revision 90799, path '?\239'
..\..\..\subversion\libsvn_repos\log.c:372: (apr_err=160013)
svn: File not found: revision 90799, path '?\239'
..\..\..\subversion\libsvn_fs_fs\tree.c:3313: (apr_err=160013)
svn: File not found: revision 90799, path '?\239'
..\..\..\subversion\libsvn_fs_fs\tree.c:3313: (apr_err=160013)
svn: File not found: revision 90799, path '?\239'
..\..\..\subversion\libsvn_fs_fs\tree.c:3159: (apr_err=160013)
svn: File not found: revision 90799, path '?\239'
..\..\..\subversion\libsvn_fs_fs\tree.c:668: (apr_err=160013)
svn: File not found: revision 90799, path '?\239'
]]]
- This also happens when the first run is 60000:0 or even 42000:0. If the
first run is 41000:0, then the second run doesn't get the client-side error,
but the server crashes on the expected spot (after rev 42100).
- The above client-side error also happens if the second run is 96000:90000
instead of a log without -r argument.
- However, if I run "log -r96000:90000" right after startup, no problem.
- Other than that, it crashes reproducibly after 42100 if I run log with no
-r arguments right after startup.
Hmm, I hope you can figure this out ...
--
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\experiment\repos
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=de12e56f ebx=00d31370 ecx=00dd3573 edx=00dd3573 esi=00f0f7c4 edi=00f0f810
eip=003baffc esp=00f0f784 ebp=00f0f784 efl=00010286
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000
Stacktrace:
#1 0x003baffc in svn_fs_fs__id_deserialize()
buffer = 0x00dd356f
id =
#2 0x003bb598 in svn_fs_fs__noderev_deserialize()
buffer = 0x00dd3570
noderev_p =
noderev =
#3 0x003bfa4e in svn_fs_fs__dag_deserialize()
out =
data =
data_len = 1e0
pool =
node =
#4 0x004bc6fa in membuffer_cache_get()
cache =
key =
key_len = 31
item =
deserializer =
pool =
buffer = 0x00dd3570 ""
group_index = 6587
to_find =
entry =
size = 1e0
#5 0x004bc3b4 in svn_membuffer_cache_get()
svn_err__temp =
value_p =
found = 0x00f0f8c8
cache_void = 0x00d6bc40
key =
pool =
full_key = 0x00dd3520
cache =
full_key_len = 31
#6 0x004bdf93 in svn_cache__get()
value_p =
found = 0x00f0f8c8
cache =
key =
pool =
#7 0x003b1158 in dag_node_cache_get()
svn_err__temp =
node_p =
root =
path =
pool =
node =
cache =
key =
found = 0
#8 0x003b1406 in open_path()
svn_err__temp =
inherit =
err =
copy_path =
cached_node =
entry = 0x00dd34c0 "s9server"
next =
child =
parent_path_p =
root =
path =
flags = 0
txn_id =
pool =
canon_path =
fs =
parent_path =
rest =
path_so_far =
here =
#9 0x003b8583 in history_prev()
svn_err__temp =
baton = 0x00f0fa94
pool =
node =
path =
commit_rev = cccccccc
retpool =
retry = 0
copyroot_path =
fhd =
history =
revision = a1d1
fs =
src_path =
parent_path =
copyroot_rev = cccccccc
commit_path =
src_rev = cccccccc
dst_rev = cccccccc
root =
reported = 1
prev_history =
args =
#10 0x003b83a0 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 0x00629d61 in get_history()
svn_err__temp =
info =
fs =
strict = 0
authz_read_func =
authz_read_baton = 0x00f0fe9c
start = 0
pool =
subpool =
path =
history_root =
hist =
#13 0x00629cf9 in check_history()
changed = 0x00f0fbf4
info =
fs =
current = a1d1
strict = 0
authz_read_func =
authz_read_baton = 0x00f0fe9c
start = 0
pool =
#14 0x00629736 in do_logs()
svn_err__temp =
info =
changed = 1
fs =
paths =
hist_start = 0
hist_end = 17831
limit = 0
discover_changed_paths = 0
strict_node_history = 0
include_merged_revisions = 0
revprops =
descending_order = 1
receiver =
receiver_baton = 0x00f0fd20
authz_read_func =
authz_read_baton = 0x00f0fe9c
pool =
iterpool =
any_histories_left = 0
histories =
rev_mergeinfo =
revs =
i = 0
current = a1d1
send_count = 0
#15 0x00628c09 in svn_repos_get_logs4()
repos =
paths =
start = 0
end = 17831
limit = 0
discover_changed_paths = 0
strict_node_history = 0
include_merged_revisions = 0
revprops =
authz_read_func =
authz_read_baton = 0x00f0fe9c
receiver =
receiver_baton = 0x00f0fd20
pool =
head = 17831
fs =
descending_order = 1
#16 0x0040b738 in log_cmd()
conn =
pool =
params =
baton = 0x00f0fe9c
full_path =
lb =
full_paths =
err =
include_merged_revisions = 0
limit = 0
b =
write_err =
paths =
revprop_items =
changed_paths = 0
include_merged_revs_param = 0
elt =
i = 1
start_rev = 17831
end_rev = 0
strict_node = 0
revprop_word = 0x00dafe98 "revprops"
revprops =
#17 0x004157ea in svn_ra_svn_handle_commands2()
conn =
pool =
commands =
baton = 0x00f0fe9c
error_on_disconnect = 0
subpool =
iterpool =
err =
cmdname =
write_err =
params =
cmd_hash =
command =
#18 0x00410e9b in serve()
conn =
params =
pool =
warn_baton =
err =
uuid =
client_string =
cap_log =
client_url =
ra_client_string =
b =
ver = 2
io_err =
cap_words =
caplist =
#19 0x004035cb in serve_thread()
tid =
data = 0x00d2e428
d =
#20 0x6eedee40 in dummy_worker()
opaque = 0x00d2e438
thd =
#21 0x1023dfd3 in beginthreadex()
#22 0x1023df69 in beginthreadex()
#23 0x7c80b729 in GetModuleFileNameA()
Loaded modules:
0x00400000
C:\research\svn\client_build\svn_branch_performance\dist\bin\svnserve.exe
(1.7.0.0, 229376 bytes)
0x7c900000 C:\Windows\system32\ntdll.dll (5.1.2600.5755, 729088 bytes)
0x7c800000 C:\Windows\system32\kernel32.dll (5.1.2600.5781, 1007616 bytes)
0x77dd0000 C:\Windows\system32\advapi32.dll (5.1.2600.5755, 634880 bytes)
0x77e70000 C:\Windows\system32\rpcrt4.dll (5.1.2600.5795, 598016 bytes)
0x77fe0000 C:\Windows\system32\secur32.dll (5.1.2600.5834, 69632 bytes)
0x71ab0000 C:\Windows\system32\ws2_32.dll (5.1.2600.5512, 94208 bytes)
0x77c10000 C:\Windows\system32\msvcrt.dll (7.0.2600.5512, 360448 bytes)
0x71aa0000 C:\Windows\system32\ws2help.dll (5.1.2600.5512, 32768 bytes)
0x6eec0000
C:\research\svn\client_build\svn_branch_performance\dist\bin\libapr-1.dll
(1.3.8.0, 208896 bytes)
0x71a50000 C:\Windows\system32\mswsock.dll (5.1.2600.5625, 258048 bytes)
0x10200000
C:\Windows\Winsxs\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_f863c71f\msvcr90d.dll
(9.0.30729.1, 1191936 bytes)
0x10000000
C:\research\svn\client_build\svn_branch_performance\dist\bin\libsvn_delta-1.dll
(1.7.0.0, 262144 bytes)
0x6ee60000
C:\research\svn\client_build\svn_branch_performance\dist\bin\libaprutil-1.dll
(1.3.9.0, 282624 bytes)
0x6ee50000
C:\research\svn\client_build\svn_branch_performance\dist\bin\libapriconv-1.dll
(1.2.1.0, 45056 bytes)
0x00440000
C:\research\svn\client_build\svn_branch_performance\dist\bin\libsvn_subr-1.dll
(1.7.0.0, 1875968 bytes)
0x7c9c0000 C:\Windows\system32\shell32.dll (6.0.2900.6018, 8482816 bytes)
0x77f10000 C:\Windows\system32\gdi32.dll (5.1.2600.5698, 299008 bytes)
0x7e410000 C:\Windows\system32\user32.dll (5.1.2600.5512, 593920 bytes)
0x77f60000 C:\Windows\system32\shlwapi.dll (6.0.2900.5912, 483328 bytes)
0x774e0000 C:\Windows\system32\ole32.dll (5.1.2600.5512, 1298432 bytes)
0x77a80000 C:\Windows\system32\crypt32.dll (5.131.2600.5512, 610304 bytes)
0x77b20000 C:\Windows\system32\msasn1.dll (5.1.2600.5875, 73728 bytes)
0x00390000
C:\research\svn\client_build\svn_branch_performance\dist\bin\libsvn_fs-1.dll
(1.7.0.0, 413696 bytes)
0x00620000
C:\research\svn\client_build\svn_branch_performance\dist\bin\libsvn_repos-1.dll
(1.7.0.0, 368640 bytes)
0x76390000 C:\Windows\system32\imm32.dll (5.1.2600.5512, 118784 bytes)
0x773d0000
C:\Windows\Winsxs\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll
(6.0.2900.5512, 1060864 bytes)
0x5d090000 C:\Windows\system32\comctl32.dll (5.82.2900.5512, 630784 bytes)
0x662b0000 C:\Windows\system32\hnetcfg.dll (5.1.2600.5512, 360448 bytes)
0x71a90000 C:\Windows\system32\wshtcpip.dll (5.1.2600.5512, 32768 bytes)
0x59a60000 C:\Windows\system32\dbghelp.dll (5.1.2600.5512, 659456 bytes)
0x77c00000 C:\Windows\system32\version.dll (5.1.2600.5512, 32768 bytes)
0x76bf0000 C:\Windows\system32\psapi.dll (5.1.2600.5512, 45056 bytes)