Skip to content

[Bug]: Error during preview generation of .mp3 file #37688

@langfingaz

Description

@langfingaz

⚠️ This issue respects the following points: ⚠️

  • This is a bug, not a question or a configuration/webserver/proxy issue.
  • This issue is not already reported on Github (I've searched it).
  • Nextcloud Server is up to date. See Maintenance and Release Schedule for supported versions.
  • Nextcloud Server is running on 64bit capable CPU, PHP and OS.
  • I agree to follow Nextcloud's Code of Conduct.

Bug description

I get the following error during preview generation of one problematic .mp3 file. The generation stops at this error and does not continue.

2023-04-12T09:41:58+00:00 Generating previews for /Eowyn/files/190203_0000_Zuendfunk_Was-Porno-und-Politik-miteinander-zu-tun-ha.mp3
An unhandled exception has been thrown:
TypeError: chr(): Argument #1 ($codepoint) must be of type int, string given in /var/www/html/3rdparty/christophwurst/id3parser/src/getID3/Tags/getid3_id3v2.php:3328
Stack trace:
#0 /var/www/html/3rdparty/christophwurst/id3parser/src/getID3/Tags/getid3_id3v2.php(3328): chr('\x00')
#1 /var/www/html/3rdparty/christophwurst/id3parser/src/getID3/Tags/getid3_id3v2.php(3345): ID3Parser\getID3\Tags\getid3_id3v2::IsANumber('\x00Bayeris', false)
#2 /var/www/html/3rdparty/christophwurst/id3parser/src/getID3/Tags/getid3_id3v2.php(1660): ID3Parser\getID3\Tags\getid3_id3v2::IsValidDateStampString('\x00Bayeris')
#3 /var/www/html/3rdparty/christophwurst/id3parser/src/getID3/Tags/getid3_id3v2.php(338): ID3Parser\getID3\Tags\getid3_id3v2->ParseID3v2Frame(Array)
#4 /var/www/html/3rdparty/christophwurst/id3parser/src/getID3/getid3.php(164): ID3Parser\getID3\Tags\getid3_id3v2->Analyze()
#5 /var/www/html/3rdparty/christophwurst/id3parser/src/ID3Parser.php(20): ID3Parser\getID3\getid3->analyze('/var/www/html/d...')
#6 /var/www/html/lib/private/Preview/MP3.php(51): ID3Parser\ID3Parser->analyze('/var/www/html/d...')
#7 /var/www/html/lib/private/Preview/GeneratorHelper.php(65): OC\Preview\MP3->getThumbnail(Object(OC\Files\Node\File), 512, 512)
#8 /var/www/html/lib/private/Preview/Generator.php(343): OC\Preview\GeneratorHelper->getThumbnail(Object(OC\Preview\MP3), Object(OC\Files\Node\File), 512, 512)
#9 /var/www/html/lib/private/Preview/Generator.php(162): OC\Preview\Generator->getMaxPreview(Object(OC\Files\SimpleFS\SimpleFolder), Object(OC\Files\Node\File), 'audio/mpeg', '')
#10 /var/www/html/lib/private/PreviewManager.php(200): OC\Preview\Generator->generatePreviews(Object(OC\Files\Node\File), Array, 'audio/mpeg')
#11 /var/www/html/custom_apps/previewgenerator/lib/Command/Generate.php(230): OC\PreviewManager->generatePreviews(Object(OC\Files\Node\File), Array)
#12 /var/www/html/custom_apps/previewgenerator/lib/Command/Generate.php(212): OCA\PreviewGenerator\Command\Generate->parseFile(Object(OC\Files\Node\File))
#13 /var/www/html/custom_apps/previewgenerator/lib/Command/Generate.php(190): OCA\PreviewGenerator\Command\Generate->parseFolder(Object(OC\Files\Node\Folder), Array)
#14 /var/www/html/custom_apps/previewgenerator/lib/Command/Generate.php(142): OCA\PreviewGenerator\Command\Generate->generateUserPreviews(Object(OC\User\User))
#15 /var/www/html/3rdparty/symfony/console/Command/Command.php(255): OCA\PreviewGenerator\Command\Generate->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#16 /var/www/html/3rdparty/symfony/console/Application.php(1009): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#17 /var/www/html/3rdparty/symfony/console/Application.php(273): Symfony\Component\Console\Application->doRunCommand(Object(OCA\PreviewGenerator\Command\Generate), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 /var/www/html/3rdparty/symfony/console/Application.php(149): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#19 /var/www/html/lib/private/Console/Application.php(213): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 /var/www/html/console.php(100): OC\Console\Application->run()
#21 /var/www/html/occ(11): require_once('/var/www/html/c...')

In MusicBrainz Picard I can see the following tags of the problematic .mp3 file:

image


This bug is maybe related to #35899. However, my stack trace is a different one (getid3_id3v2->ParseID3v2Frame() and strpos() vs getid3_id3v2::IsANumber('\x00Bayeris', false)).

Steps to reproduce

You can download a copy of the .mp3 file here: https://cloud.privacy1st.de/s/Qy5KDkESadJ4RRM

  1. Place the .mp3 file in a Nextcloud directory
  2. Start preview generation e.g. with generate-all
  3. The preview generation stops with an error at the .mp3 file

Expected behavior

Either the preview should be generated successfully or the error should be caught (and reported) and the preview generation should continue.

Installation method

Community Docker image

Nextcloud Server version

25.0.5

Operating system

Other

PHP engine version

None

Web server

Nginx

Database engine version

MairaDB

Is this bug present after an update or on a fresh install?

I haven't tested this.

Are you using the Nextcloud Server Encryption module?

Encryption is Disabled

What user-backends are you using?

  • Default user-backend (database)
  • LDAP/ Active Directory
  • SSO - SAML
  • Other

Configuration report

{   
    "system": {
        "memcache.local": "\\OC\\Memcache\\APCu",
        "apps_paths": [
            {   
                "path": "\/var\/www\/html\/apps",
                "url": "\/apps",
                "writable": false
            },
            {   
                "path": "\/var\/www\/html\/custom_apps",
                "url": "\/custom_apps",
                "writable": true
            }
        ],
        "mail_smtpmode": "smtp",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpport": "465",
        "mail_smtpsecure": "ssl",
        "mail_smtpauth": true,
        "mail_smtpauthtype": "login",
        "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
        "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "mysql",
        "version": "25.0.4.1",
        "overwrite.cli.url": "https:\/\/cloud.privacy1st.de",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "theme": "",
        "loglevel": 1,
        "maintenance": false,
        "memcache.distributed": "\\OC\\Memcache\\Redis",
        "memcache.locking": "\\OC\\Memcache\\Redis",
        "redis": {
            "host": "***REMOVED SENSITIVE VALUE***",
            "password": "***REMOVED SENSITIVE VALUE***",
            "port": 6379
        },
        "trusted_proxies": "***REMOVED SENSITIVE VALUE***",
        "overwriteprotocol": "https",
        "encryption.legacy_format_support": false,
        "share_folder": "\/shared",
        "default_phone_region": "DE",
        "activity_expire_days": 30,
        "activity_use_cached_mountpoints": false,
        "upgrade.disable-web": false,
        "simpleSignUpLink.shown": false,
        "app_install_overwrite": [
            "talk_simple_poll"
        ],
        "preview_max_scale_factor": "1",
        "preview_max_x": "512",
        "preview_max_y": "512",
        "trusted_domains": [
            "cloud.privacy1st.de",
            "c.p1st.de",
            "p1st.de"
        ]
    }
}

List of activated Apps

Enabled:
  - activity: 2.17.0
  - bookmarks: 12.1.0
  - calendar: 4.3.2
  - camerarawpreviews: 0.8.1
  - checksum: 1.2.1
  - circles: 25.0.0
  - cloud_federation_api: 1.8.0
  - comments: 1.15.0
  - contacts: 5.2.0
  - contactsinteraction: 1.6.0
  - cospend: 1.5.8
  - dav: 1.24.0
  - deck: 1.8.3
  - drawio: 2.1.1
  - federatedfilesharing: 1.15.0
  - federation: 1.15.0
  - files: 1.20.1
  - files_downloadactivity: 1.16.0
  - files_linkeditor: 1.1.14
  - files_pdfviewer: 2.6.0
  - files_rightclick: 1.4.0
  - files_sharing: 1.17.0
  - forms: 3.2.0
  - gpoddersync: 3.8.0
  - gpxpod: 5.0.10
  - logreader: 2.10.0
  - lookup_server_connector: 1.13.0
  - maps: 1.0.2
  - metadata: 0.18.0
  - news: 21.1.0
  - nextcloud_announcements: 1.14.0
  - notifications: 2.13.1
  - oauth2: 1.13.0
  - onlyoffice: 7.8.0
  - password_policy: 1.15.0
  - photos: 2.0.1
  - polls: 5.0.0
  - previewgenerator: 5.2.2
  - privacy: 1.9.0
  - provisioning_api: 1.15.0
  - quota_warning: 1.16.0
  - related_resources: 1.0.4
  - settings: 1.7.0
  - sharebymail: 1.15.0
  - spreed: 15.0.5
  - survey_client: 1.13.0
  - suspicious_login: 4.3.0
  - systemtags: 1.15.0
  - tasks: 0.14.5
  - text: 3.6.0
  - theming: 2.0.1
  - twofactor_backupcodes: 1.14.0
  - twofactor_nextcloud_notification: 3.6.0
  - updatenotification: 1.15.0
  - viewer: 1.9.0
  - workflowengine: 2.7.0

Nextcloud Signing status

No errors have been found.

Nextcloud Logs

I checked my log files, but no log entry is written there when the preview generation stops.

Additional info

No response

Metadata

Metadata

Assignees

Labels

0. Needs triagePending check for reproducibility or if it fits our roadmap25-feedbackbug

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions