[Bug 5811] New: fsmonitor returns bogus stat tuples, breaking after cleanup in ffa3026d4196

mercurial-bugs at mercurial-scm.org mercurial-bugs at mercurial-scm.org
Fri Mar 9 22:18:17 UTC 2018


https://bz.mercurial-scm.org/show_bug.cgi?id=5811

            Bug ID: 5811
           Summary: fsmonitor returns bogus stat tuples, breaking after
                    cleanup in ffa3026d4196
           Product: Mercurial
           Version: default branch
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: bug
          Priority: wish
         Component: fsmonitor
          Assignee: bugzilla at mercurial-scm.org
          Reporter: durin42 at gmail.com
                CC: mercurial-devel at mercurial-scm.org

Change ffa3026d4196 moved us from using thing.st_mtime to always using
thing[ST_MTIME] because the latter always gets us an integer. We need to teach
the code in bser.c to handle __getitem__(ST_MTIME), as it currently stacktraces
like this:

** Unknown exception encountered with possibly-broken third-party extension
perf
** which supports versions unknown of Mercurial.
** Please disable perf and try your action again.
** If that fixes the bug please report it to the extension author.
** Python 2.7.13 (default, Jan 23 2017, 15:28:18) [GCC 6.2.0 20161005]
** Mercurial Distributed SCM (version 4.5.2+939-09b58af83d44)
** Extensions loaded: blackbox, convert, fsmonitor, rebase, histedit,
patchbomb, purge, record, share, shelve, show, strip, mq, qbackout, qimportbz,
reviewboard, bzexport, firefoxtree, mozext, push-to-try, perf, phabricator,
showstack
Traceback (most recent call last):
  File "/home/gps/lib/python/mercurial/commandserver.py", line 368, in
_serverequest
    sv.serve()
  File "/home/gps/lib/python/mercurial/commandserver.py", line 292, in serve
    while self.serveone():
  File "/home/gps/lib/python/mercurial/commandserver.py", line 267, in serveone
    handler(self)
  File "/home/gps/lib/python/mercurial/chgserver.py", line 453, in runcommand
    return super(chgcmdserver, self).runcommand()
  File "/home/gps/lib/python/mercurial/commandserver.py", line 251, in
runcommand
    ret = (dispatch.dispatch(req) or 0) & 255 # might return None
  File "/home/gps/lib/python/mercurial/dispatch.py", line 208, in dispatch
    ret = _runcatch(req)
  File "/home/gps/lib/python/mercurial/dispatch.py", line 349, in _runcatch
    return _callcatch(ui, _runcatchfunc)
  File "/home/gps/lib/python/mercurial/dispatch.py", line 357, in _callcatch
    return scmutil.callcatch(ui, func)
  File "/home/gps/lib/python/mercurial/scmutil.py", line 154, in callcatch
    return func()
  File "/home/gps/lib/python/mercurial/dispatch.py", line 339, in _runcatchfunc
    return _dispatch(req)
  File "/home/gps/lib/python/mercurial/dispatch.py", line 943, in _dispatch
    cmdpats, cmdoptions)
  File "/home/gps/lib/python/mercurial/dispatch.py", line 700, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/home/gps/lib/python/mercurial/dispatch.py", line 951, in _runcommand
    return cmdfunc()
  File "/home/gps/lib/python/mercurial/dispatch.py", line 940, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/home/gps/lib/python/mercurial/util.py", line 1494, in check
    return func(*args, **kwargs)
  File "/home/gps/lib/python/mercurial/util.py", line 1494, in check
    return func(*args, **kwargs)
  File "/home/gps/lib/python/hgext/mq.py", line 3588, in mqcommand
    return orig(ui, repo, *args, **kwargs)
  File "/home/gps/lib/python/mercurial/util.py", line 1494, in check
    return func(*args, **kwargs)
  File "/home/gps/lib/python/mercurial/commands.py", line 4898, in status
    'unknown' in show, opts.get('subrepos'))
  File "/home/gps/lib/python/hgext/fsmonitor/__init__.py", line 792, in status
    return overridestatus(orig, self, *args, **kwargs)
  File "/home/gps/lib/python/hgext/fsmonitor/__init__.py", line 539, in
overridestatus
    listsubrepos)
  File "/home/gps/lib/python/mercurial/localrepo.py", line 2093, in status
    listsubrepos)
  File "/home/gps/lib/python/mercurial/context.py", line 360, in status
    listunknown)
  File "/home/gps/lib/python/mercurial/context.py", line 1790, in _buildstatus
    s = self._dirstatestatus(match, listignored, listclean, listunknown)
  File "/home/gps/lib/python/mercurial/context.py", line 1723, in
_dirstatestatus
    clean=clean, unknown=unknown)
  File "/home/gps/lib/python/mercurial/dirstate.py", line 1071, in status
    elif (time != st[stat.ST_MTIME]
IndexError: tuple index out of range

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Mercurial-devel mailing list