Frontend requests can exhaust 128 MB while loading the Google Fonts catalog

Aperta
#4,679 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
25/100
Tipo di issue
Bug
Chiarezza
Da chiarire
Stato di attività
Attiva
Stack tecnologico
php, wordpress

Direzione di ricerca

Start with globals/utilities.php around neve_get_google_fonts() (line ~400 in v4.1.4, ~444-453 currently) and trace who calls it from inc/views/font_manager.php (init(), add_body_variants(), enqueue_google_font()), loaded via inc/core/core_loader.php. The report gives no reproduction steps, so the first task is measuring memory before and after theme module init on a 128 MB frontend request. Done means a reproducible memory measurement and a clear root cause; existing tests are in tests/test-neve-file-guards.php.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug-report bug-report-triage crash-report

Summary

A frontend request is expected to complete within the configured PHP memory limit. In the reported Neve 4.1.4 environment, PHP instead terminated the request with an allowed-memory-size fatal while loading the Google Fonts catalog. The affected page could not render. Telemetry recorded repeated failures on two sites using a 128 MB limit.

Customer context

Product / area: Neve frontend typography loading
Version: Neve 4.1.4
Environment: WordPress 7.1.3, PHP 8.3.36, 128 MB PHP memory limit
Integration / third party: Unknown from available evidence
Reported error / symptom: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2097152 bytes) at globals/utilities.php:400
Impact: 120 frontend crash occurrences across two sites from 2026-10-24 through 2026-10-27.

Reproduction notes

Production telemetry reports the frontend fatal at the Google Fonts catalog include in Neve 4.1.4, occurring 120 times across two sites with WordPress 7.1.3, PHP 8.3.36, and a 128 MB limit. The exact page, theme typography settings, active plugins, and pre-include memory usage were not provided. No local runtime reproduction was performed.

Diagnosis

Conclusion

The report is consistent with Neve's frontend typography initialization allocating the Google Fonts catalog while the request has insufficient remaining memory. The telemetry reports 120 occurrences across two sites, and the affected-version source eagerly reads the catalog during normal theme initialization. This supports a recurring product allocation path, although the memory already consumed before Neve reaches it is unknown.

Where this likely occurs
  • inc/core/core_loader.php — Core_Loader::define_modules() approx. lines 83–89 includes Views\Font_Manager in the loaded feature set.
  • inc/views/font_manager.php — Font_Manager::init() and Font_Manager::add_body_variants() approx. lines 90–104 call neve_get_google_fonts( true ) during initialization. The latter path is present in the affected v4.1.4 tag.
  • globals/utilities.php — neve_get_google_fonts() at v4.1.4 approx. line 400 directly includes globals/google-fonts.php; the current implementation at lines 444–453 still reads and returns that catalog through neve_require_array().
  • inc/views/font_manager.php — Font_Manager::enqueue_google_font() approx. lines 209–216 also retrieves the catalog when registering a buffered font.
  • The v4.1.4 catalog file globals/google-fonts.php is 107,148 bytes. Production telemetry identifies the catalog include location, but does not provide memory measurements before that operation.
  • Closed Neve issue #4556 documents a similar catalog-loading memory fatal. It was closed after four occurrences on one site; the current report has 120 occurrences across two sites. It is closed and does not count as an open issue tracking this report.
Engineering notes

The font manager is part of the theme's normal module initialization, so the catalog read is not limited to Customizer requests. The failure occurs when the allocation crosses the configured request limit; the available evidence does not identify what consumed the preceding memory or establish that Neve accounts for the full request footprint. Current source retains the catalog-loading path, although its helper checks file presence and validates the returned value.

Test coverage status

tests/test-neve-file-guards.php covers successful Google Fonts loading, missing catalog handling, and invalid filter results, but no memory-limit assertion was found. Typography e2e coverage exists in e2e-tests/specs/customizer/typography/font-family.spec.ts; no relevant frontend memory coverage was found during inspection.

What to verify or explore next
  • May be worth capturing memory usage immediately before and after theme module initialization on a 128 MB frontend request.
  • If reproducible, checking whether the fatal occurs with no configured Google font and whether it correlates with other plugins or request types may clarify the trigger.
  • May be worth comparing the same request profile on the affected v4.1.4 tag and a current release, since the catalog-loading path remains present.
Unknowns / follow-up

The telemetry lacks active-plugin details, page type, selected-font configuration, memory usage before theme initialization, and a local reproduction. PHP CLI was unavailable in the inspection environment, so the catalog's runtime memory delta was not measured.

Confidence

Confidence: 80/100

Crash 2 recurred 120 times across two sites, and Neve 4.1.4 loads the Google Fonts catalog during frontend initialization; this allocation path remains in current source. The similar issue #4556 is closed, and the newer telemetry provides materially wider recurrence evidence. Crashes 1 and 3 are the same historical autoloader defect, guarded from Neve 4.2.11 onward and tracked in open issue #4605; both affected versions predate that released guard.

Crash telemetry

Occurrences 120
Distinct sites 2
First seen 2026-10-24 23:38 UTC
Last seen 2026-10-27 22:46 UTC
Crash location product:globals/utilities.php:400
Request context frontend
Inside Themeisle SDK no
Product versions 4.1.4
WP versions 7.1.3
PHP versions 8.3.36
SDK versions 3.3.67

Source: automated crash report — neve, fingerprint e5f17586a3d134bc5431629a38b91a43
Generated by bug-report-triage (ID: bug-report-triage_6ae6d5eb37cda9.34524256)

Lingua principale
PHP
Stelle
307
Fork
89
Merge medio
3g 6h
PR unite (30g)
24

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Codeinwp/neve

Tutte le issue di Codeinwp/neve

Issue simili

Altre issue su PHP

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.