{"data":{"id":"magento2-38794","source":"github-pr","sourceRef":"magento/magento2#38794","title":"avoid a misconfiguration infinite loop","pr":{"number":38794,"url":"https://github.com/magento/magento2/pull/38794","author":"ergohack","mergedAt":"2024-12-21T01:10:09Z","mergeCommit":"afa6914f3e86ace6d575303f81a9aa645e81df78","headCommit":"aff5fc0152e65dd1c0762ec98105e01684c9003b","baseRef":"2.4-develop","diffSha256":"e408a62b4a4d714f6898a83ad9d447c8ae0cf14a361bb6b696864e04210557cb"},"issues":[{"number":38822,"url":"https://github.com/magento/magento2/issues/38822","title":"[Issue] avoid a misconfiguration infinite loop","labels":["Area: Framework","Component: Backend","Issue: Confirmed","Priority: P2","Progress: done","Reported on 2.4.x","Reproduced on 2.4.x","Triage: Dev.Experience"],"kind":"pr-derived"}],"fixedIn":"2.4.8","containingTags":["2.4.8","2.4.8-p1","2.4.8-p2","2.4.8-p3","2.4.8-p4","2.4.8-p5","2.4.9"],"reportedOn":null,"codeMatch":{"2.4.6":"clean","2.4.6-p1":"clean","2.4.6-p2":"clean","2.4.6-p3":"clean","2.4.6-p4":"clean","2.4.6-p5":"clean","2.4.6-p6":"clean","2.4.6-p7":"clean","2.4.6-p8":"clean","2.4.6-p9":"clean","2.4.6-p10":"clean","2.4.6-p11":"clean","2.4.6-p12":"clean","2.4.6-p13":"clean","2.4.6-p14":"clean","2.4.6-p15":"clean","2.4.7":"clean","2.4.7-p1":"clean","2.4.7-p2":"clean","2.4.7-p3":"clean","2.4.7-p4":"clean","2.4.7-p5":"clean","2.4.7-p6":"clean","2.4.7-p7":"clean","2.4.7-p8":"clean","2.4.7-p9":"clean","2.4.7-p10":"clean","2.4.8":"conflict","2.4.8-p1":"conflict","2.4.8-p2":"conflict","2.4.8-p3":"conflict","2.4.8-p4":"conflict","2.4.8-p5":"conflict","2.4.9":"conflict"},"affectedVersions":["2.4.6","2.4.6-p1","2.4.6-p2","2.4.6-p3","2.4.6-p4","2.4.6-p5","2.4.6-p6","2.4.6-p7","2.4.6-p8","2.4.6-p9","2.4.6-p10","2.4.6-p11","2.4.6-p12","2.4.6-p13","2.4.6-p14","2.4.6-p15","2.4.7","2.4.7-p1","2.4.7-p2","2.4.7-p3","2.4.7-p4","2.4.7-p5","2.4.7-p6","2.4.7-p7","2.4.7-p8","2.4.7-p9","2.4.7-p10"],"components":["magento/framework"],"files":[{"path":"lib/internal/Magento/Framework/ObjectManager/Config/Config.php","change":"modified","package":"magento/framework"}],"stripped":{"tests":[],"docs":[],"outsideCode":[]},"linesChanged":11,"mergeBatched":false,"excluded":null,"sections":{"description":"The virtual type configurations, in `di.xml` files, are not supposed to be self‑referential, … but if they ever are this function will spin in an infinite loop.","stepsToReproduce":"Configure a `di.xml` `<virtualType …>` node to be self‑referential (i.e. not actually virtual).  This will cause the app to spin, infinitely, on the dereferencing attempt.  Note that the self‑reference can be from a chain of `<virtualType …>` nodes and not just a single node.","expectedResult":null,"actualResult":null,"source":"pr"},"signatures":[],"labels":{"area":["Framework"],"component":["Backend"],"priority":"P2","severity":null,"reportedOn":["2.4.x"]},"categories":[],"triage":{"model":"@cf/cloudflare/clef","requestHash":"2865ee313dc654837932fde5c019ba8ded3f438cc4f781c392361b00d0a743aa","isBugfix":0.9414,"changeKind":{"choice":"bugfix","probabilities":{"bugfix":0.9154,"feature":0.0185,"refactor":0.0207,"tests_only":0.0295,"docs_only":0.0075,"dependency":0.0084},"confidence":0.8076},"scope":{"score":0.5272,"probabilities":{"0":0.5539,"1":0.365,"2":0.0811},"confidence":0.17},"risk":{"score":0.2522,"probabilities":{"0":0.7826,"1":0.1827,"2":0.0347},"confidence":0.4705},"area":{"choice":"framework","probabilities":{"catalog":0.0036,"checkout":0.0031,"customer":0.0028,"admin":0.009,"graphql_api":0.0029,"framework":0.97,"frontend":0.0041,"other":0.0045},"confidence":0.9327},"securityRelevant":0.0109,"reportedVersion":{"choice":"unspecified","probabilities":{"2.4.0":0.0058,"2.4.0-p1":0.0056,"2.4.1":0.0048,"2.4.1-p1":0.0045,"2.4.2":0.0055,"2.4.2-p1":0.0057,"2.4.2-p2":0.0063,"2.4.3":0.0107,"2.4.3-p1":0.0104,"2.4.3-p2":0.0123,"2.4.3-p3":0.0071,"2.4.4":0.013,"2.4.4-p1":0.009,"2.4.4-p10":0.0073,"2.4.4-p11":0.0074,"2.4.4-p12":0.0067,"2.4.4-p13":0.0067,"2.4.4-p14":0.0093,"2.4.4-p15":0.0068,"2.4.4-p16":0.0075,"2.4.4-p17":0.0063,"2.4.4-p18":0.0056,"2.4.4-p2":0.0031,"2.4.4-p3":0.0035,"2.4.4-p4":0.0035,"2.4.4-p5":0.0045,"2.4.4-p6":0.005,"2.4.4-p7":0.0045,"2.4.4-p8":0.0052,"2.4.4-p9":0.004,"2.4.5":0.015,"2.4.5-p1":0.0108,"2.4.5-p10":0.0076,"2.4.5-p11":0.012,"2.4.5-p12":0.0098,"2.4.5-p13":0.0079,"2.4.5-p14":0.0095,"2.4.5-p15":0.0075,"2.4.5-p16":0.0093,"2.4.5-p17":0.0074,"2.4.5-p2":0.0042,"2.4.5-p3":0.0056,"2.4.5-p4":0.0065,"2.4.5-p5":0.0062,"2.4.5-p6":0.006,"2.4.5-p7":0.0066,"2.4.5-p8":0.0055,"2.4.5-p9":0.0052,"2.4.6":0.0273,"2.4.6-p1":0.0151,"2.4.6-p10":0.0101,"2.4.6-p11":0.0147,"2.4.6-p12":0.0119,"2.4.6-p13":0.0114,"2.4.6-p14":0.0115,"2.4.6-p15":0.0097,"2.4.6-p2":0.0047,"2.4.6-p3":0.0083,"2.4.6-p4":0.0088,"2.4.6-p5":0.0083,"2.4.6-p6":0.0111,"2.4.6-p7":0.0092,"2.4.6-p8":0.0072,"2.4.6-p9":0.0065,"2.4.7":0.0204,"2.4.7-p1":0.0139,"2.4.7-p10":0.0114,"2.4.7-p2":0.0101,"2.4.7-p3":0.0147,"2.4.7-p4":0.0164,"2.4.7-p5":0.0164,"2.4.7-p6":0.0173,"2.4.7-p7":0.0168,"2.4.7-p8":0.0111,"2.4.7-p9":0.0074,"2.4.8":0.0225,"2.4.8-p1":0.0179,"2.4.8-p2":0.0186,"2.4.8-p3":0.0185,"2.4.8-p4":0.016,"2.4.8-p5":0.0156,"2.4.9":0.02,"unspecified":0.199},"confidence":0.0378},"backportWorthy":{"score":1.2014,"probabilities":{"0":0.2253,"1":0.348,"2":0.4267},"confidence":0.0309}},"curated":{"title":"Fixes an infinite loop when a di.xml virtual type refers to itself","description":"Virtual type configurations in di.xml files are not supposed to be self-referential, but if one is, the ObjectManager Config will spin in an infinite loop on the dereferencing attempt. Config now throws a LogicException \"unsupported self-referencing virtual type\" on a direct self-reference.","categories":[],"author":"claude-code/opus-5.5","date":"2026-10-06","reviewedBy":null},"tests":null},"_documentation":"https://magento.watch/api","_description":"Upstream fix magento2-38794 details"}