summaryrefslogtreecommitdiff
path: root/open_issues
diff options
context:
space:
mode:
authorArne Babenhauserheide <arne_bab@web.de>2011-06-19 15:14:48 +0200
committerArne Babenhauserheide <arne_bab@web.de>2011-06-19 15:14:48 +0200
commite7256d0f7904277dd954e7e00ea30037cdaf3212 (patch)
treeb8dc9bcdcd760fac7d4410db15aea73b004f0cfa /open_issues
parentf1e6f967f45bc86dd983f685f485e41cf4e8d3a6 (diff)
parent0af46c58452d63160097c8d5480cd16eac4b49c8 (diff)
Merge branch 'master' of flubber:~hurd-web/hurd-web
Diffstat (limited to 'open_issues')
-rw-r--r--open_issues/git-core-2.mdwn92
-rw-r--r--open_issues/git_duplicated_content.mdwn131
-rw-r--r--open_issues/git_nfs_mmap.mdwn48
-rw-r--r--open_issues/nightly_builds.mdwn2
4 files changed, 271 insertions, 2 deletions
diff --git a/open_issues/git-core-2.mdwn b/open_issues/git-core-2.mdwn
index 2cac56f2..2d8ad96b 100644
--- a/open_issues/git-core-2.mdwn
+++ b/open_issues/git-core-2.mdwn
@@ -1,4 +1,4 @@
-[[!meta copyright="Copyright © 2008, 2009, 2010 Free Software Foundation,
+[[!meta copyright="Copyright © 2008, 2009, 2010, 2011 Free Software Foundation,
Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
@@ -13,6 +13,13 @@ License|/fdl]]."]]"""]]
[[!tag open_issue_porting]]
+[[!toc]]
+
+
+# Log
+
+December, 2008.
+
On the otherwise-idle flubber:
$ git clone git://sources.redhat.com/git/glibc.git
@@ -98,3 +105,86 @@ differences to HEAD.
fatal: cannot pread pack file: Interrupted system call
fatal: index-pack failed
error: Could not fetch savannah
+
+---
+
+2011-06-10, coulomb.SCHWINGE, checking out [[binutils]]' master branch,
+starting from an empty working directory (after an external `git push`):
+
+ $ git checkout -f
+ fatal: cannot create directory at 'gas/testsuite/gas/bfin': Interrupted system call
+ $ git checkout -f
+ error: unable to create file gas/testsuite/gas/i386/ilp32/x86-64-sse4_1-intel.d (File exists)
+ warning: unable to unlink gas/testsuite/gas/m68k-coff: Operation not permitted
+ fatal: cannot create directory at 'gas/testsuite/gas/m68k-coff': Operation not permitted
+ $ git checkout -f
+ error: unable to create file gas/testsuite/gas/h8300/h8300.exp (File exists)
+ error: unable to create file gas/testsuite/gas/i386/x86-64-addr32-intel.d (File exists)
+ error: unable to create file gas/testsuite/gas/ia64/secname.d (File exists)
+ error: unable to create file gas/testsuite/gas/m68k/pr11676.s (File exists)
+ Checking out files: 100% (12315/12315), done.
+ $ git status
+ # On branch master
+ # Changes not staged for commit:
+ # (use "git add <file>..." to update what will be committed)
+ # (use "git checkout -- <file>..." to discard changes in working directory)
+ #
+ # modified: gas/testsuite/gas/h8300/h8300.exp
+ # modified: gas/testsuite/gas/i386/x86-64-addr32-intel.d
+ # modified: gas/testsuite/gas/ia64/secname.d
+ # modified: gas/testsuite/gas/m68k/pr11676.s
+ #
+ no changes added to commit (use "git add" and/or "git commit -a")
+ $ rm gas/testsuite/gas/h8300/h8300.exp gas/testsuite/gas/i386/x86-64-addr32-intel.d gas/testsuite/gas/ia64/secname.d gas/testsuite/gas/m68k/pr11676.s
+ $ git checkout -f
+ $ git status
+ # On branch master
+ nothing to commit (working directory clean)
+
+
+# Analysis
+
+2011-06-13
+
+Running `git checkout -f` under GDB:
+
+ error: git checkout-index: unable to create file gas/testsuite/gas/cris/string-1.s (File exists)
+ error: git checkout-index: unable to create file gas/testsuite/gas/i386/x86-64-sse-check.d (File exists)
+ error: git checkout-index: unable to create file gas/testsuite/gas/i386/x86-64-sse4_1.d (File exists)
+ error: git checkout-index: unable to create file gas/testsuite/gas/ppc/astest.d (File exists)
+ error: git checkout-index: unable to create file gas/testsuite/gas/tic6x/reloc-bad-4.s (File exists)
+ warning: unable to unlink include/cgen: Operation not permitted
+ fatal: cannot create directory at 'include/cgen': Operation not permitted
+
+Again:
+
+ error: git checkout-index: unable to create file gas/config/te-vxworks.h (File exists)
+ error: git checkout-index: unable to create file gas/testsuite/gas/cris/string-1.s (File exists)
+ error: git checkout-index: unable to create file gas/testsuite/gas/d10v/warning-019.s (File exists)
+ error: git checkout-index: unable to create file gas/testsuite/gas/i860/dual03.s (File exists)
+ error: git checkout-index: unable to create file ld/testsuite/ld-mmix/sec-7a.s (File exists)
+ warning: unable to unlink ld/testsuite/ld-powerpc: Operation not permitted
+ fatal: cannot create directory at 'ld/testsuite/ld-powerpc': Operation not permitted
+
+And: [[git_duplicated_content]].
+
+All these (very likely) have the same root cause: `SA_RESTART` restarting too
+much.
+
+With `git checkout`, Git uses in progress.c a SIGALRM handler (`SA_RESTART`;
+invoked every second via `setitimer(ITIMER_REAL)`) to display status messages:
+*x % already checked out*.
+
+To avoid the status update signals every second, in
+`[git]/progress.c:start_progress_delay` we can just return `NULL` (manually in
+GDB, for example), then both the *error: git checkout-index* and the
+[[duplicated content|git_duplicated_content]] issues go away.
+
+I'm guessing that when returning from a `SA_RESTART` signal handler, too much
+of the \`\`syscall''s is being restarted. For example, if a file has already
+been created, the restarted creation attempt would fail: *File exists*. If
+data has been written, it might get written again (duplication issue). Then,
+there are cases where `unlink` apparently returns EINTR, which is not kosher
+either. Etc.
+
+Do we have problems with `SA_RESTART` vs. the atomicity of our syscall-alikes?
diff --git a/open_issues/git_duplicated_content.mdwn b/open_issues/git_duplicated_content.mdwn
new file mode 100644
index 00000000..cbc171a7
--- /dev/null
+++ b/open_issues/git_duplicated_content.mdwn
@@ -0,0 +1,131 @@
+[[!meta copyright="Copyright © 2011 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!tag open_issue_porting]]
+
+ $ git-new-workdir ~/tmp/binutils/git /media/hd1s1/tmp/master master
+ error: unable to create file gas/testsuite/gas/arm/attr-mfpu-vfpv3-d16.d (Interrupted system call)
+ Checking out files: 100% (12315/12315), done.
+ Already on 'master'
+ $ cd /media/hd1s1/tmp/master
+ $ git status
+ # On branch master
+ # Changes not staged for commit:
+ # (use "git add <file>..." to update what will be committed)
+ # (use "git checkout -- <file>..." to discard changes in working directory)
+ #
+ # modified: gas/testsuite/gas/arm/attr-mfpu-vfpv3-d16.d
+ #
+ no changes added to commit (use "git add" and/or "git commit -a")
+ $ git checkout -f
+ $ git status
+ # On branch master
+ nothing to commit (working directory clean)
+
+([[Git issue|git-core-2]] is known.)
+
+ $ git-new-workdir ~/tmp/binutils/git /media/hd1s2/tmp/master master
+ error: unable to create file bfd/elf32-dlx.c (Interrupted system call)
+ error: unable to create file bfd/sunos.c (Interrupted system call)
+ error: unable to create file gas/testsuite/gas/arm/attr-mfpu-vfpv3-d16.d (Interrupted system call)
+ error: unable to create file gas/testsuite/gas/mmix/regx-op.d (Interrupted system call)
+ error: unable to create file gas/testsuite/gas/tic6x/reloc-bad-4.s (Interrupted system call)
+ error: unable to create file gold/testsuite/script_test_2.t (Interrupted system call)
+ error: unable to create file ld/testsuite/ld-mmix/loc7m.d (Interrupted system call)
+ error: unable to create file ld/testsuite/ld-powerpc/tlsexe.g (Interrupted system call)
+ Checking out files: 100% (12315/12315), done.
+ Already on 'master'
+ $ cd /media/hd1s2/tmp/master
+ $ git status
+ # On branch master
+ # Changes not staged for commit:
+ # (use "git add <file>..." to update what will be committed)
+ # (use "git checkout -- <file>..." to discard changes in working directory)
+ #
+ # modified: bfd/elf32-dlx.c
+ # modified: bfd/sunos.c
+ # modified: gas/testsuite/gas/arm/attr-mfpu-vfpv3-d16.d
+ # modified: gas/testsuite/gas/mmix/regx-op.d
+ # modified: gas/testsuite/gas/tic6x/reloc-bad-4.s
+ # modified: gold/testsuite/script_test_2.t
+ # modified: ld/testsuite/ld-mmix/loc7m.d
+ # modified: ld/testsuite/ld-powerpc/tlsexe.g
+ #
+ no changes added to commit (use "git add" and/or "git commit -a")
+ $ git checkout -f
+ $ git status
+ # On branch master
+ nothing to commit (working directory clean)
+
+Now you'd expect these directories to have identical content, but:
+
+ $ diff -x .git -ru /media/hd1s{1,2}/tmp/master/ > /tmp/diff
+ $ ls -l /tmp/diff
+ -rw-r--r-- 1 thomas thomas 613677 10. Jun 19:12 /tmp/diff
+ $ grep '^[^ @+-]' < /tmp/diff
+ diff -x .git -ru /media/hd1s1/tmp/master//ld/configure /media/hd1s2/tmp/master//ld/configure
+
+(Note that this isn't a file that Git had issues with.)
+
+Try again:
+
+ $ diff -x .git -ru /media/hd1s{1,2}/tmp/master/ > /tmp/diff_
+ $ ls -l /tmp/diff*
+ -rw-r--r-- 1 thomas thomas 613677 10. Jun 19:12 /tmp/diff
+ -rw-r--r-- 1 thomas thomas 613677 10. Jun 19:17 /tmp/diff_
+ $ cmp /tmp/diff{,_}; echo $?
+ 0
+
+At least it's consistent. Force a reload:
+
+ # settrans -ag /media/hd1s1
+ # settrans -ag /media/hd1s2
+
+Try again:
+
+ $ diff -x .git -ru /media/hd1s{1,2}/tmp/master/ > /tmp/diff__
+ $ ls -l /tmp/diff*
+ -rw-r--r-- 1 thomas thomas 613677 10. Jun 19:12 /tmp/diff
+ -rw-r--r-- 1 thomas thomas 613677 10. Jun 19:17 /tmp/diff_
+ -rw-r--r-- 1 thomas thomas 613677 10. Jun 19:30 /tmp/diff__
+ $ cmp /tmp/diff{,__}; echo $?
+ 0
+
+Consistent; thus very likely corrupt on-disk.
+
+After a few tries, the pattern generally is that for the files where there are
+differences, once the file regularely ends, its content appears once more.
+That is, the files' content appears once (regularely), and then the same again.
+
+Some more copying:
+
+ $ (cd /media/hd1s1/tmp/ && cp -a master master_)
+ $ (cd /media/hd1s2/tmp/ && cp -a master master_)
+ $ diff -x .git -ru /media/hd1s1/tmp/master{,_}/ > /tmp/diff1
+ $ diff -x .git -ru /media/hd1s2/tmp/master{,_}/ > /tmp/diff2
+ $ ls -l /tmp/diff{1,2}
+ -rw-r--r-- 1 thomas thomas 0 10. Jun 19:46 /tmp/diff1
+ -rw-r--r-- 1 thomas thomas 0 10. Jun 19:46 /tmp/diff2
+
+No further difference.
+
+---
+
+ $ git-new-workdir git master master
+ $ diff -x .git -ur tar_master/ master/ > master.diff
+
+ $ rm -rf ar_master* && (cd git/ && git archive master) | (mkdir ar_master && cd ar_master/ && tar -x) && diff -x .git -ru tar_master/ ar_master/ > ar_master.diff; ls -l ar_master.diff
+ $ (cd git/ && git archive master) | md5sum
+
+---
+
+2011-06-13
+
+-> [[git-core-2]]
diff --git a/open_issues/git_nfs_mmap.mdwn b/open_issues/git_nfs_mmap.mdwn
new file mode 100644
index 00000000..b7e86491
--- /dev/null
+++ b/open_issues/git_nfs_mmap.mdwn
@@ -0,0 +1,48 @@
+[[!meta copyright="Copyright © 2011 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!tag open_issue_hurd open_issue_porting]]
+
+ $ git-new-workdir /media/kepler-data/home/thomas/tmp/source/binutils/git master master
+ fatal: Out of memory? mmap failed: No such device
+ $ echo $?
+ 128
+ $ showtrans /media/kepler-data
+ /hurd/nfs kepler.schwinge.homeip.net:/media/data
+
+With `sh -x`:
+
+ [...]
+ + ln -s /media/kepler-data/home/thomas/tmp/source/binutils/git/.git/remotes master/.git/remotes
+ + ln -s /media/kepler-data/home/thomas/tmp/source/binutils/git/.git/rr-cache master/.git/rr-cache
+ + ln -s /media/kepler-data/home/thomas/tmp/source/binutils/git/.git/svn master/.git/svn
+ + cd master
+ + cp /media/kepler-data/home/thomas/tmp/source/binutils/git/.git/HEAD .git/HEAD
+ + git checkout -f master
+ fatal: Out of memory? mmap failed: No such device
+
+As one can easily guess (and confirm with [[hurd/debugging/rpctrace]]), `git`
+tries to [[glibc/mmap]] a file via the [[hurd/translator/nfs]] translator, this
+fails, and it isn't prepared to cope with that:
+
+ [...]
+ 88->dir_lookup (".git/objects/pack/pack-37ca560e7877fa0cc6e5ddcd556aa73e5a3e3f40.idx" 2049 0) = 0 3 "/media/kepler-data/home/thomas/tmp/source/binutils/git/.git/objects/pack/pack-37" (null)
+ 62->dir_lookup ("media/kepler-data/home/thomas/tmp/source/binutils/git/.git/objects/pack/pack-37c" 2049 0) = 0 1 "/home/thomas/tmp/source/binutils/git/.git/objects/pack/pack-37ca560e7877fa0cc6e5" 61
+ 61->dir_lookup ("home/thomas/tmp/source/binutils/git/.git/objects/pack/pack-37ca560e7877fa0cc6e5d" 2049 0) = 0 1 "" 84
+ task3741-> 3206 (pn{ 33}) = 0
+ 84->term_getctty () = 0xfffffed1 ((ipc/mig) bad request message ID)
+ 84->io_stat_request () = 0 {1 704 0 36308992 0 0 -1 33060 1 1000 1000 4712 0 1307711395 0 1307657003 0 1307657003 0 4096 16 0 1000 0 0 100663296 1836017780 29537 0 0 0 0}
+ 84->io_map_request () = 0x4000002d (Operation not supported)
+ 84->io_map_request () = 0x4000002d (Operation not supported)
+ 76->io_write_request ("fatal: Out of memory? mmap failed: No such device
+ " -1) = 0 50
+ 64->proc_mark_exit_request (32768 0) = 0
+ task3741-> 2008 () = 0
+ Child 3741 exited with 128
diff --git a/open_issues/nightly_builds.mdwn b/open_issues/nightly_builds.mdwn
index 5d1257fb..6eef7d19 100644
--- a/open_issues/nightly_builds.mdwn
+++ b/open_issues/nightly_builds.mdwn
@@ -20,7 +20,7 @@ Resources:
* As reported in the [[news/2010-05-31]] news, there's Hydra doing nightly
builds / Nix packages.
- * <http://hudson-ci.org/>
+ * <http://hudson-ci.org/>, <http://jenkins-ci.org/>
* <http://buildbot.net/>