First time user - can't clone

Danek Duvall danek.duvall at sun.com
Sun Nov 18 21:06:22 UTC 2007


On Sun, Nov 18, 2007 at 02:24:53PM -0600, skip at pobox.com wrote:

>     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

Okay, up until the fstatat(), I get an identical trace, but what I see
there is ".hg".  The truss output suggests that it's doing this after an
os.listdir(), and dtrace confirms that:

    % dtrace -n syscall::fsat:entry'/pid == $target && arg0 == 2/{trace(copyinstr(arg2)); jstack(10)}' -c "hg update -C"
    dtrace: description 'syscall::fsat:entry' matched 1 probe
    10 files updated, 0 files merged, 0 files removed, 0 files unresolved
    dtrace: pid 12823 has exited
    CPU     ID                    FUNCTION:NAME
      1   5333                       fsat:entry   .hg                              
                  libc.so.1`_syscall6+0x1c
                  osutil.so`listdir+0x1b0
                  libpython2.4.so.1.0`PyObject_Call+0x1c
                  libpython2.4.so.1.0`do_call+0x68
                  libpython2.4.so.1.0`call_function+0x4b4
                  libpython2.4.so.1.0`PyEval_EvalFrameReal+0x33f0
                  libpython2.4.so.1.0`PyEval_EvalFrame+0x4
                    [ build/proto/lib/python/mercurial/dirstate.py:413 (findfiles) ]
                  libpython2.4.so.1.0`PyEval_EvalCodeEx+0x9ec
                  libpython2.4.so.1.0`fast_function+0x200
                  libpython2.4.so.1.0`call_function+0x498

So it looks like os.listdir() may be returning something funny.  After your
initial clone, what does

    python -c "import os; print os.listdir('<your path here>')"

tell you?  Is the first element an empty string?  That is, like you point
out, the curious bit.

Are you using the bundled copy of Python, or your own?  And what release of
Solaris are you running?

Danek



More information about the Mercurial mailing list