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

valgrind warning committing binary files

From: Philip Martin <philip.martin_at_wandisco.com>
Date: Thu, 29 Apr 2010 12:36:44 +0100

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?

Received on 2010-04-29 13:37:19 CEST

This is an archived mail posted to the Subversion Dev mailing list.