Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

crash when access not existing property in finally block of try/catch. (version >= 3.17) #4315

Closed
0x450x6c opened this issue Oct 13, 2020 · 3 comments
Labels

Comments

@0x450x6c
Copy link
Contributor

The symfony/cache package has something like this:

<?php

try {
} finally {
    $event->end = null;
}

Psalm crashed on this code with following error message:

psalm-error-report|master ⇒ nix-shell -p php74 --run vendor/bin/psalm
Scanning files...
Analyzing files...

Notice: Undefined index: $event->end in /home/el/projects/tmp/psalm-error-report/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/TryAnalyzer.php on line 541
Uncaught Error: __clone method called on non-object in /home/el/projects/tmp/psalm-error-report/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/TryAnalyzer.php:541
Stack trace:
#0 /home/el/projects/tmp/psalm-error-report/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/StatementsAnalyzer.php(452): Psalm\Internal\Analyzer\Statements\Block\TryAnalyzer::analyze(Object(Psalm\Internal\Analyzer\StatementsAnalyzer), Object(PhpParser\Node\Stmt\TryCatch), Object(Psalm\Context))
#1 /home/el/projects/tmp/psalm-error-report/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/StatementsAnalyzer.php(173): Psalm\Internal\Analyzer\StatementsAnalyzer::analyzeStatement(Object(Psalm\Internal\Analyzer\StatementsAnalyzer), Object(PhpParser\Node\Stmt\TryCatch), Object(Psalm\Context), NULL)
#2 /home/el/projects/tmp/psalm-error-report/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/FileAnalyzer.php(191): Psalm\Internal\Analyzer\StatementsAnalyzer->analyze(Array, Object(Psalm\Context), NULL, true)
#3 /home/el/projects/tmp/psalm-error-report/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php(338): Psalm\Internal\Analyzer\FileAnalyzer->analyze(NULL)
#4 /home/el/projects/tmp/psalm-error-report/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php(578): Psalm\Internal\Codebase\Analyzer->Psalm\Internal\Codebase\{closure}(0, '/home/el/projec...')
#5 /home/el/projects/tmp/psalm-error-report/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php(270): Psalm\Internal\Codebase\Analyzer->doAnalysis(Object(Psalm\Internal\Analyzer\ProjectAnalyzer), 3)
#6 /home/el/projects/tmp/psalm-error-report/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php(639): Psalm\Internal\Codebase\Analyzer->analyzeFiles(Object(Psalm\Internal\Analyzer\ProjectAnalyzer), 3, false, true)
#7 /home/el/projects/tmp/psalm-error-report/vendor/vimeo/psalm/src/psalm.php(675): Psalm\Internal\Analyzer\ProjectAnalyzer->check('/home/el/projec...', false)
#8 /home/el/projects/tmp/psalm-error-report/vendor/vimeo/psalm/psalm(2): require_once('/home/el/projec...')
#9 {main}
(Psalm 3.17.1@8f211792d813e4dc89f04ed372785ce93b902fd1 crashed due to an uncaught Throwable)

This happens only in >=3.17 version.

@psalm-github-bot
Copy link

Hey @0x450x6c, can you reproduce the issue on https://psalm.dev ?

@weirdan
Copy link
Collaborator

weirdan commented Oct 13, 2020

@psalm-github-bot
Copy link

I found these snippets:

https://psalm.dev/r/902fef0d89
<?php
try {} finally {
    $event->end = null;
}
Psalm encountered an internal error:

/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/TryAnalyzer.php: __clone method called on non-object

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants