View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0002287 | Xdebug | Uncategorized | public | 2024-09-05 21:04 | 2024-11-27 15:55 |
| Reporter | bkdotcom | Assigned To | derick | ||
| Priority | normal | Severity | crash | Reproducibility | always |
| Status | resolved | Resolution | no change required | ||
| Platform | Xdebug v3.4.0alpha2-de | OS | OSX | OS Version | 12.7.6 |
| Summary | 0002287: zend_mm_heap corrupted in develop mode | ||||
| Description | Reflecting a class containing new php 8.4 features (property hooks / asymmetric-visibility) with zend_mm_heap corrupted | ||||
| Steps To Reproduce | | ||||
| Additional Information | commenting out any one of the properties and the script will complete... some sort of internal buffer issue?! | ||||
| Tags | No tags attached. | ||||
| Operating System | osx | ||||
| PHP Version | 8.4-dev | ||||
|
|
sorry about the formatting... I don't see and option to fix/edit it :| |
|
|
Attachment for reproducing script. 2287.php (2,036 bytes)
<?php
/**
* PHP 8.4 property hooks & asymmetric visibility
*/
class NewFeatures
{
public protected(set) ?string $name;
protected private(set) ?int $age;
// public static array $static = [];
public ?string $backedGetOnly {
get => $this->backedGetOnly;
}
public ?string $backedSetOnly {
set (?string $value) {
$this->backedSetOnly = $value;
}
}
public ?string $backedGetAndSet {
set (?string $value) {
$this->backedGetAndSet = $value;
}
get => $this->backedGetAndSet;
}
public $things = [];
public string $virtualGetOnly {
get => \implode(', ', $this->things);
}
public string $virtualSetOnly {
set (string $value) {
$this->things[] = $value;
}
}
public string $virtualGetAndSet {
set (string $value) {
$this->things[] = $value;
}
get => \implode(', ', $this->things);
}
}
$newFeatures = new NewFeatures();
$refObj = new ReflectionObject($newFeatures);
$refProps = $refObj->getProperties();
foreach ($refProps as $refProp) {
propInfo($refProp, $newFeatures);
}
echo 'the end' . "\n\n";
function propInfo(ReflectionProperty $refProperty, $obj)
{
$info = array(
'hooks' => \array_keys($refProperty->getHooks()),
'isVirtual' => $refProperty->isVirtual(), // at least one hook and none of the hooks reference the property
'value' => null,
);
$isWriteOnly = $info['isVirtual'] && \in_array('get', $info['hooks'], true) === false;
if ($isWriteOnly) {
return;
}
$refProperty->setAccessible(true);
if ($refProperty->isInitialized($obj)) {
try {
$info['value'] = $refProperty->isStatic() === false && $refProperty->isVirtual() === false
? $refProperty->getRawValue($obj)
: $refProperty->getValue($obj);
} catch (\Error $e) {
echo 'Error: ' . $e->getMessage() . "\n";
}
}
}
|
|
|
I didn't manage to reproduce this. Can you share the output of |
|
|
xdebug_info output attached xdebug_info.txt (3,914 bytes)
__ __ _ _
\ \ / / | | | |
\ V / __| | ___| |__ _ _ __ _
> < / _` |/ _ \ '_ \| | | |/ _` |
/ . \ (_| | __/ |_) | |_| | (_| |
/_/ \_\__,_|\___|_.__/ \__,_|\__, |
__/ |
|___/
Version => 3.4.0alpha2-dev
Support Xdebug on Patreon, GitHub, or as a business: https://xdebug.org/support
Enabled Features (through 'xdebug.mode' setting)
Feature => Enabled/Disabled
Development Helpers => ✔ enabled
Coverage => ✔ enabled
GC Stats => ✘ disabled
Profiler => ✘ disabled
Step Debugger => ✔ enabled
Tracing => ✘ disabled
Optional Features
Compressed File Support => yes (gzip)
Clock Source => clock_gettime_nsec_np
'xdebug://gateway' pseudo-host support => no
'xdebug://nameserver' pseudo-host support => no
Systemd Private Temp Directory => not enabled
Diagnostic Log
No messages
Step Debugging
Debugger is not active
PHP
Build Configuration
Version (Run Time) => 8.4.0-dev
Version (Compile Time) => 8.4.0-dev
Debug Build => no
Thread Safety => disabled
Settings
Configuration File (php.ini) Path => /usr/local/etc/php/8.4
Loaded Configuration File => /usr/local/etc/php/8.4/php.ini
Scan this dir for additional .ini files => /usr/local/etc/php/8.4/conf.d
Additional .ini files parsed => /usr/local/etc/php/8.4/conf.d/20-xdebug.ini,
/usr/local/etc/php/8.4/conf.d/ext-opcache.ini
Directive => Local Value => Master Value
xdebug.mode => debug,coverage,develop => debug,coverage,develop
xdebug.start_with_request => trigger => trigger
xdebug.start_upon_error => default => default
xdebug.output_dir => /var/tmp/ => /var/tmp/
xdebug.use_compression => 1 => 1
xdebug.trigger_value => no value => no value
xdebug.file_link_format => no value => no value
xdebug.filename_format => no value => no value
xdebug.log => no value => no value
xdebug.log_level => 7 => 7
xdebug.var_display_max_children => 128 => 128
xdebug.var_display_max_data => 512 => 512
xdebug.var_display_max_depth => 3 => 3
xdebug.max_nesting_level => 512 => 512
xdebug.cli_color => 0 => 0
xdebug.force_display_errors => Off => Off
xdebug.force_error_reporting => 0 => 0
xdebug.halt_level => 0 => 0
xdebug.max_stack_frames => -1 => -1
xdebug.show_error_trace => Off => Off
xdebug.show_exception_trace => Off => Off
xdebug.show_local_vars => Off => Off
xdebug.dump.COOKIE => no value => no value
xdebug.dump.ENV => no value => no value
xdebug.dump.FILES => no value => no value
xdebug.dump.GET => no value => no value
xdebug.dump.POST => no value => no value
xdebug.dump.REQUEST => no value => no value
xdebug.dump.SERVER => no value => no value
xdebug.dump.SESSION => no value => no value
xdebug.dump_globals => On => On
xdebug.dump_once => On => On
xdebug.dump_undefined => Off => Off
xdebug.profiler_output_name => cachegrind.out.%p => cachegrind.out.%p
xdebug.profiler_append => Off => Off
xdebug.cloud_id => no value => no value
xdebug.client_host => 127.0.0.1 => 127.0.0.1
xdebug.client_port => 9000 => 9000
xdebug.discover_client_host => Off => Off
xdebug.client_discovery_header => HTTP_X_FORWARDED_FOR,REMOTE_ADDR => HTTP_X_FORWARDED_FOR,REMOTE_ADDR
xdebug.idekey => no value => no value
xdebug.connect_timeout_ms => 200 => 200
xdebug.scream => Off => Off
xdebug.gc_stats_output_name => gcstats.%p => gcstats.%p
xdebug.trace_output_name => trace.%c => trace.%c
xdebug.trace_format => 0 => 0
xdebug.trace_options => 0 => 0
xdebug.collect_assignments => Off => Off
xdebug.collect_params => On => On
xdebug.collect_return => Off => Off |
|
|
Hi, I've tried it again, with the exact same settings as you have, but no success in reproducing this. Can you try Xdebug 3.4.0beta1 perhaps? cheers, |
|
|
CAN BE CLOSED Working for me now (more recent php 8.4 build) php -v Thank you for your time! |
|
|
Thanks for letting me know. If it returns with Xdebug 3.4.0 (out soon), then please open a new ticket! cheers, |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2024-09-05 21:04 | bkdotcom | New Issue | |
| 2024-09-06 13:21 | bkdotcom | Note Added: 0007050 | |
| 2024-10-04 14:32 | derick | Steps to Reproduce Updated | |
| 2024-10-04 14:33 | derick | Note Added: 0007053 | |
| 2024-10-04 14:33 | derick | File Added: 2287.php | |
| 2024-10-08 15:26 | derick | Assigned To | => derick |
| 2024-10-08 15:26 | derick | Status | new => feedback |
| 2024-10-08 15:26 | derick | Note Added: 0007066 | |
| 2024-10-13 19:56 | bkdotcom | Note Added: 0007076 | |
| 2024-10-13 19:56 | bkdotcom | File Added: xdebug_info.txt | |
| 2024-10-13 19:56 | bkdotcom | Status | feedback => assigned |
| 2024-10-16 16:22 | derick | Status | assigned => feedback |
| 2024-10-16 16:22 | derick | Note Added: 0007077 | |
| 2024-10-18 01:15 | bkdotcom | Note Added: 0007078 | |
| 2024-10-18 01:15 | bkdotcom | Status | feedback => assigned |
| 2024-11-27 15:55 | derick | Status | assigned => resolved |
| 2024-11-27 15:55 | derick | Resolution | open => no change required |
| 2024-11-27 15:55 | derick | Note Added: 0007089 |