Open mstilkerich opened 1 year ago
@mstilkerich
can you please run php --rc gdimage
at the same PHP interpreter as you used for Psalm? Most likely you use PHP < 8.0 to run psalm or gd ext is not installed
@weirdan
idea 1: How about creation a special documentation for Could not get class storage for ...
issues? We can customize exaception message to something like
throw new InvalidArgumentException("Could not get class storage for {$fq_classlike_name} class (see https://psalm.dev/fatals/001)");
idea 2: How about a new psalm command to dump all important config and env info? - config, loaded plugins, stubs, etc
Hello,
below is the output you asked for. But just to be clear: The PHP interpreter (currently v8.2.1) is not changed. What I did change is only the --php-version
command-line option for psalm.
The following three commands have been directly executed in sequence without anything in between.
Can you still reproduce it with latest 5.x?
Yes, it's still the same with 5.15.
Can you reproduce it with --no-cache
? And with --threads=1 --debug-by-line >log.file 2>&1
(here the really interesting part would be a couple of dozens lines before the crash).
With --no-cache
the crash does not occur.
So here is the debug-by-line log without using --no-cache
.
Btw, the analyzed source files you can take a look at here if needed.
vendor/bin/psalm --threads=1 --report=testreports/psalm.txt --report-show-info=true --no-diff --php-version=7.4 --debug-by-line >psalm74.log 2>&1
vendor/bin/psalm --threads=1 --report=testreports/psalm.txt --report-show-info=true --no-diff --php-version=8.0 --debug-by-line >psalm80.log 2>&1
Can you also confirm you have the gd
extension installed? php --rc gdimage
should produce something similar to
Class [ <internal:gd> final class GdImage ] {
- Constants [0] {
}
- Static properties [0] {
}
- Static methods [0] {
}
- Properties [0] {
}
- Methods [0] {
}
}
Unfortunately I can't reproduce the issue. I did the following:
mstilkerich/roundcubemail
into roundcubemail
foldercomposer update
vendor/bin/psalm --threads=1 --report=testreports/psalm.txt --report-show-info=true --no-diff --php-version=7.4 --debug-by-line >psalm74.log 2>&1
vendor/bin/psalm --threads=1 --report=testreports/psalm.txt --report-show-info=true --no-diff --php-version=8.0 --debug-by-line >psalm80.log 2>&1
Actually I've managed to reproduce it now.
Narrowed it down to this:
<?php
namespace MStilkerich\RCMCardDAV;
final class Tst
{
private function f(): void
{
imagesy(imagecreatefromstring(''));
}
}
Actually I've managed to reproduce it now.
And it disappeared again. :confused:
When running psalm with
--php-version=8.0
or higher, it crashes with the stack trace shown below. The issue does not happen when I set a 7.x PHP version.It appears the issue is caused by the code line:
The full file is here. Though I am not sure, because the issue sometimes disappears when I save the file, even after reverting back to the original content. So maybe it is also related to some cache that gets invalidated just by the updated mtime of the file and is not related to my change at all.