Skip to content
This repository was archived by the owner on Apr 12, 2026. It is now read-only.
This repository was archived by the owner on Apr 12, 2026. It is now read-only.

TagFuse: doing cat .recnum makes tagfuse go infinite. #4

Description

@cire831

yes, given what .recnum is this is a silly thing to do, but a natural thing to do and it shouldn't make tagfuse break.

tagfuse goes infinite and there is no connectivity.

running off base station P222, Tagnet tree: ad4011e, mm tree: 59d87a0

  • fire up tagfuse: python tagfuse ~/tag/tag01
  • cd ~/tag/tag01/\<node_id:ffffffffffff\>/tag/sd/0/dblk
  • ll -a (see below)
P222 (16): ll -a
total 0
drwxr-x--x 7 root root      0 Feb  2 15:22 ./
drwxr-x--x 5 root root      0 Feb  2 15:22 ../
drwxr-x--x 3 root root      0 Feb  2 15:22 byte/
-r--r--r-- 1 root root 389304 Feb  2 15:24 .last_rec
-r--r--r-- 1 root root 388096 Feb  2 15:24 .last_sync
--w--w---- 1 root root      0 Feb  2 15:24 note
-r--r--r-- 1 root root   5297 Feb  2 15:24 .recnum
P222 (17):
  • now, do cat .recnum. (tagfuse goes nuts, see below)
    the client just hangs. Only way to kill it is to killall -9 tagfuse

Output of tagfuse when going infinite:

