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

Re: [PATCH] Speed-up of libsvn_diff using token counts

From: Mark Phippard <markphip_at_gmail.com>
Date: Thu, 26 May 2011 11:13:48 -0400

Hi,

I applied your patch on OSX and figured I would at least run the tests
for you. Builds go OK, but the one of the tests fail and two other
tests crash your patch applied. The crashes look the same in both
cases.

Note, I have not run tests recently on this box, so I am not 100%
certain the tests crash from your patch, but given that it is in diff
code, it seems likely.

Here is the test that fails and the output in tests.log:

subversion/tests/svn_test_main.c:285: (apr_err=200006)
svn_tests: E200006: Test crashed (run in debugger with '--allow-segfaults')
FAIL: diff-diff3-test 6: 3-way merge, conflicting overlapping changes

Here is the first crash. It is in merge_tests.py:

EXCEPTION: SVNProcessTerminatedBySignal
Traceback (most recent call last):
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/main.py",
line 1288, in run
    rc = self.pred.run(sandbox)
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/testcase.py",
line 254, in run
    return self._delegate.run(sandbox)
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/testcase.py",
line 176, in run
    return self.func(sandbox)
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/merge_tests.py",
line 3216, in cherry_pick_text_conflict
    0) # not a dry_run
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/actions.py",
line 1014, in run_and_verify_merge
    exit_code, out, err = main.run_svn(error_re_string, *merge_command)
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/main.py",
line 591, in run_svn
    *(_with_auth(_with_config_dir(varargs))))
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/main.py",
line 347, in run_command
    None, *varargs)
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/main.py",
line 509, in run_command_stdin
    *varargs)
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/main.py",
line 479, in spawn_process
    stdout_lines, stderr_lines, exit_code = wait_on_pipe(kid, binary_mode)
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/main.py",
line 445, in wait_on_pipe
    raise SVNProcessTerminatedBySignal
SVNProcessTerminatedBySignal
FAIL: merge_tests.py 27: cherry-pick a dependent change, get conflict

And here is the crash output:

0 libsvn_diff-1.0.dylib 0x0000000100191956
svn_diff__resolve_conflict + 891
1 libsvn_diff-1.0.dylib 0x000000010019265c svn_diff_diff3_2 + 2508
2 libsvn_diff-1.0.dylib 0x0000000100196968
svn_diff_file_diff3_2 + 185
3 libsvn_wc-1.0.dylib 0x00000001000f2356 do_text_merge + 247
4 libsvn_wc-1.0.dylib 0x00000001000f39c8 merge_text_file + 565
5 libsvn_wc-1.0.dylib 0x00000001000f4cc2
svn_wc__internal_merge + 1300
6 libsvn_wc-1.0.dylib 0x00000001000f51a9 svn_wc_merge4 + 1032
7 libsvn_client-1.0.dylib 0x0000000100075944 merge_file_changed + 1946
8 libsvn_client-1.0.dylib 0x000000010009cf30 close_file + 1242
9 libsvn_delta-1.0.dylib 0x0000000100430b85 close_file + 136
10 libsvn_delta-1.0.dylib 0x0000000100430b85 close_file + 136
11 libsvn_repos-1.0.dylib 0x00000001001cf49c update_entry + 3070
12 libsvn_repos-1.0.dylib 0x00000001001cfe1a delta_dirs + 2406
13 libsvn_repos-1.0.dylib 0x00000001001d0368 drive + 1233
14 libsvn_repos-1.0.dylib 0x00000001001d0838 finish_report + 909
15 libsvn_repos-1.0.dylib 0x00000001001d0c9a
svn_repos_finish_report + 37
16 libsvn_ra_local-1.0.dylib 0x00000001001a9b33
reporter_finish_report + 41
17 libsvn_client-1.0.dylib 0x000000010007c81c
drive_merge_report_editor + 2251
18 libsvn_client-1.0.dylib 0x00000001000838af do_directory_merge + 2146
19 libsvn_client-1.0.dylib 0x00000001000845b5 do_merge + 2182
20 libsvn_client-1.0.dylib 0x0000000100089976 merge_peg_locked + 1720
21 libsvn_client-1.0.dylib 0x0000000100089a99 merge_peg_cb + 187
22 libsvn_wc-1.0.dylib 0x00000001000f1a78
svn_wc__call_with_write_lock + 145
23 libsvn_client-1.0.dylib 0x0000000100089c22
svn_client_merge_peg4 + 318
24 svn 0x0000000100011827 svn_cl__merge + 2744
25 svn 0x0000000100010bbb main + 11470
26 svn 0x00000001000016f8 start + 52

The other crash is in stat_tests.py:

EXCEPTION: SVNProcessTerminatedBySignal
Traceback (most recent call last):
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/main.py",
line 1288, in run
    rc = self.pred.run(sandbox)
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/testcase.py",
line 176, in run
    return self.func(sandbox)
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/stat_tests.py",
line 1095, in status_add_plus_conflict
    branch_url, '-r', '4:5', trunk_dir)
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/actions.py",
line 268, in run_and_verify_svn
    expected_exit, *varargs)
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/actions.py",
line 306, in run_and_verify_svn2
    exit_code, out, err = main.run_svn(want_err, *varargs)
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/main.py",
line 591, in run_svn
    *(_with_auth(_with_config_dir(varargs))))
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/main.py",
line 347, in run_command
    None, *varargs)
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/main.py",
line 509, in run_command_stdin
    *varargs)
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/main.py",
line 479, in spawn_process
    stdout_lines, stderr_lines, exit_code = wait_on_pipe(kid, binary_mode)
  File "/Users/mphippard/work/src-trunk/subversion/tests/cmdline/svntest/main.py",
line 445, in wait_on_pipe
    raise SVNProcessTerminatedBySignal
SVNProcessTerminatedBySignal
FAIL: stat_tests.py 22: status on conflicted added file

And here is the crash output
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000008
Crashed Thread: 0 Dispatch queue: com.apple.main-thread

Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libsvn_diff-1.0.dylib 0x0000000100191990
svn_diff__resolve_conflict + 949
1 libsvn_diff-1.0.dylib 0x000000010019265c svn_diff_diff3_2 + 2508
2 libsvn_diff-1.0.dylib 0x0000000100196968
svn_diff_file_diff3_2 + 185
3 libsvn_wc-1.0.dylib 0x00000001000f2356 do_text_merge + 247
4 libsvn_wc-1.0.dylib 0x00000001000f39c8 merge_text_file + 565
5 libsvn_wc-1.0.dylib 0x00000001000f4cc2
svn_wc__internal_merge + 1300
6 libsvn_wc-1.0.dylib 0x00000001000f51a9 svn_wc_merge4 + 1032
7 libsvn_client-1.0.dylib 0x0000000100075944 merge_file_changed + 1946
8 libsvn_client-1.0.dylib 0x000000010009cf30 close_file + 1242
9 libsvn_delta-1.0.dylib 0x0000000100430b85 close_file + 136
10 libsvn_delta-1.0.dylib 0x0000000100430b85 close_file + 136
11 libsvn_repos-1.0.dylib 0x00000001001cf49c update_entry + 3070
12 libsvn_repos-1.0.dylib 0x00000001001cfe1a delta_dirs + 2406
13 libsvn_repos-1.0.dylib 0x00000001001d0368 drive + 1233
14 libsvn_repos-1.0.dylib 0x00000001001d0838 finish_report + 909
15 libsvn_repos-1.0.dylib 0x00000001001d0c9a
svn_repos_finish_report + 37
16 libsvn_ra_local-1.0.dylib 0x00000001001a9b33
reporter_finish_report + 41
17 libsvn_client-1.0.dylib 0x000000010007c81c
drive_merge_report_editor + 2251
18 libsvn_client-1.0.dylib 0x00000001000838af do_directory_merge + 2146
19 libsvn_client-1.0.dylib 0x00000001000845b5 do_merge + 2182
20 libsvn_client-1.0.dylib 0x0000000100089976 merge_peg_locked + 1720
21 libsvn_client-1.0.dylib 0x0000000100089a99 merge_peg_cb + 187
22 libsvn_wc-1.0.dylib 0x00000001000f1a78
svn_wc__call_with_write_lock + 145
23 libsvn_client-1.0.dylib 0x0000000100089c22
svn_client_merge_peg4 + 318
24 svn 0x0000000100011827 svn_cl__merge + 2744
25 svn 0x0000000100010bbb main + 11470
26 svn 0x00000001000016f8 start + 52

-- 
Thanks
Mark Phippard
http://markphip.blogspot.com/
Received on 2011-05-26 17:14:20 CEST

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.