{"thread":{"id":"26182","subject":"git-daemon serving repos with repo.git/git-daemon-export-ok","startedAt":"2011-01-03T21:49:41Z","lastAt":"2011-01-04T03:09:15Z","messageCount":8,"participants":["John Griessen","Jonathan Nieder"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"158854","messageId":"4D224475.1090805@ecosensory.com","threadId":"26182","inReplyTo":"S1751603Ab1ACU6e/20110103205834Z+1762@vger.kernel.org","subject":"git-daemon serving repos with repo.git/git-daemon-export-ok","fromName":"John Griessen","fromEmail":"john@ecosensory.com","sentAt":"2011-01-03T21:49:41Z","receivedAt":"2011-01-03T21:49:41Z","isPatch":false,"sender":{"key":"john@ecosensory.com","avatar":"https://gravatar.com/avatar/2716764948580f078b30fc52ca8d23f4c30516df18f2e9867bd97ef49fe6e0c2?d=mp&s=160"},"body":"I would like to serving repos with repo.git/git-daemon-export-ok from a debian linux server installation,\nbut I am getting symptoms of clone failing.\n\njohn@toolbench:~/EEProjects/test$ git clone git://ecosensory.com/tek_7k_ext.git\nCloning into tek_7k_ext...\nfatal: protocol error: bad line length character: fata\n\nI've read that that is due to the shell at the client end putting out extra characters...\nbut other testers on other machines get it the same way...\n\n\nNext I tried changing my command that runs git-daemon\nfrom\n\nexec 2>&1\necho 'git-daemon starting.'\nexec chpst -ugitdaemon \\\n   \"$(git --exec-path)\"/git-daemon --verbose --base-path=/var/cache /var/cache/git\n\nto\n\nexec 2>&1\necho 'git-daemon starting.'\nexec chpst -ugitdaemon \\\n   \"$(git --exec-path)\"/git-daemon --verbose --base-path=/srv/gitosis /srv/gitosis/repositories\n\nand results are:\n\njohn@toolbench:~/EEProjects/test$  git clone git://ecosensory.com/tek_7k_ext.git\nCloning into tek_7k_ext...\nfatal: protocol error: bad line length character: fata\njohn@toolbench:~/EEProjects/test$  git clone git://ecosensory.com/repositories/tek_7k_ext.git\nCloning into tek_7k_ext...\nfatal: protocol error: bad line length character: fata\n\n\nWhat can I do to simplify this testing and pin point the problem?\n\nOr is gitweb recommended?\n\nthanks,\n\nJohn Griessen\n"},{"id":"158856","messageId":"4D22520A.40108@ecosensory.com","threadId":"26182","inReplyTo":"4D224475.1090805@ecosensory.com","subject":"Re: git-daemon serving repos with repo.git/git-daemon-export-ok","fromName":"John Griessen","fromEmail":"john@ecosensory.com","sentAt":"2011-01-03T22:47:38Z","receivedAt":"2011-01-03T22:47:38Z","isPatch":false,"sender":{"key":"john@ecosensory.com","avatar":"https://gravatar.com/avatar/2716764948580f078b30fc52ca8d23f4c30516df18f2e9867bd97ef49fe6e0c2?d=mp&s=160"},"body":"On 01/03/2011 03:49 PM, John Griessen wrote:\n> I would like to serve repos with repo.git/git-daemon-export-ok from a debian linux server installation\non a  virtual server (openVZ) --  I've read there is something bad about virtual servers and git-daemon?\n\nJohn G\n"},{"id":"158857","messageId":"20110103231153.GA10733@burratino","threadId":"26182","inReplyTo":"4D224475.1090805@ecosensory.com","subject":"Re: git-daemon serving repos with repo.git/git-daemon-export-ok","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-01-03T23:11:53Z","receivedAt":"2011-01-03T23:11:53Z","isPatch":false,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Hi John,\n\nJohn Griessen wrote:\n\n> john@toolbench:~/EEProjects/test$ git clone git://ecosensory.com/tek_7k_ext.git\n> Cloning into tek_7k_ext...\n> fatal: protocol error: bad line length character: fata\n[...]\n> Next I tried changing my command that runs git-daemon\n> from\n> \n> exec 2>&1\n> echo 'git-daemon starting.'\n> exec chpst -ugitdaemon \\\n>   \"$(git --exec-path)\"/git-daemon --verbose --base-path=/var/cache /var/cache/git\n\nWorrisome.  Based on /usr/share/doc/git-daemon-run/README.Debian,\nI would be interested in:\n\n\tgit --version\n\tdpkg -l git-daemon-run\n\tsv stat git-daemon\n\tcat /var/log/git-daemon/current\n\nIt looks like the daemon is sending a malformed reply starting with\n\"fatal: \", similar to the bug fixed by v1.7.0.3~7 (daemon:\nparse_host_and_port SIGSEGV if port is specified, 2010-03-20).\n\nIt the error message does not provide any insight, I'd also suggest\nusing strace or ltrace to attach to the running git-daemon process to\nsee what's going on.\n\nThanks for reporting,\nJonathan\n"},{"id":"158859","messageId":"4D225DFA.50805@ecosensory.com","threadId":"26182","inReplyTo":"20110103231153.GA10733@burratino","subject":"Re: git-daemon serving repos with repo.git/git-daemon-export-ok","fromName":"John Griessen","fromEmail":"john@ecosensory.com","sentAt":"2011-01-03T23:38:34Z","receivedAt":"2011-01-03T23:38:34Z","isPatch":false,"sender":{"key":"john@ecosensory.com","avatar":"https://gravatar.com/avatar/2716764948580f078b30fc52ca8d23f4c30516df18f2e9867bd97ef49fe6e0c2?d=mp&s=160"},"body":"On 01/03/2011 05:11 PM, Jonathan Nieder wrote:\n> Hi John,\n\n>\n> Worrisome.  Based on /usr/share/doc/git-daemon-run/README.Debian,\n> I would be interested in:\n>\n> \tgit --version\nserver:\nvking@mail:/etc/sv$ git --version\ngit version 1.7.2.3\n\nclient:\njohn@toolbench:~/EEProjects/tek_7k_ext$ git version 1.7.2.3\ngit version 1.7.2.3\n\n> \tdpkg -l git-daemon-run\n\ndpkg -l git-daemon-run\nDesired=Unknown/Install/Remove/Purge/Hold\n| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend\n|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)\n||/ Name                           Version                        Description\n+++-==============================-==============================-============================================================================\npc  git-daemon-run                 1:1.7.2.3-2.2                  fast, scalable, distributed revision contro\n\n\n> \tsv stat git-daemon\nvking@mail:/etc/sv$ sv stat git-daemon\nfail: git-daemon: unable to change to service directory: file does not exist\n\nI uninstalled it  so I could run a command line like:\n\nsudo /usr/lib/git-core/git-daemon --verbose --strict-paths --user=git --group=gitosis /srv/gitosis/repositories\nor\nsudo strace -o strace.out /usr/lib/git-core/git-daemon --verbose --strict-paths --user=git --group=gitosis /srv/gitosis/repositories\n\nI can push to these repos with gitosis, and the permissions are:\n\nvking@mail:/srv/gitosis/repositories$ ll\ntotal 16\ndrwxr-xr-x 7 gitosis gitosis 4096 Dec 30 12:32 extrudator.data.git\ndrwxr-xr-x 7 gitosis gitosis 4096 Nov  7 15:23 extrudator.git\ndrwxr-xr-x 8 gitosis gitosis 4096 Jan  3 14:42 gitosis-admin.git\ndrwxr-xr-x 7 gitosis gitosis 4096 Jan  2 23:46 tek_7k_ext.git\n\n/etc/group on server\ngit:x:111:\ngitosis:x:115:git\n\n/etc/passwd on server\ngit:x:106:111:git version control,,,:/home/git:/bin/shh\ngitlog:x:108:65534::/nonexistent:/bin/false\ngitosis:x:110:115:git repository hosting,,,:/srv/gitosis:/bin/sh\n\n\n> \tcat /var/log/git-daemon/current\n\njohn@toolbench:~/EEProjects/tek_7k_ext$ cat /var/log/git-daemon/current\ncat: /var/log/git-daemon/current: No such file or directory\n\n\nThanks for looking at this.\n\nJohn Griessen\n\n===================================strace output================\nvking@mail:/etc/sv$ cat strace.out\nexecve(\"/usr/lib/git-core/git-daemon\", [\"/usr/lib/git-core/git-daemon\", \"--verbose\", \"--strict-paths\", \"--user=git\", \n\"--group=gitosis\", \"/srv/gitosis/repositories\"], [/* 10 vars */]) = 0\nbrk(0)                                  = 0x89c1000\nuname({sys=\"Linux\", node=\"mail.cibolo.us\", ...}) = 0\naccess(\"/etc/ld.so.nohwcap\", F_OK)      = -1 ENOENT (No such file or directory)\nmmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f19000\naccess(\"/etc/ld.so.preload\", R_OK)      = -1 ENOENT (No such file or directory)\nopen(\"/etc/ld.so.cache\", O_RDONLY)      = 3\nfstat64(3, {st_mode=S_IFREG|0644, st_size=22893, ...}) = 0\nmmap2(NULL, 22893, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f13000\nclose(3)                                = 0\naccess(\"/etc/ld.so.nohwcap\", F_OK)      = -1 ENOENT (No such file or directory)\nopen(\"/usr/lib/libz.so.1\", O_RDONLY)    = 3\nread(3, \"\\177ELF\\1\\1\\1\\0\\0\\0\\0\\0\\0\\0\\0\\0\\3\\0\\3\\0\\1\\0\\0\\0\\300\\30\\0\\0004\\0\\0\\0\"..., 512) = 512\nfstat64(3, {st_mode=S_IFREG|0644, st_size=81012, ...}) = 0\nmmap2(NULL, 83740, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x62c000\nmmap2(0x640000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13) = 0x640000\nclose(3)                                = 0\naccess(\"/etc/ld.so.nohwcap\", F_OK)      = -1 ENOENT (No such file or directory)\nopen(\"/lib/libpthread.so.0\", O_RDONLY)  = 3\nread(3, \"\\177ELF\\1\\1\\1\\0\\0\\0\\0\\0\\0\\0\\0\\0\\3\\0\\3\\0\\1\\0\\0\\0`I\\0\\0004\\0\\0\\0\"..., 512) = 512\nfstat64(3, {st_mode=S_IFREG|0755, st_size=117105, ...}) = 0\nmmap2(NULL, 98784, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xbbf000\nmprotect(0xbd3000, 4096, PROT_NONE)     = 0\nmmap2(0xbd4000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14) = 0xbd4000\nmmap2(0xbd6000, 4576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xbd6000\nclose(3)                                = 0\naccess(\"/etc/ld.so.nohwcap\", F_OK)      = -1 ENOENT (No such file or directory)\nopen(\"/lib/libc.so.6\", O_RDONLY)        = 3\nread(3, \"\\177ELF\\1\\1\\1\\0\\0\\0\\0\\0\\0\\0\\0\\0\\3\\0\\3\\0\\1\\0\\0\\0\\320m\\1\\0004\\0\\0\\0\"..., 512) = 512\nfstat64(3, {st_mode=S_IFREG|0755, st_size=1315080, ...}) = 0\nmmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f12000\nmmap2(NULL, 1325384, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x110000\nmmap2(0x24e000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13d) = 0x24e000\nmmap2(0x251000, 10568, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x251000\nclose(3)                                = 0\nmmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f11000\nset_thread_area({entry_number:-1 -> 6, base_addr:0xb7f116c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, \nlimit_in_pages:1, seg_not_present:0, useable:1}) = 0\nopen(\"/dev/urandom\", O_RDONLY)          = 3\nread(3, \"\\367\\3Y\", 3)                   = 3\nclose(3)                                = 0\nmprotect(0x24e000, 8192, PROT_READ)     = 0\nmprotect(0xbd4000, 4096, PROT_READ)     = 0\nmprotect(0x855000, 4096, PROT_READ)     = 0\nmunmap(0xb7f13000, 22893)               = 0\nset_tid_address(0xb7f11728)             = 19676\nset_robust_list(0xb7f11730, 0xc)        = 0\nfutex(0xbf8e5370, FUTEX_WAKE_PRIVATE, 1) = 0\nfutex(0xbf8e5370, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, bf8e5380) = -1 ENOSYS (Function not implemented)\nrt_sigaction(SIGRTMIN, {0xbc33b0, [], SA_RESTORER|SA_SIGINFO, 0xbcce60}, NULL, 8) = 0\nrt_sigaction(SIGRT_1, {0xbc3840, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0xbcce60}, NULL, 8) = 0\nrt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0\ngetrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0\nuname({sys=\"Linux\", node=\"mail.cibolo.us\", ...}) = 0\nbrk(0)                                  = 0x89c1000\nbrk(0x89e2000)                          = 0x89e2000\nsocket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3\nconnect(3, {sa_family=AF_FILE, path=\"/var/run/nscd/socket\"}, 110) = -1 ENOENT (No such file or directory)\nclose(3)                                = 0\nsocket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3\nconnect(3, {sa_family=AF_FILE, path=\"/var/run/nscd/socket\"}, 110) = -1 ENOENT (No such file or directory)\nclose(3)                                = 0\nopen(\"/etc/nsswitch.conf\", O_RDONLY)    = 3\nfstat64(3, {st_mode=S_IFREG|0644, st_size=465, ...}) = 0\nmmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f18000\nread(3, \"# /etc/nsswitch.conf\\n#\\n# Example\"..., 4096) = 465\nread(3, \"\", 4096)                       = 0\nclose(3)                                = 0\nmunmap(0xb7f18000, 4096)                = 0\nopen(\"/etc/ld.so.cache\", O_RDONLY)      = 3\nfstat64(3, {st_mode=S_IFREG|0644, st_size=22893, ...}) = 0\nmmap2(NULL, 22893, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f13000\nclose(3)                                = 0\naccess(\"/etc/ld.so.nohwcap\", F_OK)      = -1 ENOENT (No such file or directory)\nopen(\"/lib/libnss_compat.so.2\", O_RDONLY) = 3\nread(3, \"\\177ELF\\1\\1\\1\\0\\0\\0\\0\\0\\0\\0\\0\\0\\3\\0\\3\\0\\1\\0\\0\\0000\\16\\0\\0004\\0\\0\\0\"..., 512) = 512\nfstat64(3, {st_mode=S_IFREG|0644, st_size=30496, ...}) = 0\nmmap2(NULL, 29268, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x254000\nmmap2(0x25a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6) = 0x25a000\nclose(3)                                = 0\naccess(\"/etc/ld.so.nohwcap\", F_OK)      = -1 ENOENT (No such file or directory)\nopen(\"/lib/libnsl.so.1\", O_RDONLY)      = 3\nread(3, \"\\177ELF\\1\\1\\1\\0\\0\\0\\0\\0\\0\\0\\0\\0\\3\\0\\3\\0\\1\\0\\0\\0\\2201\\0\\0004\\0\\0\\0\"..., 512) = 512\nfstat64(3, {st_mode=S_IFREG|0644, st_size=79676, ...}) = 0\nmmap2(NULL, 92136, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb75000\nmmap2(0xb88000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12) = 0xb88000\nmmap2(0xb8a000, 6120, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb8a000\nclose(3)                                = 0\nmprotect(0xb88000, 4096, PROT_READ)     = 0\nmprotect(0x25a000, 4096, PROT_READ)     = 0\nmunmap(0xb7f13000, 22893)               = 0\nopen(\"/etc/ld.so.cache\", O_RDONLY)      = 3\nfstat64(3, {st_mode=S_IFREG|0644, st_size=22893, ...}) = 0\nmmap2(NULL, 22893, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f13000\nclose(3)                                = 0\naccess(\"/etc/ld.so.nohwcap\", F_OK)      = -1 ENOENT (No such file or directory)\nopen(\"/lib/libnss_nis.so.2\", O_RDONLY)  = 3\nread(3, \"\\177ELF\\1\\1\\1\\0\\0\\0\\0\\0\\0\\0\\0\\0\\3\\0\\3\\0\\1\\0\\0\\0000\\31\\0\\0004\\0\\0\\0\"..., 512) = 512\nfstat64(3, {st_mode=S_IFREG|0644, st_size=38504, ...}) = 0\nmmap2(NULL, 37432, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x75f000\nmmap2(0x767000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8) = 0x767000\nclose(3)                                = 0\naccess(\"/etc/ld.so.nohwcap\", F_OK)      = -1 ENOENT (No such file or directory)\nopen(\"/lib/libnss_files.so.2\", O_RDONLY) = 3\nread(3, \"\\177ELF\\1\\1\\1\\0\\0\\0\\0\\0\\0\\0\\0\\0\\3\\0\\3\\0\\1\\0\\0\\0 \\32\\0\\0004\\0\\0\\0\"..., 512) = 512\nfstat64(3, {st_mode=S_IFREG|0644, st_size=42572, ...}) = 0\nmmap2(NULL, 45772, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x284000\nmmap2(0x28e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9) = 0x28e000\nclose(3)                                = 0\nmprotect(0x28e000, 4096, PROT_READ)     = 0\nmprotect(0x767000, 4096, PROT_READ)     = 0\nmunmap(0xb7f13000, 22893)               = 0\nopen(\"/etc/passwd\", O_RDONLY|O_CLOEXEC) = 3\nfcntl64(3, F_GETFD)                     = 0x1 (flags FD_CLOEXEC)\n_llseek(3, 0, [0], SEEK_CUR)            = 0\nfstat64(3, {st_mode=S_IFREG|0644, st_size=1804, ...}) = 0\nmmap2(NULL, 1804, PROT_READ, MAP_SHARED, 3, 0) = 0xb7f18000\n_llseek(3, 1804, [1804], SEEK_SET)      = 0\nmunmap(0xb7f18000, 1804)                = 0\nclose(3)                                = 0\nsocket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3\nconnect(3, {sa_family=AF_FILE, path=\"/var/run/nscd/socket\"}, 110) = -1 ENOENT (No such file or directory)\nclose(3)                                = 0\nsocket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3\nconnect(3, {sa_family=AF_FILE, path=\"/var/run/nscd/socket\"}, 110) = -1 ENOENT (No such file or directory)\nclose(3)                                = 0\nopen(\"/etc/group\", O_RDONLY|O_CLOEXEC)  = 3\n_llseek(3, 0, [0], SEEK_CUR)            = 0\nfstat64(3, {st_mode=S_IFREG|0644, st_size=836, ...}) = 0\nmmap2(NULL, 836, PROT_READ, MAP_SHARED, 3, 0) = 0xb7f18000\n_llseek(3, 836, [836], SEEK_SET)        = 0\nmunmap(0xb7f18000, 836)                 = 0\nclose(3)                                = 0\nopen(\"/dev/null\", O_RDWR|O_LARGEFILE)   = 3\nclose(3)                                = 0\nsocket(PF_NETLINK, SOCK_RAW, 0)         = 3\nbind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0\ngetsockname(3, {sa_family=AF_NETLINK, pid=19676, groups=00000000}, [12]) = 0\ntime(NULL)                              = 1294097104\nsendto(3, \"\\24\\0\\0\\0\\26\\0\\1\\3\\320Z\\\"M\\0\\0\\0\\0\\0\\0\\0\\0\", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20\nrecvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, \nmsg_iov(1)=[{\"<\\0\\0\\0\\24\\0\\2\\0\\320Z\\\"M\\334L\\0\\0\\2\\10\\200\\376\\1\\0\\0\\0\\10\\0\\1\\0\\177\\0\\0\\1\"..., 4096}], msg_controllen=0, \nmsg_flags=0}, 0) = 240\nrecvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, \nmsg_iov(1)=[{\"@\\0\\0\\0\\24\\0\\2\\0\\320Z\\\"M\\334L\\0\\0\\n\\200\\200\\376\\1\\0\\0\\0\\24\\0\\1\\0\\0\\0\\0\\0\"..., 4096}], msg_controllen=0, \nmsg_flags=0}, 0) = 64\nrecvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, \nmsg_iov(1)=[{\"\\24\\0\\0\\0\\3\\0\\2\\0\\320Z\\\"M\\334L\\0\\0\\0\\0\\0\\0\\1\\0\\0\\0\\24\\0\\1\\0\\0\\0\\0\\0\"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 20\nclose(3)                                = 0\nopen(\"/etc/gai.conf\", O_RDONLY)         = 3\nfstat64(3, {st_mode=S_IFREG|0644, st_size=2940, ...}) = 0\nfstat64(3, {st_mode=S_IFREG|0644, st_size=2940, ...}) = 0\nmmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f18000\nread(3, \"# Configuration for getaddrinfo(\"..., 4096) = 2940\nread(3, \"\", 4096)                       = 0\nclose(3)                                = 0\nmunmap(0xb7f18000, 4096)                = 0\nfutex(0x251cd0, FUTEX_WAKE_PRIVATE, 2147483647) = 0\nsocket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 3\nconnect(3, {sa_family=AF_INET6, sin6_port=htons(9418), inet_pton(AF_INET6, \"::\", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, \n28) = 0\ngetsockname(3, {sa_family=AF_INET6, sin6_port=htons(47484), inet_pton(AF_INET6, \"::1\", &sin6_addr), sin6_flowinfo=0, \nsin6_scope_id=0}, [28]) = 0\nconnect(3, {sa_family=AF_UNSPEC, sa_data=\"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\"}, 16) = 0\nconnect(3, {sa_family=AF_INET, sin_port=htons(9418), sin_addr=inet_addr(\"0.0.0.0\")}, 16) = 0\ngetsockname(3, {sa_family=AF_INET6, sin6_port=htons(48606), inet_pton(AF_INET6, \"::ffff:127.0.0.1\", &sin6_addr), sin6_flowinfo=0, \nsin6_scope_id=0}, [28]) = 0\nclose(3)                                = 0\nsocket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3\nbind(3, {sa_family=AF_INET, sin_port=htons(9418), sin_addr=inet_addr(\"0.0.0.0\")}, 16) = -1 EADDRINUSE (Address already in use)\nclose(3)                                = 0\nsocket(PF_INET6, SOCK_STREAM, IPPROTO_TCP) = 3\nsetsockopt(3, SOL_IPV6, IPV6_V6ONLY, [1], 4) = 0\nbind(3, {sa_family=AF_INET6, sin6_port=htons(9418), inet_pton(AF_INET6, \"::\", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0\nlisten(3, 5)                            = 0\nfcntl64(3, F_GETFD)                     = 0\nfcntl64(3, F_SETFD, FD_CLOEXEC)         = 0\nopen(\"/proc/sys/kernel/ngroups_max\", O_RDONLY) = 4\nread(4, \"65536\\n\", 31)                  = 6\nclose(4)                                = 0\nopen(\"/etc/group\", O_RDONLY|O_CLOEXEC)  = 4\n_llseek(4, 0, [0], SEEK_CUR)            = 0\nfstat64(4, {st_mode=S_IFREG|0644, st_size=836, ...}) = 0\nmmap2(NULL, 836, PROT_READ, MAP_SHARED, 4, 0) = 0xb7f18000\n_llseek(4, 836, [836], SEEK_SET)        = 0\nfstat64(4, {st_mode=S_IFREG|0644, st_size=836, ...}) = 0\nmunmap(0xb7f18000, 836)                 = 0\nclose(4)                                = 0\nsetgroups32(1, [115])                   = 0\nsetgid32(115)                           = 0\nsetuid32(106)                           = 0\nrt_sigaction(SIGCHLD, {0x804ae30, [CHLD], SA_RESTORER|SA_RESTART, 0x13a5d8}, {SIG_DFL, [], 0}, 8) = 0\nwaitpid(-1, 0xbf8e525c, WNOHANG)        = -1 ECHILD (No child processes)\npoll([{fd=3, events=POLLIN}], 1, -1)    = -1 EINTR (Interrupted system call)\n--- SIGINT (Interrupt) @ 0 (0) ---\n+++ killed by SIGINT +++\nvking@mail:/etc/sv$\n=========================================================\n\n\n\nJG\n"},{"id":"158861","messageId":"20110103235501.GA32262@burratino","threadId":"26182","inReplyTo":"4D225DFA.50805@ecosensory.com","subject":"Re: git-daemon serving repos with repo.git/git-daemon-export-ok","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-01-03T23:55:01Z","receivedAt":"2011-01-03T23:55:01Z","isPatch":false,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"John Griessen wrote:\n\n> git version 1.7.2.3\n\nGood.\n\n> vking@mail:/etc/sv$ sv stat git-daemon\n> fail: git-daemon: unable to change to service directory: file does not exist\n\nAh, you switched to running git daemon directly.\n\n> I can push to these repos with gitosis, and the permissions are:\n>\n> vking@mail:/srv/gitosis/repositories$ ll\n> total 16\n> drwxr-xr-x 7 gitosis gitosis 4096 Dec 30 12:32 extrudator.data.git\n\nSo the gitdaemon user (used by git-daemon-run) wouldn't be able to\naccess them.\n\n> vking@mail:/etc/sv$ cat strace.out\n> execve(\"/usr/lib/git-core/git-daemon\",\n> [\"/usr/lib/git-core/git-daemon\", \"--verbose\", \"--strict-paths\",\n> \"--user=git\", \"--group=gitosis\", \"/srv/gitosis/repositories\"], [/*\n> 10 vars */]) = 0\n\nIn this case simple --verbose output would probably be more useful.\n(That's what cat-ing /var/log/git-daemon/current would have given\nif git-daemon-run were still installed.)\n\nThanks for the strace.  I should have mentioned that strace -f can\nhelp by following child processes, though that doesn't seem to be\nan issue here.  It looks like another git-daemon process is running at\nthe same time?  (One can check with \"netstat -t -a\".)\n"},{"id":"158864","messageId":"4D227ED7.9010407@ecosensory.com","threadId":"26182","inReplyTo":"20110103235501.GA32262@burratino","subject":"Re: git-daemon serving repos with repo.git/git-daemon-export-ok","fromName":"John Griessen","fromEmail":"john@ecosensory.com","sentAt":"2011-01-04T01:58:47Z","receivedAt":"2011-01-04T01:58:47Z","isPatch":false,"sender":{"key":"john@ecosensory.com","avatar":"https://gravatar.com/avatar/2716764948580f078b30fc52ca8d23f4c30516df18f2e9867bd97ef49fe6e0c2?d=mp&s=160"},"body":"On 01/03/2011 05:55 PM, Jonathan Nieder wrote:\n\n>> I can push to these repos with gitosis, and the permissions are:\n>>\n>> vking@mail:/srv/gitosis/repositories$ ll\n>> total 16\n>> drwxr-xr-x 7 gitosis gitosis 4096 Dec 30 12:32 extrudator.data.git\n>\n> So the gitdaemon user (used by git-daemon-run) wouldn't be able to\n> access them.\n\nIt would be able, since I used\nsudo strace -o strace.out /usr/lib/git-core/git-daemon --verbose --strict-paths --user=git --group=gitosis /srv/gitosis/repositories\n\ngit-daemon was asked to run as --user=git --group=gitosis, so it had read permissions and\nthere was no user git-daemon anymore -- removed it from /etc/passwd.\n\n>\n>> vking@mail:/etc/sv$ cat strace.out\n>> execve(\"/usr/lib/git-core/git-daemon\",\n>> [\"/usr/lib/git-core/git-daemon\", \"--verbose\", \"--strict-paths\",\n>> \"--user=git\", \"--group=gitosis\", \"/srv/gitosis/repositories\"], [/*\n>> 10 vars */]) = 0\n>\n> In this case simple --verbose output would probably be more useful.\n> (That's what cat-ing /var/log/git-daemon/current would have given\n> if git-daemon-run were still installed.)\n\nI tried this\n\nsudo /usr/lib/git-core/git-daemon --verbose --strict-paths --user=git --group=gitosis /srv/gitosis/repositories  &>git-daemon-err.log\n\nvking@mail:~$ cat git-daemon-err.log\n\nand git-daemon-err.log was empty.  Not the same as the /etc/sv/run script.  Should I reinstall\ndebian's git-daemon-run to do some tests?\n\n>\n> Thanks for the strace.  I should have mentioned that strace -f can\n> help by following child processes, though that doesn't seem to be\n> an issue here.  It looks like another git-daemon process is running at\n> the same time?  (One can check with \"netstat -t -a\".)\n\nNope, not as far as I can see.  What suggests that?\n\nvking@mail:/etc/sv$ netstat -t -a\nActive Internet connections (servers and established)\nProto Recv-Q Send-Q Local Address           Foreign Address         State\ntcp        0      0 *:discard               *:*                     LISTEN\ntcp        0      0 *:git                   *:*                     LISTEN\ntcp        0      0 localhost:mysql         *:*                     LISTEN\ntcp        0      0 *:daytime               *:*                     LISTEN\ntcp        0      0 localhost:sunrpc        *:*                     LISTEN\ntcp        0      0 *:www                   *:*                     LISTEN\ntcp        0      0 localhost:690           *:*                     LISTEN\ntcp        0      0 cottagematic.com:domain *:*                     LISTEN\ntcp        0      0 mail.cibolo.us:domain   *:*                     LISTEN\ntcp        0      0 localhost:domain        *:*                     LISTEN\ntcp        0      0 *:ssh                   *:*                     LISTEN\ntcp        0      0 *:telnet                *:*                     LISTEN\ntcp        0      0 localhost:postgresql    *:*                     LISTEN\ntcp        0      0 *:smtp                  *:*                     LISTEN\ntcp        0      0 *:time                  *:*                     LISTEN\ntcp        0      0 *:ldap                  *:*                     LISTEN\ntcp        0      0 mail.cibolo.us:ssh      cpe-66-68-104-159:47248 ESTABLISHED\ntcp        0    224 mail.cibolo.us:ssh      cpe-66-68-104-159:47247 ESTABLISHED\ntcp6       0      0 *:pop3                  *:*                     LISTEN\ntcp6       0      0 *:imap2                 *:*                     LISTEN\ntcp6       0      0 *:ssh                   *:*                     LISTEN\ntcp6       0      0 *:imaps                 *:*                     LISTEN\ntcp6       0      0 *:pop3s                 *:*                     LISTEN\ntcp6       0      0 *:ldap                  *:*                     LISTEN\ntcp6       0      0 mail.cibolo.us:imaps    cpe-66-68-104-159:58203 ESTABLISHED\ntcp6       0      0 mail.cibolo.us:imaps    cpe-66-68-104-159:58226 ESTABLISHED\ntcp6       0      0 mail.cibolo.us:imaps    cpe-66-68-104-159:48747 ESTABLISHED\ntcp6       0      0 mail.cibolo.us:imaps    cpe-66-68-104-159:58175 ESTABLISHED\ntcp6       0      0 mail.cibolo.us:imaps    cpe-66-68-104-159:58174 ESTABLISHED\ntcp6       0      0 mail.cibolo.us:imaps    cpe-66-68-104-159:48951 ESTABLISHED\ntcp6       0      0 mail.cibolo.us:imaps    cpe-66-68-104-159:52013 ESTABLISHED\ntcp6       0      0 mail.cibolo.us:imaps    cpe-66-68-104-159:52012 ESTABLISHED\ntcp6       0      0 mail.cibolo.us:imaps    cpe-66-68-104-159:52015 ESTABLISHED\ntcp6       0      0 mail.cibolo.us:imaps    cpe-66-68-104-159:52014 ESTABLISHED\ntcp6       0      0 mail.cibolo.us:imaps    cpe-66-68-104-159:47076 ESTABLISHED\ntcp6       0      0 mail.cibolo.us:imaps    cpe-66-68-104-159:47079 ESTABLISHED\ntcp6       0      0 mail.cibolo.us:imaps    cpe-66-68-104-159:47078 ESTABLISHED\n\n\nJohn Griessen\n"},{"id":"158865","messageId":"20110104021142.GB19053@burratino","threadId":"26182","inReplyTo":"4D227ED7.9010407@ecosensory.com","subject":"Re: git-daemon serving repos with repo.git/git-daemon-export-ok","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-01-04T02:11:42Z","receivedAt":"2011-01-04T02:11:42Z","isPatch":false,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"John Griessen wrote:\n\n> sudo /usr/lib/git-core/git-daemon --verbose --strict-paths --user=git\n> --group=gitosis /srv/gitosis/repositories  &>git-daemon-err.log\n>\n> vking@mail:~$ cat git-daemon-err.log\n>\n> and git-daemon-err.log was empty.\n\nThanks for clarifying.\n\n> Should I reinstall debian's git-daemon-run to do some tests?\n\nSeems redundant next to the tests you've already done.\n\n> On 01/03/2011 05:55 PM, Jonathan Nieder wrote:\n\n>> an issue here.  It looks like another git-daemon process is running at\n>> the same time?  (One can check with \"netstat -t -a\".)\n>\n> Nope, not as far as I can see.\n\nI left out the \"-p\", sorry.  I'll be more careful in the future.\n\n> What suggests that?\n\nbind(3, {sa_family=AF_INET, sin_port=htons(9418), sin_addr=inet_addr(\"0.0.0.0\")}, 16) = -1 EADDRINUSE (Address already in use)\n"},{"id":"158867","messageId":"20110104030915.GA24324@burratino","threadId":"26182","inReplyTo":"4D227ED7.9010407@ecosensory.com","subject":"Re: git-daemon serving repos with repo.git/git-daemon-export-ok","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-01-04T03:09:15Z","receivedAt":"2011-01-04T03:09:15Z","isPatch":false,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"John Griessen wrote:\n> On 01/03/2011 05:55 PM, Jonathan Nieder wrote:\n\n>>> drwxr-xr-x 7 gitosis gitosis 4096 Dec 30 12:32 extrudator.data.git\n>>\n>> So the gitdaemon user (used by git-daemon-run) wouldn't be able to\n>> access them.\n>\n> It would be able, since I used\n> sudo strace -o strace.out /usr/lib/git-core/git-daemon --verbose\n>\t--strict-paths --user=git --group=gitosis /srv/gitosis/repositories\n\nAlso because the repositories are world readable.  I don't know what\nI was thinking; I should get some sleep.\n\nThanks again for reporting and good luck.\n\nJonathan\n"}]}