rmlint --gui (aka "Shredder") does not find any files

Bug #1951596 reported by Tony Travis
14
This bug affects 3 people
Affects Status Importance Assigned to Milestone
rmlint (Ubuntu)
Confirmed
Undecided
Unassigned

Bug Description

There is a bug in the default max file size of 16 Petabytes in "Shredder" being interpreted as a negative number and causing an error exit when "rmlint" is run by the GUI when the selected folder is scanned. In addition, simply changing the Units from e.g. Petabyte to Gigabyte does not enable the "Apply" button, which is only enabled by changing the default value of 16 to e.g. 1.

Another error occurs because the /tmp/app.log file is not removed on exit from the "Shredder" GUI. If a previous user created this log file it can't be overwritten or removed if the s't'icky-bit is set on the /tmp directory. Including the PID in the app.log filename would avoid the problem and allow concurrent instances of "Shredder" to write to "$$app.log".

The following logs captured from a CLI invocation of "Shredder" illustrate how the negative max size problem can be fixed by changing the default values, but the /tmp/app.log problem remains:

ajt@pilot:~$ rmlint --gui
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/handlers.py", line 69, in emit
    if self.shouldRollover(record):
  File "/usr/lib/python3.8/logging/handlers.py", line 183, in shouldRollover
    self.stream = self._open()
  File "/usr/lib/python3.8/logging/__init__.py", line 1176, in _open
    return open(self.baseFilename, self.mode, encoding=self.encoding)
PermissionError: [Errno 13] Permission denied: '/tmp/app.log'
Call stack:
  File "/tmp/.shredder-bootstrap.py.EE1CD1", line 19, in <module>
  File "/usr/lib/python3/dist-packages/shredder/__init__.py", line 42, in run_gui
    ROOT_LOGGER.info('Starting up.')
Message: 'Starting up.'
Arguments: ()
13:55:33 ⚐ INFO root:42: Starting up.
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/handlers.py", line 69, in emit
    if self.shouldRollover(record):
  File "/usr/lib/python3.8/logging/handlers.py", line 183, in shouldRollover
    self.stream = self._open()
  File "/usr/lib/python3.8/logging/__init__.py", line 1176, in _open
    return open(self.baseFilename, self.mode, encoding=self.encoding)
