Skip to content
New issue

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

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

Already on GitHub? # to your account

Assertion `source_list->ptr == prop' failed. in psalm #16831

Closed
danog opened this issue Nov 16, 2024 · 4 comments
Closed

Assertion `source_list->ptr == prop' failed. in psalm #16831

danog opened this issue Nov 16, 2024 · 4 comments

Comments

@danog
Copy link
Contributor

danog commented Nov 16, 2024

Description

Got the following assertion when running multiple Psalm unit tests: https://github.com/danog/php-src/actions/runs/11871508040/job/33084124984#step:10:1959

php: /home/runner/work/php-src/php-src/Zend/zend_execute.c:3975: zend_ref_del_type_source: Assertion `source_list->ptr == prop' failed.

Config is in #12406, reproducer command is:

php --repeat 2 -f .github/jit_check.php /tmp/psalm/vendor/bin/phpunit /tmp/psalm/tests/UnusedVariableTest.php

PHP Version

nightly

Operating System

No response

@nielsdos
Copy link
Member

nielsdos commented Mar 2, 2025

I pushed a fix today with a reference handling fix that affects both the interpreter and the JIT. Would be great if this could be retested on the current master branch.

@danog
Copy link
Contributor Author

danog commented Mar 5, 2025

This specific issue seems to be absent; there were quite a few (possibly false positive) leak detections by asan though.

Would you be available to merge #12406 if I were to update the PR, keeping the new nightly.php parallelization script to reduce runtimes?

It seems a bit silly to me that e2e tests are rendered less capable of finding JIT bugs just to avoid using some extra github action minutes.

@danog
Copy link
Contributor Author

danog commented Mar 5, 2025

For example, when running bugs/16_psalm_all.sh from https://github.com/danog/jit_bugs:

psalm (be92afa0733581f53247c1f4d01b60af12151bd9): /usr/bin/php --repeat 2 -f /app/wrap.php /tmp/psalm/vendor/bin/phpunit /tmp/psalm/tests/CastTest.php terminated with status 139:
Executing for the first time...
PHPUnit 9.6.22 by Sebastian Bergmann and contributors.

Random Seed:   1741166712

S.S.S                                                               5 / 5 (100%)

Time: 13:47.450, Memory: 0 bytes

OK, but incomplete, skipped, or risky tests!
Tests: 5, Assertions: 2, Skipped: 3.
Finished execution, repeating...
PHPUnit 9.6.22 by Sebastian Bergmann and contributors.

Random Seed:   1741167541

S.SS.                                                               5 / 5 (100%)

Time: 00:11.246, Memory: 0 bytes

OK, but incomplete, skipped, or risky tests!
Tests: 5, Assertions: 2, Skipped: 3.

=================================================================
==430==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 256 byte(s) in 8 object(s) allocated from:
    #0 0x71f9513327e0 in realloc (/usr/lib/llvm-19/lib/clang/19/lib/linux/libclang_rt.asan-x86_64.so+0x10b7e0) (BuildId: 099ae46d67ba6d4420a132d1488f30c4c6978d9e)
    #1 0x5e73a4581fab in __zend_realloc /php-src/Zend/zend_alloc.c:3299:6
    #2 0x5e73a4581a5c in _erealloc /php-src/Zend/zend_alloc.c:2758:10
    #3 0x71f94acfdbe4 in zend_jit_fast_concat_tmp_helper /php-src/ext/opcache/jit/zend_jit_helpers.c:1790:6
    #4 0x71f94242e478  (<unknown module>)
    #5 0x5e73a46c0cff in zend_execute /php-src/Zend/zend_vm_execute.h:64247:2
    #6 0x5e73a4a773d0 in zend_execute_script /php-src/Zend/zend.c:1943:3
    #7 0x5e73a43824ff in php_execute_script_ex /php-src/main/main.c:2584:13
    #8 0x5e73a43829b8 in php_execute_script /php-src/main/main.c:2624:9
    #9 0x5e73a4a7d4bd in do_cli /php-src/sapi/cli/php_cli.c:952:5
    #10 0x5e73a4a7b8d7 in main /php-src/sapi/cli/php_cli.c:1355:18
    #11 0x71f95046a1c9  (/lib/x86_64-linux-gnu/libc.so.6+0x2a1c9) (BuildId: 42c84c92e6f98126b3e2230ebfdead22c235b667)
    #12 0x71f95046a28a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a28a) (BuildId: 42c84c92e6f98126b3e2230ebfdead22c235b667)
    #13 0x5e73a3806004 in _start (/usr/bin/php+0x406004) (BuildId: 556df9bda14ce0e414ffaf1a837d571805ee9e1d)

SUMMARY: AddressSanitizer: 256 byte(s) leaked in 8 allocation(s).

The supposed leak always happens in zend_jit_fast_concat_tmp_helper

@nielsdos
Copy link
Member

nielsdos commented Mar 5, 2025

The leak should be fixed via #17977, turns out it was not JIT specific.
As for your PR: I think it's valuable, I think we should rebase it and see what the current issues are, fix them, and once fixed we should consider merging.
As for this issue: as it no longer reproduces we can close this. Thanks.

@nielsdos nielsdos closed this as completed Mar 5, 2025
# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

No branches or pull requests

2 participants