Skip to content

dl() breaks expectations regarding permanent or interned strings #9196

@arnaud-lb

Description

@arnaud-lb

Description

Creating this ticket to keep track of some issues related to dl() and permanent / interned strings:

Extensions loaded during a dl() call will try to allocate persistent interned strings for class names, function names, ini entries, etc. Normally, this is not allowed during a request.

The default in-request implementation of zend_string_init_interned still allows it, but the opcache implementation will simply return a non-interned string.

Calling dl() breaks in RC_DEBUG builds: #8606

This also breaks internal enums. The test in this branch will crash in debug builds: https://github.com/php/php-src/compare/master...arnaud-lb:php-src:internal-enums-dl-crash?expand=1

PHP Version

PHP 8.0

Operating System

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions