Warnings from libpng in Nextcloud cron output

Nextcloud version: 29.0.0
Operating system and version: FreeBSD v14.0
Apache or nginx version: Apache 24.5.9
PHP version: PHP 8.0

The Nextcloud cron output contains warnings from libpng related to PNG files but does not indicate the file names and paths, and as a result the files cannot easily be inspected (and potentially corrected).

Is this the first time you’ve seen this error? (Y/N): Y

Steps to replicate it:

  1. Add problem PNG files to local Nexcloud directory
  2. Let Desktop agent sync files to server
  3. Wait for Nextcloud cron to run and observe errors in cron log (in my system, errors are emailed to the sysadmin - me.

The output of your Nextcloud log in Admin > Logging:

< no relevant errors >

Warnings in nextcloud cron output.

libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile

Did you read this

Maybe it helps.

Do you have imagemagick and php-imagick installed?


Much and good luck,
ernolf

1 Like

Thanks @Ernolf, I appreciate you responding. If I understand correctly, libpng is simply reporting some PNG files are not constructed correctly, but I don’t know which ones (although I have suspects). I was hoping someone would be able to say how to find out which files they are. Since then I’ve thought of perhaps running the Nextcloud cron script manually with more verbosity to see if it will output full filepaths, or perhaps I can examine the Nextcloud log for PNG files added in the period between the run producing the errors and the previous run. I’m curious why I haven’t seen the error again though…

As for suspects, I had scraped an old website shortly before the error (I wanted to preserve the documentation for the web timesheet software I’m using, which I fear may be abandoned before the year is out). I could inspect the PNG files by brute force, but they’re buried in multiple levels of sub-directories and will require a complex command using “find”, or perhaps search for PNG files first to get the paths, then build a simpler script knowing the file paths a priori.

I would certainly appreciate yours or anyone elses thoughts on this.

Cheers,
Dale

P.S. the php modules loaded are:

dale@whizzer:~ % php -m
[PHP Modules]
bcmath
bz2
Core
ctype
curl
date
dom
exif
fileinfo
filter
gd
gettext
gmp
hash
iconv
imagick
imap
intl
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
soap
sodium
SPL
sqlite3
standard
sysvsem
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
xsl
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache

dale@whizzer:~ % 

Hmmm, running the Nextcloud cron manually shows no errors.

dale@whizzer: % sudo -u www php /usr/local/www/nextcloud/cron.php
dale@whizzer: %

The warning was reported 56 hrs ago, once only, no warnings since, and the Nextcloud cron job runs every five minutes (i.e. has run 1120 times since with no warnings reported).

I’ll note this in the server log, but it doesn’t seem worth spending more time trying to figure out the cause.

Simply “running cron manually” is a very imprecise method of finding out something.
The cron job is just a hook that executes jobs that have been queued up from all sides of the server. So the same jobs are not executed every time cron is called. That is why you should check, what exact job was executed at the moment those error message where thrown.

You get the joblist with

occ background-job:list -l 100

It is quite possible that the malide png files have all been processed by now and the message no longer appears.


Much and good luck,
ernolf

1 Like

Ah, yes, that makes sense, my assumption was obviously naive in hindsight. In this case it seems reasonable that the warnings only appear once, presumably when the malide (I learned a new word! :slight_smile: ) PNG files were added to the repository.

Where does this command get data from? The output is only 55 lines and starts last night. As of this writing, that is 12 hrs ago and the libpng warning was reported about 70 hrs ago. Coincidently, I manually rolled the log file about the same time as the start of the background-job:list output (12-1/2 hrs ago), but the new log file is still empty so I presume the output is coming from another source.

dale@whizzer:/usr/local/www/nextcloud % sudo -u www ./occ background-job:list -l 200
The process control (PCNTL) extensions are required in case you want to interrupt long running commands - see https://www.php.net/manual/en/book.pcntl.php
Additionally the function 'pcntl_signal' and 'pcntl_signal_dispatch' need to be enabled in your php.ini.
+-------+-------------------------------------------------------------------+---------------------------+----------+
| id    | class                                                             | last_run                  | argument |
+-------+-------------------------------------------------------------------+---------------------------+----------+
| 1     | OCA\Files_Sharing\DeleteOrphanedSharesJob                         | 2024-06-13T21:30:00+00:00 | null     |
| 2     | OCA\Files_Sharing\ExpireSharesJob                                 | 2024-06-13T21:35:00+00:00 | null     |
| 3     | OCA\Files_Sharing\BackgroundJob\FederatedSharesDiscoverJob        | 2024-06-13T21:35:00+00:00 | null     |
| 5     | OCA\Files_Versions\BackgroundJob\ExpireVersions                   | 2024-06-14T14:00:00+00:00 | null     |
| 6     | OCA\UserStatus\BackgroundJob\ClearOldStatusesBackgroundJob        | 2024-06-14T14:30:00+00:00 | null     |
< snip >

Thanks for your help,
Dale

Those are in the ‘oc_jobs’ table of the database.

This is how to query:

SELECT * FROM oc_jobs;

Much and good luck,
ernolf