This came up while investigating a corrupt repository. I don't know if
the warning is connected to the corruption, or even if it is serious.
I'm using Subversion 1.6.x and apr/aprutil 1.2.12, all built with pool
debugging, but this happens with Subversion trunk as well.
The warning can be triggered in various ways (I first saw it while
running Apache under valgrind) but the simplest way is to import
theta.bin over ra_local.
$ svnadmin create repo
$ valgrind -q --num-callers=20 subversion/svn/.libs/lt-svn import -mm subversion/tests/cmdline/theta.bin file://`pwd`/repo/f1
==15201== Syscall param write(buf) points to uninitialised byte(s)
==15201== at 0x641175B: (within /usr/lib/debug/libpthread-2.7.so)
==15201== by 0x5DA5254: apr_file_flush_locked (readwrite.c:317)
==15201== by 0x5DA5960: setptr (seek.c:25)
==15201== by 0x5DA5B39: apr_file_seek (seek.c:70)
==15201== by 0x592BCAC: svn_io_file_seek (io.c:2755)
==15201== by 0x93F955F: get_file_offset (fs_fs.c:860)
==15201== by 0x94030E8: rep_write_contents_close (fs_fs.c:5012)
==15201== by 0x593DC9C: svn_stream_close (stream.c:116)
==15201== by 0x940FF0C: window_consumer (tree.c:2402)
==15201== by 0x54F4569: svn_txdelta_send_txstream (text_delta.c:838)
==15201== by 0x54F44BD: svn_txdelta_send_stream (text_delta.c:806)
==15201== by 0x4E38CD3: send_file_contents (commit.c:160)
==15201== by 0x4E3900E: import_file (commit.c:253)
==15201== by 0x4E399CD: import (commit.c:562)
==15201== by 0x4E3A33D: svn_client_import3 (commit.c:789)
==15201== by 0x40B5A2: svn_cl__import (import-cmd.c:114)
==15201== by 0x411B37: main (main.c:2119)
==15201== Address 0xa8c53ac is 76 bytes inside a block of size 4,096 alloc'd
==15201== at 0x4C2260E: malloc (vg_replace_malloc.c:207)
==15201== by 0x5DAB19C: pool_alloc (apr_pools.c:1324)
==15201== by 0x5DAB30B: apr_palloc_debug (apr_pools.c:1364)
==15201== by 0x5DA7A0E: apr_file_open (open.c:168)
==15201== by 0x5926FB7: file_open (io.c:247)
==15201== by 0x592B9C8: svn_io_file_open (io.c:2657)
==15201== by 0x93F92BA: get_writable_proto_rev_body (fs_fs.c:780)
==15201== by 0x93F8B17: with_txnlist_lock (fs_fs.c:502)
==15201== by 0x93F94CA: get_writable_proto_rev (fs_fs.c:828)
==15201== by 0x9402DE8: rep_write_get_baton (fs_fs.c:4946)
==15201== by 0x9403494: set_representation (fs_fs.c:5083)
==15201== by 0x9403568: svn_fs_fs__set_contents (fs_fs.c:5102)
==15201== by 0x93F6C47: svn_fs_fs__dag_get_edit_stream (dag.c:997)
==15201== by 0x941019F: apply_textdelta (tree.c:2461)
==15201== by 0x941038C: fs_apply_textdelta (tree.c:2516)
==15201== by 0x71DD57B: svn_fs_apply_textdelta (fs-loader.c:1080)
==15201== by 0x6FAE6BC: apply_textdelta (commit.c:412)
==15201== by 0x4E38AE6: send_file_contents (commit.c:109)
==15201== by 0x4E3900E: import_file (commit.c:253)
==15201== by 0x4E399CD: import (commit.c:562)
It seems to happen for some binary files, but not all, and I haven't
managed to trigger it for a text file. The file does not need a
binary mime type:
$ svnadmin create repo
$ svn co file://`pwd`/repo wc
$ touch wc/foo
$ svn add wc/foo # it's a text file
$ cp subversion/tests/cmdline/theta.bin wc/foo
$ svn ci -mm wc # triggers the warning
The warning looks serious but I've not yet managed to corrupt a
repository, so I can't rule out a valgrind false alarm.
Can anyone else reproduce this?
--
Philip
Received on 2010-04-29 13:37:19 CEST