* trouble on windows network share
@ 2013-04-04 15:01 Pyeron, Jason J CTR (US)
2013-04-04 15:51 ` Jeff King
2013-05-02 21:26 ` deg
0 siblings, 2 replies; 17+ messages in thread
From: Pyeron, Jason J CTR (US) @ 2013-04-04 15:01 UTC (permalink / raw)
To: git@vger.kernel.org
[-- Attachment #1: Type: text/plain, Size: 2039 bytes --]
I am having trouble when the .git folder is on a network share, given the below where should I start on my debugging?
$ git --version
git version 1.7.9
$ uname -a
CYGWIN_NT-6.1-WOW64 LNDLE642FX7ZTR1 1.7.17(0.262/5/3) 2012-10-19 14:39 i686 Cygwin
jason.pyeron@localhost //server/share/dir/subdir
$ git init test
Initialized empty Git repository in //server/share/dir/subdir/test/.git/
jason.pyeron@localhost //server/share/dir/subdir
$ cd test/
jason.pyeron@localhost //server/share/dir/subdir/test
$ echo the quick brown fox jumped over the lazy dogs > test.txt
jason.pyeron@localhost //server/share/dir/subdir/test
$ git add test.txt
jason.pyeron@localhost //server/share/dir/subdir/test
$ git commit -m test
error: unable to find 8b7323820a21ebd1360e27262b3c61283c266c23
fatal: 8b7323820a21ebd1360e27262b3c61283c266c23 is not a valid object
jason.pyeron@localhost //server/share/dir/subdir/test
$ find .git/
.git/
.git/COMMIT_EDITMSG
.git/config
.git/description
.git/HEAD
.git/hooks
.git/hooks/applypatch-msg.sample
.git/hooks/commit-msg.sample
.git/hooks/post-update.sample
.git/hooks/pre-applypatch.sample
.git/hooks/pre-commit.sample
.git/hooks/pre-rebase.sample
.git/hooks/prepare-commit-msg.sample
.git/hooks/update.sample
.git/index
.git/info
.git/info/exclude
.git/objects
.git/objects/8b
.git/objects/8b/7323820a21ebd1360e27262b3c61283c266c23
.git/objects/ca
.git/objects/ca/630d704614c35b81d504cb5e87eaec8a78a3b3
.git/objects/info
.git/objects/pack
.git/refs
.git/refs/heads
.git/refs/tags
$ stat .git/objects/8b/7323820a21ebd1360e27262b3c61283c266c23
File: `.git/objects/8b/7323820a21ebd1360e27262b3c61283c266c23'
Size: 53 Blocks: 4 IO Block: 65536 regular file
Device: 6e2c3656h/1848391254d Inode: 1125899911803044 Links: 1
Access: (0444/-r--r--r--) Uid: (2246260/jason.pyeron) Gid: (10513/Domain Users)
Access: 2013-04-04 10:57:43.458720700 -0400
Modify: 2013-04-04 10:57:43.505522500 -0400
Change: 2013-04-04 10:57:43.536723700 -0400
Birth: 2013-04-04 10:57:43.458720700 -0400
[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5615 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: trouble on windows network share
2013-04-04 15:01 trouble on windows network share Pyeron, Jason J CTR (US)
@ 2013-04-04 15:51 ` Jeff King
2013-04-05 12:44 ` Pyeron, Jason J CTR (US)
2013-05-02 21:26 ` deg
1 sibling, 1 reply; 17+ messages in thread
From: Jeff King @ 2013-04-04 15:51 UTC (permalink / raw)
To: Pyeron, Jason J CTR (US); +Cc: git@vger.kernel.org
On Thu, Apr 04, 2013 at 03:01:36PM +0000, Pyeron, Jason J CTR (US) wrote:
> I am having trouble when the .git folder is on a network share, given the below where should I start on my debugging?
> [...]
> jason.pyeron@localhost //server/share/dir/subdir/test
> $ git add test.txt
>
> jason.pyeron@localhost //server/share/dir/subdir/test
> $ git commit -m test
> error: unable to find 8b7323820a21ebd1360e27262b3c61283c266c23
> fatal: 8b7323820a21ebd1360e27262b3c61283c266c23 is not a valid object
Hmm. That message probably comes from:
static int sha1_loose_object_info(const unsigned char *sha1, unsigned long *sizep)
{
[...]
map = map_sha1_file(sha1, &mapsize);
if (!map)
return error("unable to find %s", sha1_to_hex(sha1));
So we have found the object and know that it is loose, but then mmap-ing
it fails. My guess is that your system does not support mmap across
network shares (whether this is an OS issue or a cygwin limitation, I
don't know). You could confirm it by running your "git commit" under
strace, which I expect would show mmap returning -ENODEV or similar.
You can work around it by compiling git with NO_MMAP=1.
You might also try msysgit rather than cygwin, which seems to have its
own win32 mmap compatibility layer.
Finally, I suspect we could include our emulate-mmap-with-pread
compatibility wrapper all the time, and drop back to it automatically at
run-time when we see ENODEV or a similar error return from mmap.
-Peff
^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: trouble on windows network share
2013-04-04 15:51 ` Jeff King
@ 2013-04-05 12:44 ` Pyeron, Jason J CTR (US)
2013-04-11 4:56 ` Jeff King
0 siblings, 1 reply; 17+ messages in thread
From: Pyeron, Jason J CTR (US) @ 2013-04-05 12:44 UTC (permalink / raw)
To: git@vger.kernel.org; +Cc: Jeff King
[-- Attachment #1: Type: text/plain, Size: 3812 bytes --]
[strace attachment has been removed, email being resent]
It looks like there is a race condition going on, especially since the location and message changes.
Could it be the file creation, file read, apply file security is happening when it should be file create, apply security, file read?
Looking at trace line: 1088001 (full trace attached)
1181 1087049 [main] git 9320 symlink_info::check: 0x0 = NtCreateFile (\??\UNC\server\share\dir1\dir2\test\.git\objects\68)
84 1087133 [main] git 9320 symlink_info::check: not a symlink
733 1087866 [main] git 9320 symlink_info::check: 0 = symlink.check(\\server\share\dir1\dir2\test\.git\objects\68, 0x288280) (0x4022)
62 1087928 [main] git 9320 path_conv::check: this->path(\\server\share\dir1\dir2\test\.git\objects\68\38761d549cf76033d2e9faf5954e62839eb25d), has_acls(1)
31 1087959 [main] git 9320 build_fh_pc: fh 0x61274CA0, dev 0xC3
21 1087980 [main] git 9320 __set_errno: int fhandler_base::fhaccess(int, bool):367 setting errno 2
21 1088001 [main] git 9320 fhandler_base::fhaccess: returning -1
19 1088020 [main] git 9320 access: returning -1
164 1088184 [main] git 9320 fhandler_pty_slave::write: pty0, write(50A474, 7)
18 1088202 [main] git 9320 fhandler_pty_slave::write: (657): pty output_mutex (0xC0): waiting -1 ms
20 1088222 [main] git 9320 fhandler_pty_slave::write: (657): pty output_mutex: acquired
error:
21 1088243 [main] git 9320 fhandler_pty_slave::write: (672): pty output_mutex(0xC0) released
18 1088261 [main] git 9320 write: 7 = write(2, 0x50A474, 7)
36 1088297 [main] git 9320 fhandler_pty_slave::write: pty0, write(288680, 102)
18 1088315 [main] git 9320 fhandler_pty_slave::write: (657): pty output_mutex (0xC0): waiting -1 ms
18 1088333 [main] git 9320 fhandler_pty_slave::write: (657): pty output_mutex: acquired
Trying to write ref refs/heads/master with nonexistent object 6838761d549cf76033d2e9faf5954e62839eb25d
> -----Original Message-----
> From: Jeff King
> Sent: Thursday, April 04, 2013 11:51 AM
>
> On Thu, Apr 04, 2013 at 03:01:36PM +0000, Pyeron, Jason J CTR (US)
> wrote:
>
> > I am having trouble when the .git folder is on a network share, given
> the below where should I start on my debugging?
> > [...]
> > jason.pyeron@localhost //server/share/dir/subdir/test
> > $ git add test.txt
> >
> > jason.pyeron@localhost //server/share/dir/subdir/test
> > $ git commit -m test
> > error: unable to find 8b7323820a21ebd1360e27262b3c61283c266c23
> > fatal: 8b7323820a21ebd1360e27262b3c61283c266c23 is not a valid object
>
> Hmm. That message probably comes from:
>
> static int sha1_loose_object_info(const unsigned char *sha1, unsigned
> long *sizep)
> {
> [...]
> map = map_sha1_file(sha1, &mapsize);
> if (!map)
> return error("unable to find %s", sha1_to_hex(sha1));
>
> So we have found the object and know that it is loose, but then mmap-
> ing
> it fails. My guess is that your system does not support mmap across
> network shares (whether this is an OS issue or a cygwin limitation, I
> don't know). You could confirm it by running your "git commit" under
> strace, which I expect would show mmap returning -ENODEV or similar.
>
> You can work around it by compiling git with NO_MMAP=1.
>
> You might also try msysgit rather than cygwin, which seems to have its
> own win32 mmap compatibility layer.
>
> Finally, I suspect we could include our emulate-mmap-with-pread
> compatibility wrapper all the time, and drop back to it automatically
> at
> run-time when we see ENODEV or a similar error return from mmap.
>
> -Peff
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5615 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: trouble on windows network share
2013-04-05 12:44 ` Pyeron, Jason J CTR (US)
@ 2013-04-11 4:56 ` Jeff King
0 siblings, 0 replies; 17+ messages in thread
From: Jeff King @ 2013-04-11 4:56 UTC (permalink / raw)
To: Pyeron, Jason J CTR (US); +Cc: git@vger.kernel.org
On Fri, Apr 05, 2013 at 12:44:48PM +0000, Pyeron, Jason J CTR (US) wrote:
> [strace attachment has been removed, email being resent]
I had trouble finding anything interesting in either this, or in the
full strace you sent me off-list, mostly because the syscalls are
foreign to me (I had hoped to see an strace of the actual Unix-level
syscalls, but I guess that is not how cygwin's strace works).
What I really wanted to see was the result of the open, fstat, and mmap
calls. The patch below adds some debugging statements that might help.
> It looks like there is a race condition going on, especially since the
> location and message changes.
If it's a race condition between the write and the subsequent read in
the same process, then it would be solved by looking at the object
later. Does "git cat-file -p 6838761d549cf76033d2e9faf5954e62839eb25d"
work, or is the object forever inaccessible?
---
diff --git a/sha1_file.c b/sha1_file.c
index 0ed2398..d40dd9f 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -1331,6 +1331,9 @@ void *map_sha1_file(const unsigned char *sha1, unsigned long *size)
int fd;
fd = open_sha1_file(sha1);
+ if (fd < 0)
+ error("unable to open sha1 file for %s: %s",
+ sha1_to_hex(sha1), strerror(errno));
map = NULL;
if (fd >= 0) {
struct stat st;
@@ -1343,7 +1346,13 @@ void *map_sha1_file(const unsigned char *sha1, unsigned long *size)
return NULL;
}
map = xmmap(NULL, *size, PROT_READ, MAP_PRIVATE, fd, 0);
+ if (!map)
+ error("unable to mmap %s: %s",
+ sha1_to_hex(sha1), strerror(errno));
}
+ else
+ error("unable to fstat %s: %s", sha1_to_hex(sha1),
+ strerror(errno));
close(fd);
}
return map;
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: trouble on windows network share
2013-04-04 15:01 trouble on windows network share Pyeron, Jason J CTR (US)
2013-04-04 15:51 ` Jeff King
@ 2013-05-02 21:26 ` deg
2013-05-03 9:27 ` Thomas Rast
1 sibling, 1 reply; 17+ messages in thread
From: deg @ 2013-05-02 21:26 UTC (permalink / raw)
To: git
I'm having this same problem.
Here's one more clue that may help: The problem is dependent on the exact
type of NAS drive.
I moved from a Buffalo LS-X2.0, which worked fine, to a WD "My Book Live"
(MBL), which has this problem.
I don't know much more yet about why the MBL is failing, but am still poking
around, and am happy to try tests for anyone who wants to debug this.
--
View this message in context: http://git.661346.n2.nabble.com/trouble-on-windows-network-share-tp7581547p7584800.html
Sent from the git mailing list archive at Nabble.com.
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: trouble on windows network share
2013-05-02 21:26 ` deg
@ 2013-05-03 9:27 ` Thomas Rast
2013-05-04 23:23 ` David Goldfarb
0 siblings, 1 reply; 17+ messages in thread
From: Thomas Rast @ 2013-05-03 9:27 UTC (permalink / raw)
To: deg; +Cc: git
deg <deg@degel.com> writes:
> I'm having this same problem.
>
> Here's one more clue that may help: The problem is dependent on the exact
> type of NAS drive.
> I moved from a Buffalo LS-X2.0, which worked fine, to a WD "My Book Live"
> (MBL), which has this problem.
>
> I don't know much more yet about why the MBL is failing, but am still poking
> around, and am happy to try tests for anyone who wants to debug this.
Can you reproduce the problem under Linux (with the NAS mounted using
CIFS), or just Windows?
If it works under Linux, you could record strace logs, e.g.
echo foo >test.txt
strace -f -o trace.1 git add test.txt
strace -f -o trace.2 git commit -m test
etc.
This would massively help debugging. Judging from the OP's log, the
filesystem is just broken and can't make up its mind about what files
exist, but in the strace log we could see exactly where it gives weird
answers (or that it doesn't, and thus get clues to any possible git
bugs).
--
Thomas Rast
trast@{inf,student}.ethz.ch
^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: trouble on windows network share
2013-05-03 9:27 ` Thomas Rast
@ 2013-05-04 23:23 ` David Goldfarb
2013-05-06 9:42 ` Thomas Rast
0 siblings, 1 reply; 17+ messages in thread
From: David Goldfarb @ 2013-05-04 23:23 UTC (permalink / raw)
To: Thomas Rast; +Cc: git@vger.kernel.org
[-- Attachment #1: Type: text/plain, Size: 3012 bytes --]
Git works correctly under Linux (Ubuntu 12.04; git 1.7.9.5). I've attached the strace outputs. (Note: for reasons that are probably irrelevant, I needed to run the commands sudo'd. Shout back if this is an issue).
Under Windows 7, Cygwin git 1.7.9, commit fails:
U:\foo>git commit -m "added foo2"
error: unable to find 0b89efdeef245ed6a0a7eacc5c578629a141f856
fatal: 0b89efdeef245ed6a0a7eacc5c578629a141f856 is not a valid object
For what it's worth, note that the file does exist.
U:\foo>ls -l .git/objects/0b
total 1024
-rwxrw-r-- 1 ???????? ???????? 74 May 5 01:15 89efdeef245ed6a0a7eacc5c578629a141f856
(I'm not sure why the permissions are trashed. Seems to be a Cygwin thing, or maybe my Cygwin config. The "??????" also appears on local files, and I believe also with files on the old Buffalo drive, so I don't think it is relevant to the problem). Just in case, here's the same dir, as seen from the Ubuntu VM:
deg@ubuntu:/mnt/users/foo$ ls -l .git/objects/0b
total 64
-rwxr-xr-x 0 root root 74 May 5 01:15 89efdeef245ed6a0a7eacc5c578629a141f856
Again, note that there is some user permissions lossage here. I don't know enough about Linux mount or CIFS, and apparently did the mount in a way that everything seems to appear to be stuck owned by root. (same problem I hinted at above). Hope this is not relevant to the problem.
Here's how the same directory looks, when I'm ssh'd into the NAS box itself:
CentralPark:/shares/Users/foo# ls -l .git/objects/0b
total 64
-rwxrw-r-- 1 deg share 74 May 5 01:15 89efdeef245ed6a0a7eacc5c578629a141f856
In any event, the symptoms don't seem to be a permissions problem, so all this extra info is probably just a red herring, I hope.
David
-----Original Message-----
From: Thomas Rast [mailto:trast@inf.ethz.ch]
Sent: Friday, May 03, 2013 12:27 PM
To: David Goldfarb
Cc: git@vger.kernel.org
Subject: Re: trouble on windows network share
deg <deg@degel.com> writes:
> I'm having this same problem.
>
> Here's one more clue that may help: The problem is dependent on the
> exact type of NAS drive.
> I moved from a Buffalo LS-X2.0, which worked fine, to a WD "My Book Live"
> (MBL), which has this problem.
>
> I don't know much more yet about why the MBL is failing, but am still
> poking around, and am happy to try tests for anyone who wants to debug this.
Can you reproduce the problem under Linux (with the NAS mounted using CIFS), or just Windows?
If it works under Linux, you could record strace logs, e.g.
echo foo >test.txt
strace -f -o trace.1 git add test.txt
strace -f -o trace.2 git commit -m test
etc.
This would massively help debugging. Judging from the OP's log, the filesystem is just broken and can't make up its mind about what files exist, but in the strace log we could see exactly where it gives weird answers (or that it doesn't, and thus get clues to any possible git bugs).
--
Thomas Rast
trast@{inf,student}.ethz.ch
[-- Attachment #2: trace1 --]
[-- Type: application/octet-stream, Size: 13672 bytes --]
5333 execve("/usr/bin/git", ["git", "add", "test.txt"], [/* 16 vars */]) = 0
5333 brk(0) = 0x8774000
5333 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
5333 mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77c6000
5333 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
5333 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
5333 fstat64(3, {st_mode=S_IFREG|0644, st_size=101692, ...}) = 0
5333 mmap2(NULL, 101692, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb77ad000
5333 close(3) = 0
5333 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
5333 open("/lib/i386-linux-gnu/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
5333 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\27\0\0004\0\0\0"..., 512) = 512
5333 fstat64(3, {st_mode=S_IFREG|0644, st_size=83572, ...}) = 0
5333 mmap2(NULL, 86288, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7797000
5333 mmap2(0xb77ab000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13) = 0xb77ab000
5333 close(3) = 0
5333 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
5333 open("/lib/i386-linux-gnu/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
5333 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260&\0\0004\0\0\0"..., 512) = 512
5333 fstat64(3, {st_mode=S_IFREG|0644, st_size=83776, ...}) = 0
5333 mmap2(NULL, 96296, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb777f000
5333 mprotect(0xb7792000, 4096, PROT_NONE) = 0
5333 mmap2(0xb7793000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13) = 0xb7793000
5333 mmap2(0xb7795000, 6184, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7795000
5333 close(3) = 0
5333 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
5333 open("/lib/i386-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
5333 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p[\0\0004\0\0\0"..., 512) = 512
5333 fstat64(3, {st_mode=S_IFREG|0755, st_size=124663, ...}) = 0
5333 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb777e000
5333 mmap2(NULL, 107008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7763000
5333 mmap2(0xb777a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16) = 0xb777a000
5333 mmap2(0xb777c000, 4608, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb777c000
5333 close(3) = 0
5333 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
5333 open("/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
5333 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\226\1\0004\0\0\0"..., 512) = 512
5333 fstat64(3, {st_mode=S_IFREG|0755, st_size=1730024, ...}) = 0
5333 mmap2(NULL, 1743580, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb75b9000
5333 mprotect(0xb775c000, 4096, PROT_NONE) = 0
5333 mmap2(0xb775d000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a3) = 0xb775d000
5333 mmap2(0xb7760000, 10972, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7760000
5333 close(3) = 0
5333 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb75b8000
5333 set_thread_area({entry_number:-1 -> 6, base_addr:0xb75b86c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
5333 mprotect(0xb775d000, 8192, PROT_READ) = 0
5333 mprotect(0xb777a000, 4096, PROT_READ) = 0
5333 mprotect(0xb7793000, 4096, PROT_READ) = 0
5333 mprotect(0xb77ab000, 4096, PROT_READ) = 0
5333 mprotect(0x818c000, 4096, PROT_READ) = 0
5333 mprotect(0xb77e9000, 4096, PROT_READ) = 0
5333 munmap(0xb77ad000, 101692) = 0
5333 set_tid_address(0xb75b8728) = 5333
5333 set_robust_list(0xb75b8730, 0xc) = 0
5333 futex(0xbff46644, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, b75b86c0) = -1 EAGAIN (Resource temporarily unavailable)
5333 rt_sigaction(SIGRTMIN, {0xb7768570, [], SA_SIGINFO}, NULL, 8) = 0
5333 rt_sigaction(SIGRT_1, {0xb77685f0, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0
5333 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
5333 getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
5333 uname({sys="Linux", node="ubuntu", ...}) = 0
5333 brk(0) = 0x8774000
5333 brk(0x8795000) = 0x8795000
5333 open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
5333 fstat64(3, {st_mode=S_IFREG|0644, st_size=8748544, ...}) = 0
5333 mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb73b8000
5333 mmap2(NULL, 4096, PROT_READ, MAP_PRIVATE, 3, 0x5e0) = 0xb77c5000
5333 close(3) = 0
5333 getcwd("/mnt/users/foo", 4096) = 15
5333 stat64(".", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5333 stat64(".git", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5333 access(".git/objects", X_OK) = 0
5333 access(".git/refs", X_OK) = 0
5333 lstat64(".git/HEAD", {st_mode=S_IFREG|0755, st_size=23, ...}) = 0
5333 open(".git/HEAD", O_RDONLY|O_LARGEFILE) = 3
5333 read(3, "ref: refs/heads/master\n", 255) = 23
5333 read(3, "", 232) = 0
5333 close(3) = 0
5333 access("/etc/gitconfig", R_OK) = -1 ENOENT (No such file or directory)
5333 access("/home/deg/.gitconfig", R_OK) = 0
5333 open("/home/deg/.gitconfig", O_RDONLY|O_LARGEFILE) = 3
5333 fstat64(3, {st_mode=S_IFREG|0664, st_size=1036, ...}) = 0
5333 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77c4000
5333 read(3, "[user]\n name = David Gold"..., 4096) = 1036
5333 read(3, "", 4096) = 0
5333 close(3) = 0
5333 munmap(0xb77c4000, 4096) = 0
5333 access(".git/config", R_OK) = 0
5333 open(".git/config", O_RDONLY|O_LARGEFILE) = 3
5333 fstat64(3, {st_mode=S_IFREG|0755, st_size=111, ...}) = 0
5333 mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77c1000
5333 read(3, "[core]\n\trepositoryformatversion "..., 16384) = 111
5333 read(3, "", 16384) = 0
5333 close(3) = 0
5333 munmap(0xb77c1000, 16384) = 0
5333 stat64(".", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5333 getcwd("/mnt/users/foo", 1024) = 15
5333 chdir(".") = 0
5333 getcwd("/mnt/users/foo", 4096) = 15
5333 lstat64("/mnt/users/foo", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5333 chdir("/mnt/users/foo") = 0
5333 stat64(".git", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5333 access("/etc/gitconfig", R_OK) = -1 ENOENT (No such file or directory)
5333 access("/home/deg/.gitconfig", R_OK) = 0
5333 open("/home/deg/.gitconfig", O_RDONLY|O_LARGEFILE) = 3
5333 fstat64(3, {st_mode=S_IFREG|0664, st_size=1036, ...}) = 0
5333 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77c4000
5333 read(3, "[user]\n name = David Gold"..., 4096) = 1036
5333 read(3, "", 4096) = 0
5333 close(3) = 0
5333 munmap(0xb77c4000, 4096) = 0
5333 access(".git/config", R_OK) = 0
5333 open(".git/config", O_RDONLY|O_LARGEFILE) = 3
5333 fstat64(3, {st_mode=S_IFREG|0755, st_size=111, ...}) = 0
5333 mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77c1000
5333 read(3, "[core]\n\trepositoryformatversion "..., 16384) = 111
5333 read(3, "", 16384) = 0
5333 close(3) = 0
5333 munmap(0xb77c1000, 16384) = 0
5333 stat64(".git", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5333 getcwd("/mnt/users/foo", 1024) = 15
5333 chdir(".git") = 0
5333 getcwd("/mnt/users/foo/.git", 4096) = 20
5333 lstat64("/mnt/users/foo/.git", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5333 chdir("/mnt/users/foo") = 0
5333 chdir("/mnt/users/foo") = 0
5333 access("/etc/gitconfig", R_OK) = -1 ENOENT (No such file or directory)
5333 access("/home/deg/.gitconfig", R_OK) = 0
5333 open("/home/deg/.gitconfig", O_RDONLY|O_LARGEFILE) = 3
5333 fstat64(3, {st_mode=S_IFREG|0664, st_size=1036, ...}) = 0
5333 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77c4000
5333 read(3, "[user]\n name = David Gold"..., 4096) = 1036
5333 read(3, "", 4096) = 0
5333 close(3) = 0
5333 munmap(0xb77c4000, 4096) = 0
5333 access(".git/config", R_OK) = 0
5333 open(".git/config", O_RDONLY|O_LARGEFILE) = 3
5333 fstat64(3, {st_mode=S_IFREG|0755, st_size=111, ...}) = 0
5333 mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77c1000
5333 read(3, "[core]\n\trepositoryformatversion "..., 16384) = 111
5333 read(3, "", 16384) = 0
5333 close(3) = 0
5333 munmap(0xb77c1000, 16384) = 0
5333 readlink(".git/index", 0xbff43f2c, 4096) = -1 EINVAL (Invalid argument)
5333 open(".git/index.lock", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0666) = 3
5333 rt_sigaction(SIGINT, {0x80e5cd0, [INT], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
5333 rt_sigaction(SIGHUP, {0x80e5cd0, [HUP], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
5333 rt_sigaction(SIGTERM, {0x80e5cd0, [TERM], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
5333 rt_sigaction(SIGQUIT, {0x80e5cd0, [QUIT], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
5333 rt_sigaction(SIGPIPE, {0x80e5cd0, [PIPE], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
5333 open(".git/index", O_RDONLY|O_LARGEFILE) = 4
5333 fstat64(4, {st_mode=S_IFREG|0755, st_size=209, ...}) = 0
5333 mmap2(NULL, 209, PROT_READ|PROT_WRITE, MAP_PRIVATE, 4, 0) = 0xb77c4000
5333 close(4) = 0
5333 munmap(0xb77c4000, 209) = 0
5333 access(".git/info/exclude", R_OK) = 0
5333 open(".git/info/exclude", O_RDONLY|O_LARGEFILE) = 4
5333 fstat64(4, {st_mode=S_IFREG|0755, st_size=240, ...}) = 0
5333 read(4, "# git ls-files --others --exclud"..., 240) = 240
5333 close(4) = 0
5333 openat(AT_FDCWD, ".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 4
5333 getdents64(4, /* 7 entries */, 32768) = 184
5333 open(".gitignore", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
5333 getdents64(4, /* 0 entries */, 32768) = 0
5333 close(4) = 0
5333 lstat64("test.txt", {st_mode=S_IFREG|0755, st_size=3, ...}) = 0
5333 open("test.txt", O_RDONLY|O_LARGEFILE) = 4
5333 read(4, "foo", 3) = 3
5333 access("/etc/gitconfig", R_OK) = -1 ENOENT (No such file or directory)
5333 access("/home/deg/.gitconfig", R_OK) = 0
5333 open("/home/deg/.gitconfig", O_RDONLY|O_LARGEFILE) = 5
5333 fstat64(5, {st_mode=S_IFREG|0664, st_size=1036, ...}) = 0
5333 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77c4000
5333 read(5, "[user]\n name = David Gold"..., 4096) = 1036
5333 read(5, "", 4096) = 0
5333 close(5) = 0
5333 munmap(0xb77c4000, 4096) = 0
5333 access(".git/config", R_OK) = 0
5333 open(".git/config", O_RDONLY|O_LARGEFILE) = 5
5333 fstat64(5, {st_mode=S_IFREG|0755, st_size=111, ...}) = 0
5333 mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77c1000
5333 read(5, "[core]\n\trepositoryformatversion "..., 16384) = 111
5333 read(5, "", 16384) = 0
5333 close(5) = 0
5333 munmap(0xb77c1000, 16384) = 0
5333 open("/etc/gitattributes", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
5333 open(".gitattributes", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
5333 open(".git/info/attributes", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
5333 openat(AT_FDCWD, ".git/objects/pack", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 5
5333 getdents64(5, /* 2 entries */, 32768) = 48
5333 getdents64(5, /* 0 entries */, 32768) = 0
5333 close(5) = 0
5333 open(".git/objects/info/alternates", O_RDONLY|O_LARGEFILE|O_NOATIME) = -1 ENOENT (No such file or directory)
5333 access(".git/objects/19/102815663d23f8b75a47e7a01965dcdc96468c", F_OK) = -1 ENOENT (No such file or directory)
5333 gettimeofday({1367708728, 409169}, NULL) = 0
5333 open(".git/objects/19/tmp_obj_ZRu8cc", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0444) = 5
5333 brk(0x87be000) = 0x87be000
5333 write(5, "x\1K\312\311OR0fH\313\317\7\0\22\16\0037", 18) = 18
5333 brk(0x87ae000) = 0x87ae000
5333 brk(0x879e000) = 0x879e000
5333 close(5) = 0
5333 link(".git/objects/19/tmp_obj_ZRu8cc", ".git/objects/19/102815663d23f8b75a47e7a01965dcdc96468c") = 0
5333 unlink(".git/objects/19/tmp_obj_ZRu8cc") = 0
5333 close(4) = 0
5333 write(3, "DIRC\0\0\0\2\0\0\0\3Q\205\202\2252\21\334\250Q\205\202\2255\310\326\250\0\0\0\0"..., 262) = 262
5333 fstat64(3, {st_mode=S_IFREG|0755, st_size=262, ...}) = 0
5333 close(3) = 0
5333 rename(".git/index.lock", ".git/index") = 0
5333 fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
5333 close(1) = 0
5333 exit_group(0) = ?
[-- Attachment #3: trace2 --]
[-- Type: application/octet-stream, Size: 33172 bytes --]
5344 execve("/usr/bin/git", ["git", "commit", "-m", "test"], [/* 16 vars */]) = 0
5344 brk(0) = 0x8542000
5344 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
5344 mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7778000
5344 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
5344 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
5344 fstat64(3, {st_mode=S_IFREG|0644, st_size=101692, ...}) = 0
5344 mmap2(NULL, 101692, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb775f000
5344 close(3) = 0
5344 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
5344 open("/lib/i386-linux-gnu/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
5344 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\27\0\0004\0\0\0"..., 512) = 512
5344 fstat64(3, {st_mode=S_IFREG|0644, st_size=83572, ...}) = 0
5344 mmap2(NULL, 86288, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7749000
5344 mmap2(0xb775d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13) = 0xb775d000
5344 close(3) = 0
5344 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
5344 open("/lib/i386-linux-gnu/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
5344 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260&\0\0004\0\0\0"..., 512) = 512
5344 fstat64(3, {st_mode=S_IFREG|0644, st_size=83776, ...}) = 0
5344 mmap2(NULL, 96296, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7731000
5344 mprotect(0xb7744000, 4096, PROT_NONE) = 0
5344 mmap2(0xb7745000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13) = 0xb7745000
5344 mmap2(0xb7747000, 6184, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7747000
5344 close(3) = 0
5344 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
5344 open("/lib/i386-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
5344 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p[\0\0004\0\0\0"..., 512) = 512
5344 fstat64(3, {st_mode=S_IFREG|0755, st_size=124663, ...}) = 0
5344 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7730000
5344 mmap2(NULL, 107008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7715000
5344 mmap2(0xb772c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16) = 0xb772c000
5344 mmap2(0xb772e000, 4608, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb772e000
5344 close(3) = 0
5344 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
5344 open("/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
5344 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\226\1\0004\0\0\0"..., 512) = 512
5344 fstat64(3, {st_mode=S_IFREG|0755, st_size=1730024, ...}) = 0
5344 mmap2(NULL, 1743580, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb756b000
5344 mprotect(0xb770e000, 4096, PROT_NONE) = 0
5344 mmap2(0xb770f000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a3) = 0xb770f000
5344 mmap2(0xb7712000, 10972, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7712000
5344 close(3) = 0
5344 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb756a000
5344 set_thread_area({entry_number:-1 -> 6, base_addr:0xb756a6c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
5344 mprotect(0xb770f000, 8192, PROT_READ) = 0
5344 mprotect(0xb772c000, 4096, PROT_READ) = 0
5344 mprotect(0xb7745000, 4096, PROT_READ) = 0
5344 mprotect(0xb775d000, 4096, PROT_READ) = 0
5344 mprotect(0x818c000, 4096, PROT_READ) = 0
5344 mprotect(0xb779b000, 4096, PROT_READ) = 0
5344 munmap(0xb775f000, 101692) = 0
5344 set_tid_address(0xb756a728) = 5344
5344 set_robust_list(0xb756a730, 0xc) = 0
5344 futex(0xbfdc1054, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, b756a6c0) = -1 EAGAIN (Resource temporarily unavailable)
5344 rt_sigaction(SIGRTMIN, {0xb771a570, [], SA_SIGINFO}, NULL, 8) = 0
5344 rt_sigaction(SIGRT_1, {0xb771a5f0, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0
5344 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
5344 getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
5344 uname({sys="Linux", node="ubuntu", ...}) = 0
5344 brk(0) = 0x8542000
5344 brk(0x8563000) = 0x8563000
5344 open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
5344 fstat64(3, {st_mode=S_IFREG|0644, st_size=8748544, ...}) = 0
5344 mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb736a000
5344 mmap2(NULL, 4096, PROT_READ, MAP_PRIVATE, 3, 0x5e0) = 0xb7777000
5344 close(3) = 0
5344 getcwd("/mnt/users/foo", 4096) = 15
5344 stat64(".", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 stat64(".git", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 access(".git/objects", X_OK) = 0
5344 access(".git/refs", X_OK) = 0
5344 lstat64(".git/HEAD", {st_mode=S_IFREG|0755, st_size=23, ...}) = 0
5344 open(".git/HEAD", O_RDONLY|O_LARGEFILE) = 3
5344 read(3, "ref: refs/heads/master\n", 255) = 23
5344 read(3, "", 232) = 0
5344 close(3) = 0
5344 access("/etc/gitconfig", R_OK) = -1 ENOENT (No such file or directory)
5344 access("/home/deg/.gitconfig", R_OK) = 0
5344 open("/home/deg/.gitconfig", O_RDONLY|O_LARGEFILE) = 3
5344 fstat64(3, {st_mode=S_IFREG|0664, st_size=1036, ...}) = 0
5344 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7776000
5344 read(3, "[user]\n name = David Gold"..., 4096) = 1036
5344 read(3, "", 4096) = 0
5344 close(3) = 0
5344 munmap(0xb7776000, 4096) = 0
5344 access(".git/config", R_OK) = 0
5344 open(".git/config", O_RDONLY|O_LARGEFILE) = 3
5344 fstat64(3, {st_mode=S_IFREG|0755, st_size=111, ...}) = 0
5344 mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7773000
5344 read(3, "[core]\n\trepositoryformatversion "..., 16384) = 111
5344 read(3, "", 16384) = 0
5344 close(3) = 0
5344 munmap(0xb7773000, 16384) = 0
5344 stat64(".", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 getcwd("/mnt/users/foo", 1024) = 15
5344 chdir(".") = 0
5344 getcwd("/mnt/users/foo", 4096) = 15
5344 lstat64("/mnt/users/foo", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 chdir("/mnt/users/foo") = 0
5344 stat64(".git", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 access("/etc/gitconfig", R_OK) = -1 ENOENT (No such file or directory)
5344 access("/home/deg/.gitconfig", R_OK) = 0
5344 open("/home/deg/.gitconfig", O_RDONLY|O_LARGEFILE) = 3
5344 fstat64(3, {st_mode=S_IFREG|0664, st_size=1036, ...}) = 0
5344 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7776000
5344 read(3, "[user]\n name = David Gold"..., 4096) = 1036
5344 read(3, "", 4096) = 0
5344 close(3) = 0
5344 munmap(0xb7776000, 4096) = 0
5344 access(".git/config", R_OK) = 0
5344 open(".git/config", O_RDONLY|O_LARGEFILE) = 3
5344 fstat64(3, {st_mode=S_IFREG|0755, st_size=111, ...}) = 0
5344 mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7773000
5344 read(3, "[core]\n\trepositoryformatversion "..., 16384) = 111
5344 read(3, "", 16384) = 0
5344 close(3) = 0
5344 munmap(0xb7773000, 16384) = 0
5344 stat64(".git", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 getcwd("/mnt/users/foo", 1024) = 15
5344 chdir(".git") = 0
5344 getcwd("/mnt/users/foo/.git", 4096) = 20
5344 lstat64("/mnt/users/foo/.git", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 chdir("/mnt/users/foo") = 0
5344 chdir("/mnt/users/foo") = 0
5344 lstat64(".git/HEAD", {st_mode=S_IFREG|0755, st_size=23, ...}) = 0
5344 open(".git/HEAD", O_RDONLY|O_LARGEFILE) = 3
5344 read(3, "ref: refs/heads/master\n", 255) = 23
5344 read(3, "", 232) = 0
5344 close(3) = 0
5344 lstat64(".git/refs/heads/master", {st_mode=S_IFREG|0755, st_size=41, ...}) = 0
5344 open(".git/refs/heads/master", O_RDONLY|O_LARGEFILE) = 3
5344 read(3, "1c9bcfa1f3ae0f565480249abbf17a8a"..., 255) = 41
5344 read(3, "", 214) = 0
5344 close(3) = 0
5344 access("/etc/gitconfig", R_OK) = -1 ENOENT (No such file or directory)
5344 access("/home/deg/.gitconfig", R_OK) = 0
5344 open("/home/deg/.gitconfig", O_RDONLY|O_LARGEFILE) = 3
5344 fstat64(3, {st_mode=S_IFREG|0664, st_size=1036, ...}) = 0
5344 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7776000
5344 read(3, "[user]\n name = David Gold"..., 4096) = 1036
5344 read(3, "", 4096) = 0
5344 close(3) = 0
5344 munmap(0xb7776000, 4096) = 0
5344 access(".git/config", R_OK) = 0
5344 open(".git/config", O_RDONLY|O_LARGEFILE) = 3
5344 fstat64(3, {st_mode=S_IFREG|0755, st_size=111, ...}) = 0
5344 mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7773000
5344 read(3, "[core]\n\trepositoryformatversion "..., 16384) = 111
5344 read(3, "", 16384) = 0
5344 close(3) = 0
5344 munmap(0xb7773000, 16384) = 0
5344 lstat64(".git/MERGE_HEAD", 0xbfdbfb10) = -1 ENOENT (No such file or directory)
5344 lstat64(".git/CHERRY_PICK_HEAD", 0xbfdbfb10) = -1 ENOENT (No such file or directory)
5344 lstat64(".git/HEAD", {st_mode=S_IFREG|0755, st_size=23, ...}) = 0
5344 open(".git/HEAD", O_RDONLY|O_LARGEFILE) = 3
5344 read(3, "ref: refs/heads/master\n", 255) = 23
5344 read(3, "", 232) = 0
5344 close(3) = 0
5344 lstat64(".git/refs/heads/master", {st_mode=S_IFREG|0755, st_size=41, ...}) = 0
5344 open(".git/refs/heads/master", O_RDONLY|O_LARGEFILE) = 3
5344 read(3, "1c9bcfa1f3ae0f565480249abbf17a8a"..., 255) = 41
5344 read(3, "", 214) = 0
5344 close(3) = 0
5344 lstat64(".git/refs/HEAD", 0xbfdbc79c) = -1 ENOENT (No such file or directory)
5344 open(".git/packed-refs", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
5344 lstat64(".git/refs/tags/HEAD", 0xbfdbc79c) = -1 ENOENT (No such file or directory)
5344 lstat64(".git/refs/heads/HEAD", 0xbfdbc79c) = -1 ENOENT (No such file or directory)
5344 lstat64(".git/refs/remotes/HEAD", 0xbfdbc79c) = -1 ENOENT (No such file or directory)
5344 lstat64(".git/refs/remotes/HEAD/HEAD", 0xbfdbc79c) = -1 ENOENT (No such file or directory)
5344 openat(AT_FDCWD, ".git/refs", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
5344 getdents64(3, /* 4 entries */, 32768) = 104
5344 stat64(".git/refs/heads", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 openat(AT_FDCWD, ".git/refs/heads", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 4
5344 getdents64(4, /* 3 entries */, 32768) = 80
5344 stat64(".git/refs/heads/master", {st_mode=S_IFREG|0755, st_size=41, ...}) = 0
5344 lstat64(".git/refs/heads/master", {st_mode=S_IFREG|0755, st_size=41, ...}) = 0
5344 open(".git/refs/heads/master", O_RDONLY|O_LARGEFILE) = 5
5344 read(5, "1c9bcfa1f3ae0f565480249abbf17a8a"..., 255) = 41
5344 read(5, "", 214) = 0
5344 close(5) = 0
5344 getdents64(4, /* 0 entries */, 32768) = 0
5344 close(4) = 0
5344 stat64(".git/refs/tags", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 openat(AT_FDCWD, ".git/refs/tags", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 4
5344 getdents64(4, /* 2 entries */, 32768) = 48
5344 getdents64(4, /* 0 entries */, 32768) = 0
5344 close(4) = 0
5344 getdents64(3, /* 0 entries */, 32768) = 0
5344 close(3) = 0
5344 openat(AT_FDCWD, ".git/objects/pack", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
5344 getdents64(3, /* 2 entries */, 32768) = 48
5344 getdents64(3, /* 0 entries */, 32768) = 0
5344 close(3) = 0
5344 open(".git/objects/info/alternates", O_RDONLY|O_LARGEFILE|O_NOATIME) = -1 ENOENT (No such file or directory)
5344 open(".git/objects/1c/9bcfa1f3ae0f565480249abbf17a8ac7713b47", O_RDONLY|O_LARGEFILE|O_NOATIME) = 3
5344 fstat64(3, {st_mode=S_IFREG|0755, st_size=155, ...}) = 0
5344 mmap2(NULL, 155, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7776000
5344 close(3) = 0
5344 munmap(0xb7776000, 155) = 0
5344 open(".git/info/grafts", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
5344 open(".git/shallow", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
5344 open(".git/index", O_RDONLY|O_LARGEFILE) = 3
5344 fstat64(3, {st_mode=S_IFREG|0755, st_size=262, ...}) = 0
5344 mmap2(NULL, 262, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0xb7776000
5344 close(3) = 0
5344 munmap(0xb7776000, 262) = 0
5344 readlink(".git/index", 0xbfdbeaac, 4096) = -1 EINVAL (Invalid argument)
5344 open(".git/index.lock", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0666) = 3
5344 rt_sigaction(SIGINT, {0x80e5cd0, [INT], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
5344 rt_sigaction(SIGHUP, {0x80e5cd0, [HUP], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
5344 rt_sigaction(SIGTERM, {0x80e5cd0, [TERM], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
5344 rt_sigaction(SIGQUIT, {0x80e5cd0, [QUIT], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
5344 rt_sigaction(SIGPIPE, {0x80e5cd0, [PIPE], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
5344 lstat64("foo1", {st_mode=S_IFREG|0755, st_size=273091, ...}) = 0
5344 open("foo1", O_RDONLY|O_LARGEFILE) = 4
5344 mmap2(NULL, 273091, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7327000
5344 access("/etc/gitconfig", R_OK) = -1 ENOENT (No such file or directory)
5344 access("/home/deg/.gitconfig", R_OK) = 0
5344 open("/home/deg/.gitconfig", O_RDONLY|O_LARGEFILE) = 5
5344 fstat64(5, {st_mode=S_IFREG|0664, st_size=1036, ...}) = 0
5344 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7326000
5344 read(5, "[user]\n name = David Gold"..., 4096) = 1036
5344 read(5, "", 4096) = 0
5344 close(5) = 0
5344 munmap(0xb7326000, 4096) = 0
5344 access(".git/config", R_OK) = 0
5344 open(".git/config", O_RDONLY|O_LARGEFILE) = 5
5344 fstat64(5, {st_mode=S_IFREG|0755, st_size=111, ...}) = 0
5344 mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7323000
5344 read(5, "[core]\n\trepositoryformatversion "..., 16384) = 111
5344 read(5, "", 16384) = 0
5344 close(5) = 0
5344 munmap(0xb7323000, 16384) = 0
5344 open("/etc/gitattributes", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
5344 open(".gitattributes", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
5344 open(".git/info/attributes", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
5344 munmap(0xb7327000, 273091) = 0
5344 close(4) = 0
5344 lstat64("foo2", {st_mode=S_IFREG|0755, st_size=5, ...}) = 0
5344 open("foo2", O_RDONLY|O_LARGEFILE) = 4
5344 read(4, "ddd\r\n", 5) = 5
5344 close(4) = 0
5344 lstat64("test.txt", {st_mode=S_IFREG|0755, st_size=3, ...}) = 0
5344 access(".git/objects/b0/2e7c87fe376a353ea4f014bdb3f5200a946b37", F_OK) = 0
5344 access(".git/objects/2c/bf64f759a62392ad9dfe1fb9c2cdb175876014", F_OK) = 0
5344 access(".git/objects/19/102815663d23f8b75a47e7a01965dcdc96468c", F_OK) = 0
5344 access(".git/objects/97/9e055a30fcf7046465874a5922de39b69b3147", F_OK) = -1 ENOENT (No such file or directory)
5344 gettimeofday({1367708763, 850076}, NULL) = 0
5344 open(".git/objects/97/tmp_obj_7S09fd", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0444) = -1 ENOENT (No such file or directory)
5344 mkdir(".git/objects/97", 0777) = 0
5344 gettimeofday({1367708763, 853804}, NULL) = 0
5344 open(".git/objects/97/tmp_obj_lKMyKb", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0444) = 4
5344 brk(0x858b000) = 0x858b000
5344 brk(0x85bb000) = 0x85bb000
5344 write(4, "x\1+)JMU040`\0b3\23\23\205\264\374|C\206\rz5\355\377\314\263L\355\226"..., 105) = 105
5344 brk(0x85ab000) = 0x85ab000
5344 brk(0x859b000) = 0x859b000
5344 brk(0x858b000) = 0x858b000
5344 brk(0x857b000) = 0x857b000
5344 brk(0x857a000) = 0x857a000
5344 close(4) = 0
5344 link(".git/objects/97/tmp_obj_lKMyKb", ".git/objects/97/9e055a30fcf7046465874a5922de39b69b3147") = 0
5344 unlink(".git/objects/97/tmp_obj_lKMyKb") = 0
5344 brk(0x8578000) = 0x8578000
5344 write(3, "DIRC\0\0\0\2\0\0\0\3Q\205\202\2255\310\326\250Q\205\202\2255\310\326\250\0\0\0\26"..., 281) = 281
5344 fstat64(3, {st_mode=S_IFREG|0755, st_size=281, ...}) = 0
5344 close(3) = 0
5344 rename(".git/index.lock", ".git/index") = 0
5344 access(".git/hooks/pre-commit", X_OK) = -1 ENOENT (No such file or directory)
5344 open(".git/COMMIT_EDITMSG", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3
5344 fstat64(3, {st_mode=S_IFREG|0755, st_size=0, ...}) = 0
5344 mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7366000
5344 time(NULL) = 1367708763
5344 open("/etc/localtime", O_RDONLY|O_CLOEXEC) = 4
5344 fstat64(4, {st_mode=S_IFREG|0644, st_size=2197, ...}) = 0
5344 fstat64(4, {st_mode=S_IFREG|0644, st_size=2197, ...}) = 0
5344 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7365000
5344 read(4, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\0"..., 4096) = 2197
5344 _llseek(4, -2, [2195], SEEK_CUR) = 0
5344 read(4, "\n\n", 4096) = 2
5344 close(4) = 0
5344 munmap(0xb7365000, 4096) = 0
5344 lstat64(".git/HEAD", {st_mode=S_IFREG|0755, st_size=23, ...}) = 0
5344 open(".git/HEAD", O_RDONLY|O_LARGEFILE) = 4
5344 read(4, "ref: refs/heads/master\n", 255) = 23
5344 read(4, "", 232) = 0
5344 close(4) = 0
5344 lstat64(".git/refs/heads/master", {st_mode=S_IFREG|0755, st_size=41, ...}) = 0
5344 open(".git/refs/heads/master", O_RDONLY|O_LARGEFILE) = 4
5344 read(4, "1c9bcfa1f3ae0f565480249abbf17a8a"..., 255) = 41
5344 read(4, "", 214) = 0
5344 close(4) = 0
5344 lstat64(".git/refs/HEAD", 0xbfdbc79c) = -1 ENOENT (No such file or directory)
5344 lstat64(".git/refs/tags/HEAD", 0xbfdbc79c) = -1 ENOENT (No such file or directory)
5344 lstat64(".git/refs/heads/HEAD", 0xbfdbc79c) = -1 ENOENT (No such file or directory)
5344 lstat64(".git/refs/remotes/HEAD", 0xbfdbc79c) = -1 ENOENT (No such file or directory)
5344 lstat64(".git/refs/remotes/HEAD/HEAD", 0xbfdbc79c) = -1 ENOENT (No such file or directory)
5344 lstat64(".git/HEAD", {st_mode=S_IFREG|0755, st_size=23, ...}) = 0
5344 open(".git/HEAD", O_RDONLY|O_LARGEFILE) = 4
5344 read(4, "ref: refs/heads/master\n", 255) = 23
5344 read(4, "", 232) = 0
5344 close(4) = 0
5344 lstat64(".git/refs/heads/master", {st_mode=S_IFREG|0755, st_size=41, ...}) = 0
5344 open(".git/refs/heads/master", O_RDONLY|O_LARGEFILE) = 4
5344 read(4, "1c9bcfa1f3ae0f565480249abbf17a8a"..., 255) = 41
5344 read(4, "", 214) = 0
5344 close(4) = 0
5344 lstat64(".git/refs/HEAD", 0xbfdbc25c) = -1 ENOENT (No such file or directory)
5344 lstat64(".git/refs/tags/HEAD", 0xbfdbc25c) = -1 ENOENT (No such file or directory)
5344 lstat64(".git/refs/heads/HEAD", 0xbfdbc25c) = -1 ENOENT (No such file or directory)
5344 lstat64(".git/refs/remotes/HEAD", 0xbfdbc25c) = -1 ENOENT (No such file or directory)
5344 lstat64(".git/refs/remotes/HEAD/HEAD", 0xbfdbc25c) = -1 ENOENT (No such file or directory)
5344 open(".git/objects/1c/9bcfa1f3ae0f565480249abbf17a8ac7713b47", O_RDONLY|O_LARGEFILE|O_NOATIME) = 4
5344 fstat64(4, {st_mode=S_IFREG|0755, st_size=155, ...}) = 0
5344 mmap2(NULL, 155, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7365000
5344 close(4) = 0
5344 munmap(0xb7365000, 155) = 0
5344 open(".git/objects/1c/9bcfa1f3ae0f565480249abbf17a8ac7713b47", O_RDONLY|O_LARGEFILE|O_NOATIME) = 4
5344 fstat64(4, {st_mode=S_IFREG|0755, st_size=155, ...}) = 0
5344 mmap2(NULL, 155, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7365000
5344 close(4) = 0
5344 munmap(0xb7365000, 155) = 0
5344 open(".git/objects/0b/89efdeef245ed6a0a7eacc5c578629a141f856", O_RDONLY|O_LARGEFILE|O_NOATIME) = 4
5344 fstat64(4, {st_mode=S_IFREG|0755, st_size=74, ...}) = 0
5344 mmap2(NULL, 74, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7365000
5344 close(4) = 0
5344 munmap(0xb7365000, 74) = 0
5344 write(3, "test\n", 5) = 5
5344 close(3) = 0
5344 munmap(0xb7366000, 16384) = 0
5344 open(".git/index", O_RDONLY|O_LARGEFILE) = 3
5344 fstat64(3, {st_mode=S_IFREG|0755, st_size=281, ...}) = 0
5344 mmap2(NULL, 281, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0xb7369000
5344 close(3) = 0
5344 munmap(0xb7369000, 281) = 0
5344 access(".git/objects/97/9e055a30fcf7046465874a5922de39b69b3147", F_OK) = 0
5344 access(".git/hooks/prepare-commit-msg", X_OK) = -1 ENOENT (No such file or directory)
5344 access(".git/hooks/commit-msg", X_OK) = -1 ENOENT (No such file or directory)
5344 open(".git/COMMIT_EDITMSG", O_RDONLY|O_LARGEFILE) = 3
5344 read(3, "test\n", 8192) = 5
5344 read(3, "", 12307) = 0
5344 close(3) = 0
5344 open(".git/objects/97/9e055a30fcf7046465874a5922de39b69b3147", O_RDONLY|O_LARGEFILE|O_NOATIME) = 3
5344 fstat64(3, {st_mode=S_IFREG|0755, st_size=105, ...}) = 0
5344 mmap2(NULL, 105, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7369000
5344 close(3) = 0
5344 munmap(0xb7369000, 105) = 0
5344 access(".git/objects/f6/a0de35d12a3b58f12bf1af4ff629b8b004ad82", F_OK) = -1 ENOENT (No such file or directory)
5344 gettimeofday({1367708763, 922857}, NULL) = 0
5344 open(".git/objects/f6/tmp_obj_ZUhZqb", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0444) = -1 ENOENT (No such file or directory)
5344 mkdir(".git/objects/f6", 0777) = 0
5344 gettimeofday({1367708763, 926340}, NULL) = 0
5344 open(".git/objects/f6/tmp_obj_pC3Jgc", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0444) = 3
5344 brk(0x859f000) = 0x859f000
5344 write(3, "x\1\225\216\301\nB!\20E[\373\25\356\203\30\35u\24\"Z\4}\307\250c=\350\365\302\254\357"..., 153) = 153
5344 brk(0x858f000) = 0x858f000
5344 brk(0x857f000) = 0x857f000
5344 brk(0x857d000) = 0x857d000
5344 close(3) = 0
5344 link(".git/objects/f6/tmp_obj_pC3Jgc", ".git/objects/f6/a0de35d12a3b58f12bf1af4ff629b8b004ad82") = 0
5344 unlink(".git/objects/f6/tmp_obj_pC3Jgc") = 0
5344 brk(0x857b000) = 0x857b000
5344 lstat64(".git/HEAD", {st_mode=S_IFREG|0755, st_size=23, ...}) = 0
5344 open(".git/HEAD", O_RDONLY|O_LARGEFILE) = 3
5344 read(3, "ref: refs/heads/master\n", 255) = 23
5344 read(3, "", 232) = 0
5344 close(3) = 0
5344 lstat64(".git/refs/heads/master", {st_mode=S_IFREG|0755, st_size=41, ...}) = 0
5344 open(".git/refs/heads/master", O_RDONLY|O_LARGEFILE) = 3
5344 read(3, "1c9bcfa1f3ae0f565480249abbf17a8a"..., 255) = 41
5344 read(3, "", 214) = 0
5344 close(3) = 0
5344 stat64(".git", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 stat64(".git/refs", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 stat64(".git/refs/heads", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 readlink(".git/refs/heads/master", 0xbfdbeacc, 4096) = -1 EINVAL (Invalid argument)
5344 open(".git/refs/heads/master.lock", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0666) = 3
5344 lstat64(".git/refs/heads/master", {st_mode=S_IFREG|0755, st_size=41, ...}) = 0
5344 open(".git/refs/heads/master", O_RDONLY|O_LARGEFILE) = 4
5344 read(4, "1c9bcfa1f3ae0f565480249abbf17a8a"..., 255) = 41
5344 read(4, "", 214) = 0
5344 close(4) = 0
5344 open(".git/objects/f6/a0de35d12a3b58f12bf1af4ff629b8b004ad82", O_RDONLY|O_LARGEFILE|O_NOATIME) = 4
5344 fstat64(4, {st_mode=S_IFREG|0755, st_size=153, ...}) = 0
5344 mmap2(NULL, 153, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7369000
5344 close(4) = 0
5344 munmap(0xb7369000, 153) = 0
5344 write(3, "f6a0de35d12a3b58f12bf1af4ff629b8"..., 40) = 40
5344 write(3, "\n", 1) = 1
5344 close(3) = 0
5344 stat64(".git", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 stat64(".git/logs", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 stat64(".git/logs/refs", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 stat64(".git/logs/refs/heads", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 open(".git/logs/refs/heads/master", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0666) = 3
5344 close(3) = 0
5344 open(".git/logs/refs/heads/master", O_WRONLY|O_APPEND|O_LARGEFILE) = 3
5344 write(3, "1c9bcfa1f3ae0f565480249abbf17a8a"..., 143) = 143
5344 close(3) = 0
5344 stat64(".git", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 stat64(".git/logs", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
5344 open(".git/logs/HEAD", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0666) = 3
5344 close(3) = 0
5344 open(".git/logs/HEAD", O_WRONLY|O_APPEND|O_LARGEFILE) = 3
5344 write(3, "1c9bcfa1f3ae0f565480249abbf17a8a"..., 143) = 143
5344 close(3) = 0
5344 rename(".git/refs/heads/master.lock", ".git/refs/heads/master") = 0
5344 unlink(".git/CHERRY_PICK_HEAD") = -1 ENOENT (No such file or directory)
5344 unlink(".git/REVERT_HEAD") = -1 ENOENT (No such file or directory)
5344 unlink(".git/MERGE_HEAD") = -1 ENOENT (No such file or directory)
5344 unlink(".git/MERGE_MSG") = -1 ENOENT (No such file or directory)
5344 unlink(".git/MERGE_MODE") = -1 ENOENT (No such file or directory)
5344 unlink(".git/SQUASH_MSG") = -1 ENOENT (No such file or directory)
5344 access("/etc/gitconfig", R_OK) = -1 ENOENT (No such file or directory)
5344 access("/home/deg/.gitconfig", R_OK) = 0
5344 open("/home/deg/.gitconfig", O_RDONLY|O_LARGEFILE) = 3
5344 fstat64(3, {st_mode=S_IFREG|0664, st_size=1036, ...}) = 0
5344 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7369000
5344 read(3, "[user]\n name = David Gold"..., 4096) = 1036
5344 read(3, "", 4096) = 0
5344 close(3) = 0
5344 munmap(0xb7369000, 4096) = 0
5344 access(".git/config", R_OK) = 0
5344 open(".git/config", O_RDONLY|O_LARGEFILE) = 3
5344 fstat64(3, {st_mode=S_IFREG|0755, st_size=111, ...}) = 0
5344 mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7366000
5344 read(3, "[core]\n\trepositoryformatversion "..., 16384) = 111
5344 read(3, "", 16384) = 0
5344 close(3) = 0
5344 munmap(0xb7366000, 16384) = 0
5344 stat64(".git/rr-cache", 0xbfdbfa40) = -1 ENOENT (No such file or directory)
5344 access(".git/hooks/post-commit", X_OK) = -1 ENOENT (No such file or directory)
5344 lstat64(".git/HEAD", {st_mode=S_IFREG|0755, st_size=23, ...}) = 0
5344 open(".git/HEAD", O_RDONLY|O_LARGEFILE) = 3
5344 read(3, "ref: refs/heads/master\n", 255) = 23
5344 read(3, "", 232) = 0
5344 close(3) = 0
5344 lstat64(".git/refs/heads/master", {st_mode=S_IFREG|0755, st_size=41, ...}) = 0
5344 open(".git/refs/heads/master", O_RDONLY|O_LARGEFILE) = 3
5344 read(3, "f6a0de35d12a3b58f12bf1af4ff629b8"..., 255) = 41
5344 read(3, "", 214) = 0
5344 close(3) = 0
5344 fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
5344 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7369000
5344 open(".git/objects/1c/9bcfa1f3ae0f565480249abbf17a8ac7713b47", O_RDONLY|O_LARGEFILE|O_NOATIME) = 3
5344 fstat64(3, {st_mode=S_IFREG|0755, st_size=155, ...}) = 0
5344 mmap2(NULL, 155, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7368000
5344 close(3) = 0
5344 munmap(0xb7368000, 155) = 0
5344 open(".git/objects/0b/89efdeef245ed6a0a7eacc5c578629a141f856", O_RDONLY|O_LARGEFILE|O_NOATIME) = 3
5344 fstat64(3, {st_mode=S_IFREG|0755, st_size=74, ...}) = 0
5344 mmap2(NULL, 74, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7368000
5344 close(3) = 0
5344 munmap(0xb7368000, 74) = 0
5344 open(".git/objects/f6/a0de35d12a3b58f12bf1af4ff629b8b004ad82", O_RDONLY|O_LARGEFILE|O_NOATIME) = 3
5344 fstat64(3, {st_mode=S_IFREG|0755, st_size=153, ...}) = 0
5344 mmap2(NULL, 153, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7368000
5344 close(3) = 0
5344 munmap(0xb7368000, 153) = 0
5344 open(".git/objects/97/9e055a30fcf7046465874a5922de39b69b3147", O_RDONLY|O_LARGEFILE|O_NOATIME) = 3
5344 fstat64(3, {st_mode=S_IFREG|0755, st_size=105, ...}) = 0
5344 mmap2(NULL, 105, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7368000
5344 close(3) = 0
5344 munmap(0xb7368000, 105) = 0
5344 access(".git/objects/f6/a0de35d12a3b58f12bf1af4ff629b8b004ad82", F_OK) = 0
5344 openat(AT_FDCWD, ".git/objects/f6/", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
5344 getdents64(3, /* 3 entries */, 32768) = 112
5344 getdents64(3, /* 0 entries */, 32768) = 0
5344 close(3) = 0
5344 write(1, "[master f6a0de3] test\n", 22) = 22
5344 lstat64("test.txt", {st_mode=S_IFREG|0755, st_size=3, ...}) = 0
5344 lstat64("test.txt", {st_mode=S_IFREG|0755, st_size=3, ...}) = 0
5344 open("test.txt", O_RDONLY|O_LARGEFILE) = 3
5344 mmap2(NULL, 3, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7368000
5344 close(3) = 0
5344 munmap(0xb7368000, 3) = 0
5344 open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
5344 fstat64(3, {st_mode=S_IFREG|0644, st_size=2570, ...}) = 0
5344 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7368000
5344 read(3, "# Locale name alias data base.\n#"..., 4096) = 2570
5344 read(3, "", 4096) = 0
5344 close(3) = 0
5344 munmap(0xb7368000, 4096) = 0
5344 open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/git.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
5344 open("/usr/share/locale/en_US.utf8/LC_MESSAGES/git.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
5344 open("/usr/share/locale/en_US/LC_MESSAGES/git.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
5344 open("/usr/share/locale/en.UTF-8/LC_MESSAGES/git.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
5344 open("/usr/share/locale/en.utf8/LC_MESSAGES/git.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
5344 open("/usr/share/locale/en/LC_MESSAGES/git.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
5344 open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/git.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
5344 open("/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/git.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
5344 open("/usr/share/locale-langpack/en_US/LC_MESSAGES/git.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
5344 open("/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/git.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
5344 open("/usr/share/locale-langpack/en.utf8/LC_MESSAGES/git.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
5344 open("/usr/share/locale-langpack/en/LC_MESSAGES/git.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
5344 write(1, " 1 file changed, 1 insertion(+)\n", 32) = 32
5344 write(1, " create mode 100644 test.txt\n", 29) = 29
5344 fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
5344 fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
5344 close(1) = 0
5344 munmap(0xb7369000, 4096) = 0
5344 exit_group(0) = ?
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: trouble on windows network share
2013-05-04 23:23 ` David Goldfarb
@ 2013-05-06 9:42 ` Thomas Rast
2013-05-06 9:53 ` David Goldfarb
2013-05-06 13:10 ` Pyeron, Jason J CTR (US)
0 siblings, 2 replies; 17+ messages in thread
From: Thomas Rast @ 2013-05-06 9:42 UTC (permalink / raw)
To: David Goldfarb; +Cc: git@vger.kernel.org
David Goldfarb <deg@degel.com> writes:
> Git works correctly under Linux (Ubuntu 12.04; git 1.7.9.5). I've attached the strace outputs. (Note: for reasons that are probably irrelevant, I needed to run the commands sudo'd. Shout back if this is an issue).
>
> Under Windows 7, Cygwin git 1.7.9, commit fails:
> U:\foo>git commit -m "added foo2"
> error: unable to find 0b89efdeef245ed6a0a7eacc5c578629a141f856
> fatal: 0b89efdeef245ed6a0a7eacc5c578629a141f856 is not a valid object
>
> For what it's worth, note that the file does exist.
> U:\foo>ls -l .git/objects/0b
> total 1024
> -rwxrw-r-- 1 ???????? ???????? 74 May 5 01:15 89efdeef245ed6a0a7eacc5c578629a141f856
>
> (I'm not sure why the permissions are trashed. Seems to be a Cygwin thing, or maybe my Cygwin config. The "??????" also appears on local files, and I believe also with files on the old Buffalo drive, so I don't think it is relevant to the problem). Just in case, here's the same dir, as seen from the Ubuntu VM:
>
> deg@ubuntu:/mnt/users/foo$ ls -l .git/objects/0b
> total 64
> -rwxr-xr-x 0 root root 74 May 5 01:15 89efdeef245ed6a0a7eacc5c578629a141f856
>
> Again, note that there is some user permissions lossage here. I don't know enough about Linux mount or CIFS, and apparently did the mount in a way that everything seems to appear to be stuck owned by root. (same problem I hinted at above). Hope this is not relevant to the problem.
>
> Here's how the same directory looks, when I'm ssh'd into the NAS box itself:
>
> CentralPark:/shares/Users/foo# ls -l .git/objects/0b
> total 64
> -rwxrw-r-- 1 deg share 74 May 5 01:15 89efdeef245ed6a0a7eacc5c578629a141f856
>
> In any event, the symptoms don't seem to be a permissions problem, so all this extra info is probably just a red herring, I hope.
Hrm. What about what Jeff already asked of the OP (and AFAICS never got
a reply)?
} If it's a race condition between the write and the subsequent read in
} the same process, then it would be solved by looking at the object
} later. Does "git cat-file -p 6838761d549cf76033d2e9faf5954e62839eb25d"
} work, or is the object forever inaccessible?
In your case: git cat-file -p 0b89efdeef245ed6a0a7eacc5c578629a141f856
--
Thomas Rast
trast@{inf,student}.ethz.ch
^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: trouble on windows network share
2013-05-06 9:42 ` Thomas Rast
@ 2013-05-06 9:53 ` David Goldfarb
2013-05-06 10:08 ` Thomas Rast
2013-05-06 13:10 ` Pyeron, Jason J CTR (US)
1 sibling, 1 reply; 17+ messages in thread
From: David Goldfarb @ 2013-05-06 9:53 UTC (permalink / raw)
To: Thomas Rast; +Cc: git@vger.kernel.org
Looks like it works.
>From the windows machine:
U:\foo>git cat-file -p 0b89efdeef245ed6a0a7eacc5c578629a141f856
100644 blob b02e7c87fe376a353ea4f014bdb3f5200a946b37 foo1
100644 blob 2cbf64f759a62392ad9dfe1fb9c2cdb175876014 foo2
U:\foo>
Double-checking that nothing was fixed or changed when I earlier committed the file from Linux, here's a second test:
U:\foo>git cat-file -p 0b89efdeef245ed6a0a7eacc5c578629a141f856
100644 blob b02e7c87fe376a353ea4f014bdb3f5200a946b37 foo1
100644 blob 2cbf64f759a62392ad9dfe1fb9c2cdb175876014 foo2
U:\foo>git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# trace1
# trace2
nothing added to commit but untracked files present (use "git add" to track)
U:\foo>git add trace1
U:\foo>git commit trace1 -m "testing"
error: unable to find cecae5b4c87ea21aef513fcfcd5c27fe87e0536f
fatal: cecae5b4c87ea21aef513fcfcd5c27fe87e0536f is not a valid object
U:\foo>git cat-file -p cecae5b4c87ea21aef513fcfcd5c27fe87e0536f
100644 blob b02e7c87fe376a353ea4f014bdb3f5200a946b37 foo1
100644 blob 2cbf64f759a62392ad9dfe1fb9c2cdb175876014 foo2
100644 blob 19102815663d23f8b75a47e7a01965dcdc96468c test.txt
100644 blob c9009b02950964cf1d5281125e6e2f647dd9dc16 trace1
U:\foo>
David
-----Original Message-----
From: Thomas Rast [mailto:trast@inf.ethz.ch]
Sent: Monday, May 06, 2013 12:42 PM
To: David Goldfarb
Cc: git@vger.kernel.org
Subject: Re: trouble on windows network share
David Goldfarb <deg@degel.com> writes:
> Git works correctly under Linux (Ubuntu 12.04; git 1.7.9.5). I've attached the strace outputs. (Note: for reasons that are probably irrelevant, I needed to run the commands sudo'd. Shout back if this is an issue).
>
> Under Windows 7, Cygwin git 1.7.9, commit fails:
> U:\foo>git commit -m "added foo2"
> error: unable to find 0b89efdeef245ed6a0a7eacc5c578629a141f856
> fatal: 0b89efdeef245ed6a0a7eacc5c578629a141f856 is not a valid
> object
>
> For what it's worth, note that the file does exist.
> U:\foo>ls -l .git/objects/0b
> total 1024
> -rwxrw-r-- 1 ???????? ???????? 74 May 5 01:15
> 89efdeef245ed6a0a7eacc5c578629a141f856
>
> (I'm not sure why the permissions are trashed. Seems to be a Cygwin thing, or maybe my Cygwin config. The "??????" also appears on local files, and I believe also with files on the old Buffalo drive, so I don't think it is relevant to the problem). Just in case, here's the same dir, as seen from the Ubuntu VM:
>
> deg@ubuntu:/mnt/users/foo$ ls -l .git/objects/0b
> total 64
> -rwxr-xr-x 0 root root 74 May 5 01:15
> 89efdeef245ed6a0a7eacc5c578629a141f856
>
> Again, note that there is some user permissions lossage here. I don't know enough about Linux mount or CIFS, and apparently did the mount in a way that everything seems to appear to be stuck owned by root. (same problem I hinted at above). Hope this is not relevant to the problem.
>
> Here's how the same directory looks, when I'm ssh'd into the NAS box itself:
>
> CentralPark:/shares/Users/foo# ls -l .git/objects/0b
> total 64
> -rwxrw-r-- 1 deg share 74 May 5 01:15
> 89efdeef245ed6a0a7eacc5c578629a141f856
>
> In any event, the symptoms don't seem to be a permissions problem, so all this extra info is probably just a red herring, I hope.
Hrm. What about what Jeff already asked of the OP (and AFAICS never got a reply)?
} If it's a race condition between the write and the subsequent read in } the same process, then it would be solved by looking at the object } later. Does "git cat-file -p 6838761d549cf76033d2e9faf5954e62839eb25d"
} work, or is the object forever inaccessible?
In your case: git cat-file -p 0b89efdeef245ed6a0a7eacc5c578629a141f856
--
Thomas Rast
trast@{inf,student}.ethz.ch
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: trouble on windows network share
2013-05-06 9:53 ` David Goldfarb
@ 2013-05-06 10:08 ` Thomas Rast
2013-05-06 10:13 ` David Goldfarb
2013-05-06 10:46 ` David Goldfarb
0 siblings, 2 replies; 17+ messages in thread
From: Thomas Rast @ 2013-05-06 10:08 UTC (permalink / raw)
To: David Goldfarb; +Cc: git@vger.kernel.org
David Goldfarb <deg@degel.com> writes:
> Looks like it works.
>
> From the windows machine:
> U:\foo>git cat-file -p 0b89efdeef245ed6a0a7eacc5c578629a141f856
> 100644 blob b02e7c87fe376a353ea4f014bdb3f5200a946b37 foo1
> 100644 blob 2cbf64f759a62392ad9dfe1fb9c2cdb175876014 foo2
>
> U:\foo>
>
>
> Double-checking that nothing was fixed or changed when I earlier committed the file from Linux, here's a second test:
>
>
> U:\foo>git cat-file -p 0b89efdeef245ed6a0a7eacc5c578629a141f856
> 100644 blob b02e7c87fe376a353ea4f014bdb3f5200a946b37 foo1
> 100644 blob 2cbf64f759a62392ad9dfe1fb9c2cdb175876014 foo2
>
> U:\foo>git status
> # On branch master
> # Untracked files:
> # (use "git add <file>..." to include in what will be committed)
> #
> # trace1
> # trace2
> nothing added to commit but untracked files present (use "git add" to track)
>
> U:\foo>git add trace1
>
> U:\foo>git commit trace1 -m "testing"
Note that specifying 'trace1' here is redundant, since you already added
it and had no other staged changes. Perhaps you can re-run a test like
this without the extra argument for comparison. That would tell us if
it matters that the write and read happen in the same process.
> error: unable to find cecae5b4c87ea21aef513fcfcd5c27fe87e0536f
> fatal: cecae5b4c87ea21aef513fcfcd5c27fe87e0536f is not a valid object
>
> U:\foo>git cat-file -p cecae5b4c87ea21aef513fcfcd5c27fe87e0536f
> 100644 blob b02e7c87fe376a353ea4f014bdb3f5200a946b37 foo1
> 100644 blob 2cbf64f759a62392ad9dfe1fb9c2cdb175876014 foo2
> 100644 blob 19102815663d23f8b75a47e7a01965dcdc96468c test.txt
> 100644 blob c9009b02950964cf1d5281125e6e2f647dd9dc16 trace1
I'm inclined to just say that your FS is crazy.
What's unsatisfactory is that we already have a bunch of crazy FS
workarounds in move_temp_to_file(), which is one obvious candidate for
what is going on here. So this wouldn't be something new; just another
craziness to work around.
For example, you could test the theory that rename() has something to do
with it by patching this into move_temp_to_file():
diff --git i/sha1_file.c w/sha1_file.c
index 67e815b..22af015 100644
--- i/sha1_file.c
+++ w/sha1_file.c
@@ -2635,6 +2635,10 @@ int move_temp_to_file(const char *tmpfile, const char *filename)
/* FIXME!!! Collision check here ? */
}
+ if (access(filename, R_OK) < 0)
+ return error("access(%s, R_OK) failed immediately after rename(): %s",
+ filename, strerror(errno));
+
out:
if (adjust_shared_perm(filename))
return error("unable to set permission to '%s'", filename);
--
Thomas Rast
trast@{inf,student}.ethz.ch
^ permalink raw reply related [flat|nested] 17+ messages in thread
* RE: trouble on windows network share
2013-05-06 10:08 ` Thomas Rast
@ 2013-05-06 10:13 ` David Goldfarb
2013-05-06 10:46 ` David Goldfarb
1 sibling, 0 replies; 17+ messages in thread
From: David Goldfarb @ 2013-05-06 10:13 UTC (permalink / raw)
To: Thomas Rast; +Cc: git@vger.kernel.org
Ok. Continuing in the same shell:
U:\foo>git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: trace1
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# trace2
U:\foo>git commit -m "test b"
error: Trying to write ref refs/heads/master with nonexistent object 428dafc292b8396fc7b3c7f692dc9dfe1196a40a
fatal: cannot update HEAD ref
U:\foo>dir /s *a40a
Volume in drive U is Users
Volume Serial Number is FC97-3DA5
Directory of U:\foo\.git\objects\42
05/06/2013 12:26 PM 152 8dafc292b8396fc7b3c7f692dc9dfe1196a40a
1 File(s) 152 bytes
Total Files Listed:
1 File(s) 152 bytes
0 Dir(s) 1,594,477,576,192 bytes free
U:\foo>date
The current date is: Mon 05/06/2013
Enter the new date: (mm-dd-yy)
U:\foo>time
The current time is: 13:10:49.55
Enter the new time:
U:\foo>git cat-file -p 428dafc292b8396fc7b3c7f692dc9dfe1196a40a
tree cecae5b4c87ea21aef513fcfcd5c27fe87e0536f
parent f6a0de35d12a3b58f12bf1af4ff629b8b004ad82
author David Goldfarb <deg@degel.com> 1367834997 +0300
committer David Goldfarb <deg@degel.com> 1367834997 +0300
test b
U:\foo>U:\foo>
David
-----Original Message-----
From: Thomas Rast [mailto:trast@inf.ethz.ch]
Sent: Monday, May 06, 2013 1:08 PM
To: David Goldfarb
Cc: git@vger.kernel.org
Subject: Re: trouble on windows network share
David Goldfarb <deg@degel.com> writes:
> Looks like it works.
>
> From the windows machine:
> U:\foo>git cat-file -p 0b89efdeef245ed6a0a7eacc5c578629a141f856
> 100644 blob b02e7c87fe376a353ea4f014bdb3f5200a946b37 foo1
> 100644 blob 2cbf64f759a62392ad9dfe1fb9c2cdb175876014 foo2
>
> U:\foo>
>
>
> Double-checking that nothing was fixed or changed when I earlier committed the file from Linux, here's a second test:
>
>
> U:\foo>git cat-file -p 0b89efdeef245ed6a0a7eacc5c578629a141f856
> 100644 blob b02e7c87fe376a353ea4f014bdb3f5200a946b37 foo1
> 100644 blob 2cbf64f759a62392ad9dfe1fb9c2cdb175876014 foo2
>
> U:\foo>git status
> # On branch master
> # Untracked files:
> # (use "git add <file>..." to include in what will be committed)
> #
> # trace1
> # trace2
> nothing added to commit but untracked files present (use "git add"
> to track)
>
> U:\foo>git add trace1
>
> U:\foo>git commit trace1 -m "testing"
Note that specifying 'trace1' here is redundant, since you already added it and had no other staged changes. Perhaps you can re-run a test like this without the extra argument for comparison. That would tell us if it matters that the write and read happen in the same process.
> error: unable to find cecae5b4c87ea21aef513fcfcd5c27fe87e0536f
> fatal: cecae5b4c87ea21aef513fcfcd5c27fe87e0536f is not a valid
> object
>
> U:\foo>git cat-file -p cecae5b4c87ea21aef513fcfcd5c27fe87e0536f
> 100644 blob b02e7c87fe376a353ea4f014bdb3f5200a946b37 foo1
> 100644 blob 2cbf64f759a62392ad9dfe1fb9c2cdb175876014 foo2
> 100644 blob 19102815663d23f8b75a47e7a01965dcdc96468c test.txt
> 100644 blob c9009b02950964cf1d5281125e6e2f647dd9dc16 trace1
I'm inclined to just say that your FS is crazy.
What's unsatisfactory is that we already have a bunch of crazy FS workarounds in move_temp_to_file(), which is one obvious candidate for what is going on here. So this wouldn't be something new; just another craziness to work around.
For example, you could test the theory that rename() has something to do with it by patching this into move_temp_to_file():
diff --git i/sha1_file.c w/sha1_file.c
index 67e815b..22af015 100644
--- i/sha1_file.c
+++ w/sha1_file.c
@@ -2635,6 +2635,10 @@ int move_temp_to_file(const char *tmpfile, const char *filename)
/* FIXME!!! Collision check here ? */
}
+ if (access(filename, R_OK) < 0)
+ return error("access(%s, R_OK) failed immediately after rename(): %s",
+ filename, strerror(errno));
+
out:
if (adjust_shared_perm(filename))
return error("unable to set permission to '%s'", filename);
--
Thomas Rast
trast@{inf,student}.ethz.ch
^ permalink raw reply related [flat|nested] 17+ messages in thread
* RE: trouble on windows network share
2013-05-06 10:08 ` Thomas Rast
2013-05-06 10:13 ` David Goldfarb
@ 2013-05-06 10:46 ` David Goldfarb
1 sibling, 0 replies; 17+ messages in thread
From: David Goldfarb @ 2013-05-06 10:46 UTC (permalink / raw)
To: Thomas Rast; +Cc: git@vger.kernel.org
Oops, I earlier missed the second half of your message, where you suggested that I patch move_temp_to_file().
Sorry, I don't have the tool-chain or knowledge to recompile git into this win/Cygwin environment.
What I can do, realistically, is:
- Follow exact instructions.
- (with some obvious hesitation) run executables that you send me.
- Continue whatever tests you want with my existing git.
Note, too, that:
- This is occurring on a standard, off-the-shelf, NAS box, the Western Digital "My Book Live"
- I would guess that the "craziness" has more to do with the box's network stack than with its FS, since it behaves fine when mounted on Linux, but not on Windows.
David
-----Original Message-----
From: David Goldfarb
Sent: Monday, May 06, 2013 1:13 PM
To: 'Thomas Rast'
Cc: git@vger.kernel.org
Subject: RE: trouble on windows network share
Ok. Continuing in the same shell:
U:\foo>git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: trace1
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# trace2
U:\foo>git commit -m "test b"
error: Trying to write ref refs/heads/master with nonexistent object 428dafc292b8396fc7b3c7f692dc9dfe1196a40a
fatal: cannot update HEAD ref
U:\foo>dir /s *a40a
Volume in drive U is Users
Volume Serial Number is FC97-3DA5
Directory of U:\foo\.git\objects\42
05/06/2013 12:26 PM 152 8dafc292b8396fc7b3c7f692dc9dfe1196a40a
1 File(s) 152 bytes
Total Files Listed:
1 File(s) 152 bytes
0 Dir(s) 1,594,477,576,192 bytes free
U:\foo>date
The current date is: Mon 05/06/2013
Enter the new date: (mm-dd-yy)
U:\foo>time
The current time is: 13:10:49.55
Enter the new time:
U:\foo>git cat-file -p 428dafc292b8396fc7b3c7f692dc9dfe1196a40a
tree cecae5b4c87ea21aef513fcfcd5c27fe87e0536f
parent f6a0de35d12a3b58f12bf1af4ff629b8b004ad82
author David Goldfarb <deg@degel.com> 1367834997 +0300
committer David Goldfarb <deg@degel.com> 1367834997 +0300
test b
U:\foo>U:\foo>
David
-----Original Message-----
From: Thomas Rast [mailto:trast@inf.ethz.ch]
Sent: Monday, May 06, 2013 1:08 PM
To: David Goldfarb
Cc: git@vger.kernel.org
Subject: Re: trouble on windows network share
David Goldfarb <deg@degel.com> writes:
> Looks like it works.
>
> From the windows machine:
> U:\foo>git cat-file -p 0b89efdeef245ed6a0a7eacc5c578629a141f856
> 100644 blob b02e7c87fe376a353ea4f014bdb3f5200a946b37 foo1
> 100644 blob 2cbf64f759a62392ad9dfe1fb9c2cdb175876014 foo2
>
> U:\foo>
>
>
> Double-checking that nothing was fixed or changed when I earlier committed the file from Linux, here's a second test:
>
>
> U:\foo>git cat-file -p 0b89efdeef245ed6a0a7eacc5c578629a141f856
> 100644 blob b02e7c87fe376a353ea4f014bdb3f5200a946b37 foo1
> 100644 blob 2cbf64f759a62392ad9dfe1fb9c2cdb175876014 foo2
>
> U:\foo>git status
> # On branch master
> # Untracked files:
> # (use "git add <file>..." to include in what will be committed)
> #
> # trace1
> # trace2
> nothing added to commit but untracked files present (use "git add"
> to track)
>
> U:\foo>git add trace1
>
> U:\foo>git commit trace1 -m "testing"
Note that specifying 'trace1' here is redundant, since you already added it and had no other staged changes. Perhaps you can re-run a test like this without the extra argument for comparison. That would tell us if it matters that the write and read happen in the same process.
> error: unable to find cecae5b4c87ea21aef513fcfcd5c27fe87e0536f
> fatal: cecae5b4c87ea21aef513fcfcd5c27fe87e0536f is not a valid
> object
>
> U:\foo>git cat-file -p cecae5b4c87ea21aef513fcfcd5c27fe87e0536f
> 100644 blob b02e7c87fe376a353ea4f014bdb3f5200a946b37 foo1
> 100644 blob 2cbf64f759a62392ad9dfe1fb9c2cdb175876014 foo2
> 100644 blob 19102815663d23f8b75a47e7a01965dcdc96468c test.txt
> 100644 blob c9009b02950964cf1d5281125e6e2f647dd9dc16 trace1
I'm inclined to just say that your FS is crazy.
What's unsatisfactory is that we already have a bunch of crazy FS workarounds in move_temp_to_file(), which is one obvious candidate for what is going on here. So this wouldn't be something new; just another craziness to work around.
For example, you could test the theory that rename() has something to do with it by patching this into move_temp_to_file():
diff --git i/sha1_file.c w/sha1_file.c
index 67e815b..22af015 100644
--- i/sha1_file.c
+++ w/sha1_file.c
@@ -2635,6 +2635,10 @@ int move_temp_to_file(const char *tmpfile, const char *filename)
/* FIXME!!! Collision check here ? */
}
+ if (access(filename, R_OK) < 0)
+ return error("access(%s, R_OK) failed immediately after rename(): %s",
+ filename, strerror(errno));
+
out:
if (adjust_shared_perm(filename))
return error("unable to set permission to '%s'", filename);
--
Thomas Rast
trast@{inf,student}.ethz.ch
^ permalink raw reply related [flat|nested] 17+ messages in thread
* RE: trouble on windows network share
2013-05-06 9:42 ` Thomas Rast
2013-05-06 9:53 ` David Goldfarb
@ 2013-05-06 13:10 ` Pyeron, Jason J CTR (US)
2013-05-08 9:37 ` David Goldfarb
1 sibling, 1 reply; 17+ messages in thread
From: Pyeron, Jason J CTR (US) @ 2013-05-06 13:10 UTC (permalink / raw)
To: Thomas Rast, David Goldfarb; +Cc: git@vger.kernel.org
[-- Attachment #1: Type: text/plain, Size: 2494 bytes --]
> -----Original Message-----
> From: Thomas Rast
> Sent: Monday, May 06, 2013 5:42 AM
>
> David Goldfarb <deg@degel.com> writes:
>
> > Git works correctly under Linux (Ubuntu 12.04; git 1.7.9.5). I've
> attached the strace outputs. (Note: for reasons that are probably
> irrelevant, I needed to run the commands sudo'd. Shout back if this is
> an issue).
> >
> > Under Windows 7, Cygwin git 1.7.9, commit fails:
> > U:\foo>git commit -m "added foo2"
> > error: unable to find 0b89efdeef245ed6a0a7eacc5c578629a141f856
> > fatal: 0b89efdeef245ed6a0a7eacc5c578629a141f856 is not a valid
> object
> >
> > For what it's worth, note that the file does exist.
> > U:\foo>ls -l .git/objects/0b
> > total 1024
> > -rwxrw-r-- 1 ???????? ???????? 74 May 5 01:15
> 89efdeef245ed6a0a7eacc5c578629a141f856
> >
> > (I'm not sure why the permissions are trashed. Seems to be a Cygwin
> thing, or maybe my Cygwin config. The "??????" also appears on local
> files, and I believe also with files on the old Buffalo drive, so I
> don't think it is relevant to the problem). Just in case, here's the
> same dir, as seen from the Ubuntu VM:
> >
> > deg@ubuntu:/mnt/users/foo$ ls -l .git/objects/0b
> > total 64
> > -rwxr-xr-x 0 root root 74 May 5 01:15
> 89efdeef245ed6a0a7eacc5c578629a141f856
> >
> > Again, note that there is some user permissions lossage here. I don't
> know enough about Linux mount or CIFS, and apparently did the mount in
> a way that everything seems to appear to be stuck owned by root. (same
> problem I hinted at above). Hope this is not relevant to the problem.
> >
> > Here's how the same directory looks, when I'm ssh'd into the NAS box
> itself:
> >
> > CentralPark:/shares/Users/foo# ls -l .git/objects/0b
> > total 64
> > -rwxrw-r-- 1 deg share 74 May 5 01:15
> 89efdeef245ed6a0a7eacc5c578629a141f856
> >
> > In any event, the symptoms don't seem to be a permissions problem, so
> all this extra info is probably just a red herring, I hope.
>
> Hrm. What about what Jeff already asked of the OP (and AFAICS never
> got
> a reply)?
If referring to me, then yes but it was too big for the list.
>
> } If it's a race condition between the write and the subsequent read in
> } the same process, then it would be solved by looking at the object
> } later. Does "git cat-file -p
> 6838761d549cf76033d2e9faf5954e62839eb25d"
> } work, or is the object forever inaccessible?
>
> In your case: git cat-file -p 0b89efdeef245ed6a0a7eacc5c578629a141f856
[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5615 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: trouble on windows network share
2013-05-06 13:10 ` Pyeron, Jason J CTR (US)
@ 2013-05-08 9:37 ` David Goldfarb
2013-05-09 13:52 ` Pyeron, Jason J CTR (US)
0 siblings, 1 reply; 17+ messages in thread
From: David Goldfarb @ 2013-05-08 9:37 UTC (permalink / raw)
To: Pyeron, Jason J CTR (US), Thomas Rast; +Cc: git@vger.kernel.org
Here's one more data point. It suggests that the problem is due to either Cygwin or possibly Git 1.7.9.
My Ubuntu box is actually a VM, hosted by my windows box in VMWare Player.
So, I tried using the VMWare shared folder feature, to mount the Windows U: drive (which is physically on the WD NAS box) as /mnt/hgfs/Host-U on Ubuntu.
Then, I tried linux on the Ubuntu box, fully expecting it to fail as it trampolined through Windows connection to the NAS box).
But, it worked fine.
So, at this point, it became likely that the problem is tied to the different version of Git that I have on the two machines:
- On Ubuntu, git version 1.7.10.4
- On Windows, Cygwin's git version 1.7.9 (which appears to be the latest version for Cygwin).
So, I installed Git on Windows from http://git-scm.com/download/win. Git version 1.8.1.msysgit.1
Triumph: Git on windows works with this git but, on the same file and repo, fails with Cygwin git.
So, either something relevant changed in Git 1.7.10, or (more likely) this is a Cygwin issue.
Jason, are you also using Cygwin git? Are you also using a WD NAS?
David
-----Original Message-----
From: Pyeron, Jason J CTR (US) [mailto:jason.j.pyeron.ctr@mail.mil]
Sent: Monday, May 06, 2013 4:11 PM
To: Thomas Rast; David Goldfarb
Cc: git@vger.kernel.org
Subject: RE: trouble on windows network share
> -----Original Message-----
> From: Thomas Rast
> Sent: Monday, May 06, 2013 5:42 AM
>
> David Goldfarb <deg@degel.com> writes:
>
> > Git works correctly under Linux (Ubuntu 12.04; git 1.7.9.5). I've
> attached the strace outputs. (Note: for reasons that are probably
> irrelevant, I needed to run the commands sudo'd. Shout back if this is
> an issue).
> >
> > Under Windows 7, Cygwin git 1.7.9, commit fails:
> > U:\foo>git commit -m "added foo2"
> > error: unable to find 0b89efdeef245ed6a0a7eacc5c578629a141f856
> > fatal: 0b89efdeef245ed6a0a7eacc5c578629a141f856 is not a valid
> object
> >
> > For what it's worth, note that the file does exist.
> > U:\foo>ls -l .git/objects/0b
> > total 1024
> > -rwxrw-r-- 1 ???????? ???????? 74 May 5 01:15
> 89efdeef245ed6a0a7eacc5c578629a141f856
> >
> > (I'm not sure why the permissions are trashed. Seems to be a Cygwin
> thing, or maybe my Cygwin config. The "??????" also appears on local
> files, and I believe also with files on the old Buffalo drive, so I
> don't think it is relevant to the problem). Just in case, here's the
> same dir, as seen from the Ubuntu VM:
> >
> > deg@ubuntu:/mnt/users/foo$ ls -l .git/objects/0b
> > total 64
> > -rwxr-xr-x 0 root root 74 May 5 01:15
> 89efdeef245ed6a0a7eacc5c578629a141f856
> >
> > Again, note that there is some user permissions lossage here. I don't
> know enough about Linux mount or CIFS, and apparently did the mount in
> a way that everything seems to appear to be stuck owned by root. (same
> problem I hinted at above). Hope this is not relevant to the problem.
> >
> > Here's how the same directory looks, when I'm ssh'd into the NAS box
> itself:
> >
> > CentralPark:/shares/Users/foo# ls -l .git/objects/0b
> > total 64
> > -rwxrw-r-- 1 deg share 74 May 5 01:15
> 89efdeef245ed6a0a7eacc5c578629a141f856
> >
> > In any event, the symptoms don't seem to be a permissions problem, so
> all this extra info is probably just a red herring, I hope.
>
> Hrm. What about what Jeff already asked of the OP (and AFAICS never
> got
> a reply)?
If referring to me, then yes but it was too big for the list.
>
> } If it's a race condition between the write and the subsequent read in
> } the same process, then it would be solved by looking at the object
> } later. Does "git cat-file -p
> 6838761d549cf76033d2e9faf5954e62839eb25d"
> } work, or is the object forever inaccessible?
>
> In your case: git cat-file -p 0b89efdeef245ed6a0a7eacc5c578629a141f856
^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: trouble on windows network share
2013-05-08 9:37 ` David Goldfarb
@ 2013-05-09 13:52 ` Pyeron, Jason J CTR (US)
2013-12-03 16:48 ` Phil Wiffen
0 siblings, 1 reply; 17+ messages in thread
From: Pyeron, Jason J CTR (US) @ 2013-05-09 13:52 UTC (permalink / raw)
To: git@vger.kernel.org; +Cc: David Goldfarb, Thomas Rast
[-- Attachment #1: Type: text/plain, Size: 4358 bytes --]
> -----Original Message-----
> From: David Goldfarb
> Sent: Wednesday, May 08, 2013 5:38 AM
>
> Here's one more data point. It suggests that the problem is due to
> either Cygwin or possibly Git 1.7.9.
>
>
> My Ubuntu box is actually a VM, hosted by my windows box in VMWare
> Player.
>
> So, I tried using the VMWare shared folder feature, to mount the
> Windows U: drive (which is physically on the WD NAS box) as
> /mnt/hgfs/Host-U on Ubuntu.
> Then, I tried linux on the Ubuntu box, fully expecting it to fail as it
> trampolined through Windows connection to the NAS box).
>
> But, it worked fine.
>
> So, at this point, it became likely that the problem is tied to the
> different version of Git that I have on the two machines:
> - On Ubuntu, git version 1.7.10.4
> - On Windows, Cygwin's git version 1.7.9 (which appears to be the
> latest version for Cygwin).
>
> So, I installed Git on Windows from http://git-scm.com/download/win.
> Git version 1.8.1.msysgit.1
>
> Triumph: Git on windows works with this git but, on the same file and
> repo, fails with Cygwin git.
>
> So, either something relevant changed in Git 1.7.10, or (more likely)
> this is a Cygwin issue.
Likely.
>
>
> Jason, are you also using Cygwin git? Are you also using a WD NAS?
Cygwin, yes. I am going to spend some time (likely this weekend) to get the current version to compile on Cygwin.
WD NAS, no. Windows Server 2008 with NTFS file system on internal raid.
>
> David
>
> -----Original Message-----
> From: Pyeron, Jason J CTR (US) [mailto:jason.j.pyeron.ctr@mail.mil]
> Sent: Monday, May 06, 2013 4:11 PM
> To: Thomas Rast; David Goldfarb
> Cc: git@vger.kernel.org
> Subject: RE: trouble on windows network share
>
> > -----Original Message-----
> > From: Thomas Rast
> > Sent: Monday, May 06, 2013 5:42 AM
> >
> > David Goldfarb <deg@degel.com> writes:
> >
> > > Git works correctly under Linux (Ubuntu 12.04; git 1.7.9.5). I've
> > attached the strace outputs. (Note: for reasons that are probably
> > irrelevant, I needed to run the commands sudo'd. Shout back if this
> is
> > an issue).
> > >
> > > Under Windows 7, Cygwin git 1.7.9, commit fails:
> > > U:\foo>git commit -m "added foo2"
> > > error: unable to find 0b89efdeef245ed6a0a7eacc5c578629a141f856
> > > fatal: 0b89efdeef245ed6a0a7eacc5c578629a141f856 is not a valid
> > object
> > >
> > > For what it's worth, note that the file does exist.
> > > U:\foo>ls -l .git/objects/0b
> > > total 1024
> > > -rwxrw-r-- 1 ???????? ???????? 74 May 5 01:15
> > 89efdeef245ed6a0a7eacc5c578629a141f856
> > >
> > > (I'm not sure why the permissions are trashed. Seems to be a Cygwin
> > thing, or maybe my Cygwin config. The "??????" also appears on local
> > files, and I believe also with files on the old Buffalo drive, so I
> > don't think it is relevant to the problem). Just in case, here's the
> > same dir, as seen from the Ubuntu VM:
> > >
> > > deg@ubuntu:/mnt/users/foo$ ls -l .git/objects/0b
> > > total 64
> > > -rwxr-xr-x 0 root root 74 May 5 01:15
> > 89efdeef245ed6a0a7eacc5c578629a141f856
> > >
> > > Again, note that there is some user permissions lossage here. I
> don't
> > know enough about Linux mount or CIFS, and apparently did the mount
> in
> > a way that everything seems to appear to be stuck owned by root.
> (same
> > problem I hinted at above). Hope this is not relevant to the problem.
> > >
> > > Here's how the same directory looks, when I'm ssh'd into the NAS
> box
> > itself:
> > >
> > > CentralPark:/shares/Users/foo# ls -l .git/objects/0b
> > > total 64
> > > -rwxrw-r-- 1 deg share 74 May 5 01:15
> > 89efdeef245ed6a0a7eacc5c578629a141f856
> > >
> > > In any event, the symptoms don't seem to be a permissions problem,
> so
> > all this extra info is probably just a red herring, I hope.
> >
> > Hrm. What about what Jeff already asked of the OP (and AFAICS never
> > got
> > a reply)?
>
> If referring to me, then yes but it was too big for the list.
>
> >
> > } If it's a race condition between the write and the subsequent read
> in
> > } the same process, then it would be solved by looking at the object
> > } later. Does "git cat-file -p
> > 6838761d549cf76033d2e9faf5954e62839eb25d"
> > } work, or is the object forever inaccessible?
> >
> > In your case: git cat-file -p
> 0b89efdeef245ed6a0a7eacc5c578629a141f856
>
[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5615 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: trouble on windows network share
2013-05-09 13:52 ` Pyeron, Jason J CTR (US)
@ 2013-12-03 16:48 ` Phil Wiffen
2013-12-03 17:30 ` Pyeron, Jason J CTR (US)
0 siblings, 1 reply; 17+ messages in thread
From: Phil Wiffen @ 2013-12-03 16:48 UTC (permalink / raw)
To: git
Did anyone ever get to the bottom of this? I'm seeing this exact issue on
both NetApp storage systems with SMB 2.x enabled and also on Windows 7 and
Server 2008 R2 shares (which also use SMB 2.x). If we use SMB 1.x (such as
XP), things work fine.
^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: trouble on windows network share
2013-12-03 16:48 ` Phil Wiffen
@ 2013-12-03 17:30 ` Pyeron, Jason J CTR (US)
0 siblings, 0 replies; 17+ messages in thread
From: Pyeron, Jason J CTR (US) @ 2013-12-03 17:30 UTC (permalink / raw)
To: Phil Wiffen, git@vger.kernel.org
[-- Attachment #1: Type: text/plain, Size: 787 bytes --]
That is a new detail (SMB 1 vs. 2) that can be used to debug this further.
> -----Original Message-----
> From: git-owner@vger.kernel.org [mailto:git-owner@vger.kernel.org] On
> Behalf Of Phil Wiffen
> Sent: Tuesday, December 03, 2013 11:48 AM
> To: git@vger.kernel.org
> Subject: Re: trouble on windows network share
>
> Did anyone ever get to the bottom of this? I'm seeing this exact issue
> on
> both NetApp storage systems with SMB 2.x enabled and also on Windows 7
> and
> Server 2008 R2 shares (which also use SMB 2.x). If we use SMB 1.x (such
> as
> XP), things work fine.
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5615 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2013-12-03 17:40 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-04 15:01 trouble on windows network share Pyeron, Jason J CTR (US)
2013-04-04 15:51 ` Jeff King
2013-04-05 12:44 ` Pyeron, Jason J CTR (US)
2013-04-11 4:56 ` Jeff King
2013-05-02 21:26 ` deg
2013-05-03 9:27 ` Thomas Rast
2013-05-04 23:23 ` David Goldfarb
2013-05-06 9:42 ` Thomas Rast
2013-05-06 9:53 ` David Goldfarb
2013-05-06 10:08 ` Thomas Rast
2013-05-06 10:13 ` David Goldfarb
2013-05-06 10:46 ` David Goldfarb
2013-05-06 13:10 ` Pyeron, Jason J CTR (US)
2013-05-08 9:37 ` David Goldfarb
2013-05-09 13:52 ` Pyeron, Jason J CTR (US)
2013-12-03 16:48 ` Phil Wiffen
2013-12-03 17:30 ` Pyeron, Jason J CTR (US)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).