PermissionError: [Errno 13] Permission denied: '/tmp/app.log'
Call stack:
  File "/tmp/.shredder-bootstrap.py.EE1CD1", line 19, in <module>
  File "/usr/lib/python3/dist-packages/shredder/__init__.py", line 43, in run_gui
    sys.exit(APP.run([sys.argv[0]]))
  File "/usr/lib/python3/dist-packages/gi/overrides/Gio.py", line 44, in run
    return Gio.Application.run(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/shredder/application.py", line 102, in do_startup
    LOGGER.info('Loading resources from: ' + resource_file)
Message: 'Loading resources from: /usr/lib/python3/dist-packages/shredder/resources/shredder.gresource'
Arguments: ()
13:55:33 ⚐ INFO application:102: Loading resources from: /usr/lib/python3/dist-packages/shredder/resources/shredder.gresource
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/handlers.py", line 69, in emit
    if self.shouldRollover(record):
  File "/usr/lib/python3.8/logging/handlers.py", line 183, in shouldRollover
    self.stream = self._open()
  File "/usr/lib/python3.8/logging/__init__.py", line 1176, in _open
    return open(self.baseFilename, self.mode, encoding=self.encoding)
PermissionError: [Errno 13] Permission denied: '/tmp/app.log'
Call stack:
  File "/tmp/.shredder-bootstrap.py.EE1CD1", line 19, in <module>
  File "/usr/lib/python3/dist-packages/shredder/__init__.py", line 43, in run_gui
    sys.exit(APP.run([sys.argv[0]]))
  File "/usr/lib/python3/dist-packages/gi/overrides/Gio.py", line 44, in run
    return Gio.Application.run(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/shredder/application.py", line 148, in do_startup
    LOGGER.debug('Instancing views.')
Message: 'Instancing views.'
Arguments: ()
13:55:33 ⚙ DEBUG application:148: Instancing views.
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/handlers.py", line 69, in emit
    if self.shouldRollover(record):
  File "/usr/lib/python3.8/logging/handlers.py", line 183, in shouldRollover
    self.stream = self._open()
  File "/usr/lib/python3.8/logging/__init__.py", line 1176, in _open
    return open(self.baseFilename, self.mode, encoding=self.encoding)
PermissionError: [Errno 13] Permission denied: '/tmp/app.log'
Call stack:
  File "/tmp/.shredder-bootstrap.py.EE1CD1", line 19, in <module>
  File "/usr/lib/python3/dist-packages/shredder/__init__.py", line 43, in run_gui
    sys.exit(APP.run([sys.argv[0]]))
  File "/usr/lib/python3/dist-packages/gi/overrides/Gio.py", line 44, in run
    return Gio.Application.run(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/shredder/application.py", line 150, in do_startup
    self.win.views.add_view(LocationView(self), 'locations')
  File "/usr/lib/python3/dist-packages/shredder/views/locations.py", line 290, in __init__
    self.load_entries_from_disk(entries)
  File "/usr/lib/python3/dist-packages/shredder/views/locations.py", line 343, in load_entries_from_disk
    LOGGER.info('Loading entries initially')
Message: 'Loading entries initially'
Arguments: ()
13:55:33 ⚐ INFO locations:343: Loading entries initially
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/handlers.py", line 69, in emit
    if self.shouldRollover(record):
  File "/usr/lib/python3.8/logging/handlers.py", line 183, in shouldRollover
    self.stream = self._open()
  File "/usr/lib/python3.8/logging/__init__.py", line 1176, in _open
    return open(self.baseFilename, self.mode, encoding=self.encoding)
PermissionError: [Errno 13] Permission denied: '/tmp/app.log'
Call stack:
  File "/tmp/.shredder-bootstrap.py.EE1CD1", line 19, in <module>
  File "/usr/lib/python3/dist-packages/shredder/__init__.py", line 43, in run_gui
    sys.exit(APP.run([sys.argv[0]]))
  File "/usr/lib/python3/dist-packages/gi/overrides/Gio.py", line 44, in run
    return Gio.Application.run(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/shredder/application.py", line 152, in do_startup
    self.win.views.add_view(EditorView(self), 'editor')
  File "/usr/lib/python3/dist-packages/shredder/views/editor.py", line 514, in __init__
    self.text_view, buffer_ = _create_source_view()
  File "/usr/lib/python3/dist-packages/shredder/views/editor.py", line 52, in _create_source_view
    LOGGER.info('Using GtkSourceView since we have it.')
Message: 'Using GtkSourceView since we have it.'
Arguments: ()
13:55:33 ⚐ INFO editor:52: Using GtkSourceView since we have it.
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/handlers.py", line 69, in emit
    if self.shouldRollover(record):
  File "/usr/lib/python3.8/logging/handlers.py", line 183, in shouldRollover
    self.stream = self._open()
  File "/usr/lib/python3.8/logging/__init__.py", line 1176, in _open
    return open(self.baseFilename, self.mode, encoding=self.encoding)
PermissionError: [Errno 13] Permission denied: '/tmp/app.log'
Call stack:
  File "/tmp/.shredder-bootstrap.py.EE1CD1", line 19, in <module>
  File "/usr/lib/python3/dist-packages/shredder/__init__.py", line 43, in run_gui
    sys.exit(APP.run([sys.argv[0]]))
  File "/usr/lib/python3/dist-packages/gi/overrides/Gio.py", line 44, in run
    return Gio.Application.run(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/shredder/application.py", line 153, in do_startup
    LOGGER.debug('Done instancing views.')
Message: 'Done instancing views.'
Arguments: ()
13:55:33 ⚙ DEBUG application:153: Done instancing views.
/usr/lib/python3/dist-packages/shredder/runner.py:170: Warning: g_variant_get_boolean: assertion 'g_variant_is_of_type (value, G_VARIANT_TYPE_BOOLEAN)' failed
  cfg.get_boolean('computation-algorithm'))
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/handlers.py", line 69, in emit
    if self.shouldRollover(record):
  File "/usr/lib/python3.8/logging/handlers.py", line 183, in shouldRollover
    self.stream = self._open()
  File "/usr/lib/python3.8/logging/__init__.py", line 1176, in _open
    return open(self.baseFilename, self.mode, encoding=self.encoding)
PermissionError: [Errno 13] Permission denied: '/tmp/app.log'
Call stack:
  File "/tmp/.shredder-bootstrap.py.EE1CD1", line 19, in <module>
  File "/usr/lib/python3/dist-packages/shredder/__init__.py", line 43, in run_gui
    sys.exit(APP.run([sys.argv[0]]))
  File "/usr/lib/python3/dist-packages/gi/overrides/Gio.py", line 44, in run
    return Gio.Application.run(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/shredder/views/locations.py", line 580, in _run_clicked
    self.scan_paths(untagged, tagged)
  File "/usr/lib/python3/dist-packages/shredder/views/locations.py", line 591, in scan_paths
    main_view.trigger_run(untagged, tagged)
  File "/usr/lib/python3/dist-packages/shredder/views/runner.py", line 257, in trigger_run
    self.runner.run()
  File "/usr/lib/python3/dist-packages/shredder/runner.py", line 332, in run
    self.process = _create_rmlint_process(
  File "/usr/lib/python3/dist-packages/shredder/runner.py", line 216, in _create_rmlint_process
    LOGGER.info('Running: ' + ' '.join(cmdline))
Message: 'Running: rmlint --no-with-color -T duplicates --see-symlinks --hidden -c sh:handler=remove --hardlinked --no-crossdev --size 1-18446744073709551615 --max-depth 512 -o json -c json:oneline /home/ajt/Documents/Work/Minke'
Arguments: ()
13:55:40 ⚐ INFO runner:216: Running: rmlint --no-with-color -T duplicates --see-symlinks --hidden -c sh:handler=remove --hardlinked --no-crossdev --size 1-18446744073709551615 --max-depth 512 -o json -c json:oneline /home/ajt/Documents/Work/Minke
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/handlers.py", line 69, in emit
    if self.shouldRollover(record):
  File "/usr/lib/python3.8/logging/handlers.py", line 183, in shouldRollover
    self.stream = self._open()
  File "/usr/lib/python3.8/logging/__init__.py", line 1176, in _open
    return open(self.baseFilename, self.mode, encoding=self.encoding)
PermissionError: [Errno 13] Permission denied: '/tmp/app.log'
Call stack:
  File "/tmp/.shredder-bootstrap.py.EE1CD1", line 19, in <module>
  File "/usr/lib/python3/dist-packages/shredder/__init__.py", line 43, in run_gui
    sys.exit(APP.run([sys.argv[0]]))
  File "/usr/lib/python3/dist-packages/gi/overrides/Gio.py", line 44, in run
    return Gio.Application.run(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/shredder/runner.py", line 299, in on_io_event
    self.emit('process-finished', self._message)
  File "/usr/lib/python3/dist-packages/shredder/views/runner.py", line 304, in on_process_finish
    LOGGER.info('`rmlint` finished.')
Message: '`rmlint` finished.'
Arguments: ()
13:55:40 ⚐ INFO runview:304: `rmlint` finished.
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/shredder/util.py", line 855, in on_unit_changed
    self.emit('value-changed', self.get_bytes())
TypeError: could not convert type float to gint required for parameter 0
/usr/lib/python3/dist-packages/shredder/runner.py:170: Warning: g_variant_get_boolean: assertion 'g_variant_is_of_type (value, G_VARIANT_TYPE_BOOLEAN)' failed
  cfg.get_boolean('computation-algorithm'))
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/handlers.py", line 69, in emit
    if self.shouldRollover(record):
  File "/usr/lib/python3.8/logging/handlers.py", line 183, in shouldRollover
    self.stream = self._open()
  File "/usr/lib/python3.8/logging/__init__.py", line 1176, in _open
    return open(self.baseFilename, self.mode, encoding=self.encoding)
PermissionError: [Errno 13] Permission denied: '/tmp/app.log'
Call stack:
  File "/tmp/.shredder-bootstrap.py.EE1CD1", line 19, in <module>
  File "/usr/lib/python3/dist-packages/shredder/__init__.py", line 43, in run_gui
    sys.exit(APP.run([sys.argv[0]]))
  File "/usr/lib/python3/dist-packages/gi/overrides/Gio.py", line 44, in run
    return Gio.Application.run(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/shredder/views/locations.py", line 580, in _run_clicked
    self.scan_paths(untagged, tagged)
  File "/usr/lib/python3/dist-packages/shredder/views/locations.py", line 591, in scan_paths
    main_view.trigger_run(untagged, tagged)
  File "/usr/lib/python3/dist-packages/shredder/views/runner.py", line 257, in trigger_run
    self.runner.run()
  File "/usr/lib/python3/dist-packages/shredder/runner.py", line 332, in run
    self.process = _create_rmlint_process(
  File "/usr/lib/python3/dist-packages/shredder/runner.py", line 216, in _create_rmlint_process
    LOGGER.info('Running: ' + ' '.join(cmdline))
Message: 'Running: rmlint --no-with-color -T duplicates --see-symlinks --hidden -c sh:handler=remove --hardlinked --no-crossdev --size 1-1099511627776 --max-depth 512 -o json -c json:oneline /home/ajt/Documents/Work/Minke'
Arguments: ()
13:56:13 ⚐ INFO runner:216: Running: rmlint --no-with-color -T duplicates --see-symlinks --hidden -c sh:handler=remove --hardlinked --no-crossdev --size 1-1099511627776 --max-depth 512 -o json -c json:oneline /home/ajt/Documents/Work/Minke
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/handlers.py", line 69, in emit
    if self.shouldRollover(record):
  File "/usr/lib/python3.8/logging/handlers.py", line 183, in shouldRollover
    self.stream = self._open()
  File "/usr/lib/python3.8/logging/__init__.py", line 1176, in _open
    return open(self.baseFilename, self.mode, encoding=self.encoding)
PermissionError: [Errno 13] Permission denied: '/tmp/app.log'
Call stack:
  File "/tmp/.shredder-bootstrap.py.EE1CD1", line 19, in <module>
  File "/usr/lib/python3/dist-packages/shredder/__init__.py", line 43, in run_gui
    sys.exit(APP.run([sys.argv[0]]))
  File "/usr/lib/python3/dist-packages/gi/overrides/Gio.py", line 44, in run
    return Gio.Application.run(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/shredder/tree.py", line 505, in _add_defer
    LOGGER.info(
Message: 'Adding pack: %d/%d'
Arguments: (500, 500)
13:56:13 ⚐ INFO tree:505: Adding pack: 500/500
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/handlers.py", line 69, in emit
    if self.shouldRollover(record):
  File "/usr/lib/python3.8/logging/handlers.py", line 183, in shouldRollover
    self.stream = self._open()
  File "/usr/lib/python3.8/logging/__init__.py", line 1176, in _open
    return open(self.baseFilename, self.mode, encoding=self.encoding)
PermissionError: [Errno 13] Permission denied: '/tmp/app.log'
Call stack:
  File "/tmp/.shredder-bootstrap.py.EE1CD1", line 19, in <module>
  File "/usr/lib/python3/dist-packages/shredder/__init__.py", line 43, in run_gui
    sys.exit(APP.run([sys.argv[0]]))
  File "/usr/lib/python3/dist-packages/gi/overrides/Gio.py", line 44, in run
    return Gio.Application.run(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/shredder/tree.py", line 505, in _add_defer
    LOGGER.info(
Message: 'Adding pack: %d/%d'
Arguments: (500, 500)
13:56:13 ⚐ INFO tree:505: Adding pack: 500/500
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/handlers.py", line 69, in emit
    if self.shouldRollover(record):
  File "/usr/lib/python3.8/logging/handlers.py", line 183, in shouldRollover
    self.stream = self._open()
  File "/usr/lib/python3.8/logging/__init__.py", line 1176, in _open
    return open(self.baseFilename, self.mode, encoding=self.encoding)
PermissionError: [Errno 13] Permission denied: '/tmp/app.log'
Call stack:
  File "/tmp/.shredder-bootstrap.py.EE1CD1", line 19, in <module>
  File "/usr/lib/python3/dist-packages/shredder/__init__.py", line 43, in run_gui
    sys.exit(APP.run([sys.argv[0]]))
  File "/usr/lib/python3/dist-packages/gi/overrides/Gio.py", line 44, in run
    return Gio.Application.run(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/shredder/runner.py", line 299, in on_io_event
    self.emit('process-finished', self._message)
  File "/usr/lib/python3/dist-packages/shredder/views/runner.py", line 304, in on_process_finish
    LOGGER.info('`rmlint` finished.')
Message: '`rmlint` finished.'
Arguments: ()
13:56:13 ⚐ INFO runview:304: `rmlint` finished.
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/handlers.py", line 69, in emit
    if self.shouldRollover(record):
  File "/usr/lib/python3.8/logging/handlers.py", line 183, in shouldRollover
    self.stream = self._open()
  File "/usr/lib/python3.8/logging/__init__.py", line 1176, in _open
    return open(self.baseFilename, self.mode, encoding=self.encoding)
PermissionError: [Errno 13] Permission denied: '/tmp/app.log'
Call stack:
  File "/tmp/.shredder-bootstrap.py.EE1CD1", line 19, in <module>
  File "/usr/lib/python3/dist-packages/shredder/__init__.py", line 43, in run_gui
    sys.exit(APP.run([sys.argv[0]]))
  File "/usr/lib/python3/dist-packages/gi/overrides/Gio.py", line 44, in run
    return Gio.Application.run(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/shredder/tree.py", line 505, in _add_defer
    LOGGER.info(
Message: 'Adding pack: %d/%d'
Arguments: (130, 500)
13:56:13 ⚐ INFO tree:505: Adding pack: 130/500
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/handlers.py", line 69, in emit
    if self.shouldRollover(record):
  File "/usr/lib/python3.8/logging/handlers.py", line 183, in shouldRollover
    self.stream = self._open()
  File "/usr/lib/python3.8/logging/__init__.py", line 1176, in _open
    return open(self.baseFilename, self.mode, encoding=self.encoding)
PermissionError: [Errno 13] Permission denied: '/tmp/app.log'
Call stack:
  File "/tmp/.shredder-bootstrap.py.EE1CD1", line 19, in <module>
  File "/usr/lib/python3/dist-packages/shredder/__init__.py", line 43, in run_gui
    sys.exit(APP.run([sys.argv[0]]))
  File "/usr/lib/python3/dist-packages/gi/overrides/Gio.py", line 44, in run
    return Gio.Application.run(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/shredder/views/runner.py", line 329, in on_delayed_chart_render
    self.rerender_chart()
  File "/usr/lib/python3/dist-packages/shredder/views/runner.py", line 340, in rerender_chart
    LOGGER.info('Refreshing chart.')
Message: 'Refreshing chart.'
Arguments: ()
13:56:14 ⚐ INFO runview:340: Refreshing chart.
ajt@pilot:~$

ProblemType: Bug
DistroRelease: Ubuntu 20.04
Package: rmlint 2.9.0-2
ProcVersionSignature: Ubuntu 5.11.0-40.44~20.04.2-generic 5.11.22
Uname: Linux 5.11.0-40-generic x86_64
NonfreeKernelModules: zfs zunicode zavl icp zcommon znvpair
ApportVersion: 2.20.11-0ubuntu27.21
Architecture: amd64
CasperMD5CheckResult: skip
CurrentDesktop: MATE
Date: Fri Nov 19 14:00:36 2021
InstallationDate: Installed on 2020-05-02 (565 days ago)
InstallationMedia: Ubuntu-MATE 20.04 LTS "Focal Fossa" - Release amd64 (20200423)
SourcePackage: rmlint
UpgradeStatus: No upgrade log present (probably fresh install)

Revision history for this message
Tony Travis (ajtravis) wrote :
Revision history for this message
Tony Travis (ajtravis) wrote :

This is the error running rmlint with the default 16 PB value:

ajt@pilot:~$ rmlint --no-with-color -T duplicates --see-symlinks --partial-hidden -c sh:handler=remove --hardlinked --crossdev --size 1-18446744073709551615 --max-depth 512 -o json -c json:oneline /home/ajt/Documents/Work/Minke
ERROR: cannot parse --size: Max is smaller than min.

Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in rmlint (Ubuntu):
status: New → Confirmed
Revision history for this message
Rolf Leggewie (r0lf) wrote :

Has this been reported upstream?

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.