Hi, I am running Mageia Linux 2 on x86-64 with mercurial-2.1.1-1.mga2 . I have run a fuzz test for a queue implementation that offloads frames (= sequences of several items) to the hard-disk, and so constantly creates files and deletes them, and now I'm getting this when I run "hg status .": shlomif[fcs]:$trunk/fc-solve/source$ hg --traceback status . Traceback (most recent call last): File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 87, in _runcatch return _dispatch(req) File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 683, in _dispatch cmdpats, cmdoptions) File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 465, in runcommand ret = _runcommand(ui, options, cmd, d) File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 737, in _runcommand return checkargs() File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 691, in checkargs return cmdfunc() File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 680, in <lambda> d = lambda: util.checksignature(func)(ui, *args, **cmdoptions) File "/usr/lib64/python2.7/site-packages/mercurial/util.py", line 456, in check return func(*args, **kwargs) File "/usr/lib64/python2.7/site-packages/mercurial/commands.py", line 5260, in status opts.get('subrepos')) File "/usr/lib64/python2.7/site-packages/mercurial/localrepo.py", line 1373, in status listclean, listunknown) File "/usr/lib64/python2.7/site-packages/mercurial/dirstate.py", line 703, in status listignored).iteritems(): File "/usr/lib64/python2.7/site-packages/mercurial/dirstate.py", line 623, in walk entries = listdir(join(nd), stat=True, skip=skip) OSError: [Errno 2] No such file or directory: '/home/shlomif/progs/freecell/hg/fc-solve/fc-solve/source/queue-offload-dir/fcs_queue_0000000000000046BB0B.page' abort: No such file or directory: /home/shlomif/progs/freecell/hg/fc-solve/fc-solve/source/queue-offload-dir/fcs_queue_0000000000000046BB0B.page I was told to report it here by the people on #mercurial on Freenode, so there you go. Regards, -- Shlomi Fish
This is apparently happening in osutil.listdir, around line 352. We should simply skip files that give ENOENT.
Fixed queued for stable
Fixed in 2.2.3 by: 6476a21337a6 osutil: handle deletion race with readdir/stat