beetbox / pyacoustid

Python bindings for Chromaprint acoustic fingerprinting and the Acoustid Web service
MIT License
325 stars 66 forks source link

fingerprinting fails with 'ValueError: operation forbidden on released memoryview object' #61

Closed ssssam closed 4 years ago

ssssam commented 4 years ago

Since upgrading to Fedora 33 which brings Python 3.9, the beet import command fails for me. Here's a traceback:

  File "/home/sam/.local/bin/beet", line 11, in <module>
    load_entry_point('beets', 'console_scripts', 'beet')()
  File "/usr/lib/python3.9/site-packages/beets/ui/__init__.py", line 1266, in main
    _raw_main(args)
  File "/usr/lib/python3.9/site-packages/beets/ui/__init__.py", line 1253, in _raw_main
    subcommand.func(lib, suboptions, subargs)
  File "/usr/lib/python3.9/site-packages/beets/ui/commands.py", line 955, in import_func
    import_files(lib, paths, query)
  File "/usr/lib/python3.9/site-packages/beets/ui/commands.py", line 925, in import_files
    session.run()
  File "/usr/lib/python3.9/site-packages/beets/importer.py", line 329, in run
    pl.run_parallel(QUEUE_SIZE)
  File "/usr/lib/python3.9/site-packages/beets/util/pipeline.py", line 445, in run_parallel
    six.reraise(exc_info[0], exc_info[1], exc_info[2])
  File "/home/sam/.local/lib/python3.9/site-packages/six.py", line 696, in reraise
    raise value
  File "/usr/lib/python3.9/site-packages/beets/util/pipeline.py", line 312, in run
    out = self.coro.send(msg)
  File "/usr/lib/python3.9/site-packages/beets/util/pipeline.py", line 194, in coro
    func(*(args + (task,)))
  File "/usr/lib/python3.9/site-packages/beets/importer.py", line 1344, in lookup_candidates
    plugins.send('import_task_start', session=session, task=task)
  File "/usr/lib/python3.9/site-packages/beets/plugins.py", line 489, in send
    result = handler(**arguments)
  File "/usr/lib/python3.9/site-packages/beets/plugins.py", line 143, in wrapper
    return func(*args, **kwargs)
  File "/usr/lib/python3.9/site-packages/beetsplug/chroma.py", line 182, in fingerprint_task
    return fingerprint_task(self._log, task, session)
  File "/usr/lib/python3.9/site-packages/beetsplug/chroma.py", line 251, in fingerprint_task
    acoustid_match(log, item.path)
  File "/usr/lib/python3.9/site-packages/beetsplug/chroma.py", line 91, in acoustid_match
    duration, fp = acoustid.fingerprint_file(util.syspath(path))
  File "/usr/lib/python3.9/site-packages/acoustid.py", line 333, in fingerprint_file
    return _fingerprint_file_audioread(path, maxlength)
  File "/usr/lib/python3.9/site-packages/acoustid.py", line 275, in _fingerprint_file_audioread
    fp = fingerprint(f.samplerate, f.channels, iter(f), maxlength)
  File "/usr/lib/python3.9/site-packages/acoustid.py", line 217, in fingerprint
    fper.feed(block)
  File "/usr/lib/python3.9/site-packages/chromaprint.py", line 145, in feed
    data = BYTES_TYPE(data)
ValueError: operation forbidden on released memoryview object
ssssam commented 4 years ago

This appears to be caused by a change in GStreamer's Python bindings: https://gitlab.freedesktop.org/gstreamer/gst-python/-/commit/fecfe451a7566740960d87da8a177f8a776f6137