First time user - can't clone

skip at pobox.com skip at pobox.com
Sun Nov 18 20:24:53 UTC 2007


    >> I was able to clone it from a couple different Linux machines, one at
    >> work (so it's unlikely to be a network config issue) and one out on
    >> the net.  It does indeed seem to be a Solaris-related problem.

    Danek> I assume you're on some form of Solaris 10?  If you do think it's
    Danek> an OS problem, the relevant bits of a truss leading up to the
    Danek> failure would be more useful (though possibly also not
    Danek> definitive).

Okay, here's what I did.  Starting afresh I executed the clone command with
the -U flag:

    hg clone -U http://montanaro.dyndns.org:8000/ lockfile

Then in the lockfile directory I ran "truss python -v hg ..."  so I could
tell when the imports ended and where the cleanup began:

    truss python -v `which hg` update -C tip > ~/tmp/hg.out 2>&1

Here's the truss output between those two marker points:


    write(2, "\n", 1)                           = 1
    llseek(4, 0, SEEK_CUR)                              = 0
    close(4)                                    = 0
    llseek(3, 0, SEEK_CUR)                              = 0
    close(3)                                    = 0
    stat64("/opt/app/g++lib6/python-2.4/lib/python2.4/site-packages/mercurial/stat", 0x08043C10) Err#2 ENOENT
    open64("/opt/app/g++lib6/python-2.4/lib/python2.4/site-packages/mercurial/stat.so", O_RDONLY) Err#2 ENOENT
    open64("/opt/app/g++lib6/python-2.4/lib/python2.4/site-packages/mercurial/statmodule.so", O_RDONLY) Err#2 ENOENT
    open64("/opt/app/g++lib6/python-2.4/lib/python2.4/site-packages/mercurial/stat.py", O_RDONLY) Err#2 ENOENT
    open64("/opt/app/g++lib6/python-2.4/lib/python2.4/site-packages/mercurial/stat.pyc", O_RDONLY) Err#2 ENOENT
    lstat64("/home/tuba/skipm/nobackup/tmp/lockfile/.", 0x08044DC0) = 0
    open64("/home/tuba/skipm/nobackup/tmp/lockfile/.", O_RDONLY) = 3
    fcntl(3, F_SETFD, 0x00000001)                       = 0
    fstat64(3, 0x080445E0)                              = 0
    getdents64(3, 0xD0B54000, 8192)                     = 72
    getdents64(3, 0xD0B54000, 8192)                     = 0
    fstatat64(3, "", 0x08260C08, 0x00001000)    Err#2 ENOENT
    close(3)                                    = 0
    unlink("/home/tuba/skipm/nobackup/tmp/lockfile/.hg/wlock") = 0
    abort: No such file or directory: /home/tuba/skipm/nobackup/tmp/lockfile/./
    write(2, " a b o r t :   N o   s u".., 76)  = 76
    sigaction(SIGINT, 0x080476B0, 0x08047700)   = 0
    sigaction(SIGHUP, 0x080476B0, 0x08047700)   = 0
    sigaction(SIGTERM, 0x080476B0, 0x08047700)  = 0

I'd never seen the fstatat function before.  For those similarly in the
dark, here's a snippet from the Solaris 10 fstat man page:

     int fstatat(int fildes, const char *path, struct stat  *buf,
     int flag);

     ...

     The fstatat() function obtains file  attributes  similar  to
     the  stat(),  lstat(),  and  fstat() functions.  If the path
     argument is a relative path, it is resolved relative to  the
     fildes  argument  rather than the current working directory.
     If path is absolute, the fildes argument is unused.  If  the
     fildes  argument  has  the  special value AT_FDCWD, relative
     paths are resolved from the current working  directory.   If
     the   flag  argument  is  AT_SYMLNK_NOFOLLOW,  the  function
     behaves like  lstat()  and  does  not  automatically  follow

The flag argument 0x1000 is AT_SYMLNK_NOFOLLOW.

Seems odd to me that the path argument would be an empty string.

Thanks for all the help,

-- 
Skip Montanaro - skip at pobox.com - http://www.webfast.com/~skip/



More information about the Mercurial mailing list