DEBUG:fuse.log-mixin:-> getattr /<node_id:ffffffffffff>/tag/sd/0/dblk/.recnum (None,)
0 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'.recnum']
traverse <node_id:ffffffffffff> False  <class 'taghandlers.FileHandler'> False <type 'type'>
traverse <node_id:ffffffffffff> True <node_id:ffffffffffff> <class 'taghandlers.DirHandler'> True <type 'type'>
True
1 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'.recnum']
traverse tag False  <class 'taghandlers.FileHandler'> False <type 'type'>
traverse tag True tag <class 'taghandlers.DirHandler'> True <type 'type'>
True
2 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'.recnum']
traverse sd False  <class 'taghandlers.FileHandler'> False <type 'type'>
traverse sd True sd <class 'taghandlers.DirHandler'> True <type 'type'>
True
3 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'.recnum']
traverse 0 False  <class 'taghandlers.FileHandler'> False <type 'type'>
traverse 0 True 0 <class 'taghandlers.DirHandler'> True <type 'type'>
True
4 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'.recnum']
traverse dblk False  <class 'taghandlers.FileHandler'> False <type 'type'>
traverse dblk False img <class 'taghandlers.ImageDirHandler'> True <type 'type'>
traverse dblk True dblk <class 'taghandlers.DirHandler'> True <type 'type'>
True
5 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'.recnum']
traverse last .recnum False  <class 'taghandlers.FileHandler'>
traverse last .recnum False byte <class 'taghandlers.DirHandler'>
traverse last .recnum False note <class 'taghandlers.DblkIONoteHandler'>
traverse last .recnum True .recnum <class 'taghandlers.ByteIOFileHandler'>
[(tlv_types.NODE_ID, ffffffffffff), (tlv_types.STRING, tag), (tlv_types.STRING, sd), (tlv_types.INTEGER, 0), (tlv_types.STRING, dblk), (tlv_types.STRING, .recnum)]
[(tlv_types.SIZE, 14181)]
DEBUG:fuse.log-mixin:<- getattr ByteIOFileHandler([('st_ctime', 1517613774.03574), ('st_mtime', 1517614810.235624), ('st_size', 14181), ('st_atime', 1517613774.035743), ('st_nlink', 1), ('st_mode', 33060)])
DEBUG:fuse.log-mixin:-> open /<node_id:ffffffffffff>/tag/sd/0/dblk/.recnum (<fuse.fuse_file_info object at 0x75eee350>,)
DEBUG:fuse.log-mixin:<- open 0
DEBUG:fuse.log-mixin:-> read /<node_id:ffffffffffff>/tag/sd/0/dblk/.recnum (4096L, 0L, <fuse.fuse_file_info object at 0x75eee3f0>)
0 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'.recnum']
traverse <node_id:ffffffffffff> False  <class 'taghandlers.FileHandler'> False <type 'type'>
traverse <node_id:ffffffffffff> True <node_id:ffffffffffff> <class 'taghandlers.DirHandler'> True <type 'type'>
True
1 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'.recnum']
traverse tag False  <class 'taghandlers.FileHandler'> False <type 'type'>
traverse tag True tag <class 'taghandlers.DirHandler'> True <type 'type'>
True
2 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'.recnum']
traverse sd False  <class 'taghandlers.FileHandler'> False <type 'type'>
traverse sd True sd <class 'taghandlers.DirHandler'> True <type 'type'>
True
3 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'.recnum']
traverse 0 False  <class 'taghandlers.FileHandler'> False <type 'type'>
traverse 0 True 0 <class 'taghandlers.DirHandler'> True <type 'type'>
True
4 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'.recnum']
traverse dblk False  <class 'taghandlers.FileHandler'> False <type 'type'>
traverse dblk False img <class 'taghandlers.ImageDirHandler'> True <type 'type'>
traverse dblk True dblk <class 'taghandlers.DirHandler'> True <type 'type'>
True
5 [u'<node_id:ffffffffffff>', u'tag', u'sd', u'0', u'dblk', u'.recnum']
traverse last .recnum False  <class 'taghandlers.FileHandler'>
traverse last .recnum False byte <class 'taghandlers.DirHandler'>
traverse last .recnum False note <class 'taghandlers.DblkIONoteHandler'>
traverse last .recnum True .recnum <class 'taghandlers.ByteIOFileHandler'>
[(tlv_types.NODE_ID, ffffffffffff), (tlv_types.STRING, tag), (tlv_types.STRING, sd), (tlv_types.INTEGER, 0), (tlv_types.STRING, dblk), (tlv_types.STRING, .recnum), (tlv_types.OFFSET, 0), (tlv_types.SIZE, 4096)]
[(tlv_types.NODE_ID, ffffffffffff), (tlv_types.STRING, tag), (tlv_types.STRING, sd), (tlv_types.INTEGER, 0), (tlv_types.STRING, dblk), (tlv_types.STRING, .recnum), (tlv_types.OFFSET, 0), (tlv_types.SIZE, 4096)]
[(tlv_types.NODE_ID, ffffffffffff), (tlv_types.STRING, tag), (tlv_types.STRING, sd), (tlv_types.INTEGER, 0), (tlv_types.STRING, dblk), (tlv_types.STRING, .recnum), (tlv_types.OFFSET, 0), (tlv_types.SIZE, 4096)]
[(tlv_types.NODE_ID, ffffffffffff), (tlv_types.STRING, tag), (tlv_types.STRING, sd), (tlv_types.INTEGER, 0), (tlv_types.STRING, dblk), (tlv_types.STRING, .recnum), (tlv_types.OFFSET, 0), (tlv_types.SIZE, 4096)]
[(tlv_types.NODE_ID, ffffffffffff), (tlv_types.STRING, tag), (tlv_types.STRING, sd), (tlv_types.INTEGER, 0), (tlv_types.STRING, dblk), (tlv_types.STRING, .recnum), (tlv_types.OFFSET, 0), (tlv_types.SIZE, 4096)]
[(tlv_types.NODE_ID, ffffffffffff), (tlv_types.STRING, tag), (tlv_types.STRING, sd), (tlv_types.INTEGER, 0), (tlv_types.STRING, dblk), (tlv_types.STRING, .recnum), (tlv_types.OFFSET, 0), (tlv_types.SIZE, 4096)]
[(tlv_types.NODE_ID, ffffffffffff), (tlv_types.STRING, tag), (tlv_types.STRING, sd), (tlv_types.INTEGER, 0), (tlv_types.STRING, dblk), (tlv_types.STRING, .recnum), (tlv_types.OFFSET, 0), (tlv_types.SIZE, 4096)]
[(tlv_types.NODE_ID, ffffffffffff), (tlv_types.STRING, tag), (tlv_types.STRING, sd), (tlv_types.INTEGER, 0), (tlv_types.STRING, dblk), (tlv_types.STRING, .recnum), (tlv_types.OFFSET, 0), (tlv_types.SIZE, 4096)]
[(tlv_types.NODE_ID, ffffffffffff), (tlv_types.STRING, tag), (tlv_types.STRING, sd), (tlv_types.INTEGER, 0), (tlv_types.STRING, dblk), (tlv_types.STRING, .recnum), (tlv_types.OFFSET, 0), (tlv_types.SIZE, 4096)]
[(tlv_types.NODE_ID, ffffffffffff), (tlv_types.STRING, tag), (tlv_types.STRING, sd), (tlv_types.INTEGER, 0), (tlv_types.STRING, dblk), (tlv_types.STRING, .recnum), (tlv_types.OFFSET, 0), (tlv_types.SIZE, 4096)]
[(tlv_types.NODE_ID, ffffffffffff), (tlv_types.STRING, tag), (tlv_types.STRING, sd), (tlv_types.INTEGER, 0), (tlv_types.STRING, dblk), (tlv_types.STRING, .recnum), (tlv_types.OFFSET, 0), (tlv_types.SIZE, 4096)]
[(tlv_types.NODE_ID, ffffffffffff), (tlv_types.STRING, tag), (tlv_types.STRING, sd), (tlv_types.INTEGER, 0), (tlv_types.STRING, dblk), (tlv_types.STRING, .recnum), (tlv_types.OFFSET, 0), (tlv_types.SIZE, 4096)]
[(tlv_types.NODE_ID, ffffffffffff), (tlv_types.STRING, tag), (tlv_types.STRING, sd), (tlv_types.INTEGER, 0), (tlv_types.STRING, dblk), (tlv_types.STRING, .recnum), (tlv_types.OFFSET, 0), (tlv_types.SIZE, 4096)]

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions