stack overflow in asan/dom?
还没有人认领这个 Issue。
评估
调研方向
首先,在启用 ASan 并设置 USE_ZEND_ALLOC-0 的情况下,使用 DOMDocument::loadXML()、LIBXML_PARSEHUGE 和 cloneNode(true) 重现 PHP 8.6.0 示例。跟踪 DOM 克隆路径及其与 libxml2 的交互;当报告的深度嵌套输入不再导致栈溢出时,即表示完成。
由索引模型根据 Issue 内容生成。
描述
Description
The following code:
<?php
$xml = str_repeat('<a>', 400000) . 'x' . str_repeat('</a>', 400000);
$d=new DOMDocument(); $d->loadXML($xml, LIBXML_PARSEHUGE);
$c = $d->documentElement->cloneNode(true);
Resulted in this output:
#191 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#192 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#193 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#194 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#195 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#196 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#197 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#198 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#199 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#200 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#201 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#202 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#203 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#204 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#205 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#206 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#207 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#208 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#209 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#210 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#211 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#212 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#213 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#214 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#215 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#216 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#217 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#218 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#219 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#220 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#221 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#222 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#223 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#224 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#225 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#226 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#227 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#228 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#229 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#230 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#231 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#232 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#233 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#234 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#235 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#236 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#237 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#238 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#239 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#240 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#241 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#242 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#243 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#244 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#245 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#246 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#247 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
#248 0x7fc83e16234b (/lib/x86_64-linux-gnu/libxml2.so.2+0x7234b)
#249 0x7fc83e16168a (/lib/x86_64-linux-gnu/libxml2.so.2+0x7168a)
SUMMARY: AddressSanitizer: stack-overflow ../../../../src/libsanitizer/sanitizer_common/sanitizer_stackdepot.cpp:54 in __sanitizer::StackDepotNode::hash(__sanitizer::StackTrace const&)
==45==ABORTING
USE_ZEND_ALLOC-0
PHP Version
8.6.0
Operating System
ubuntu 22.04
- 主要语言
- C
- 星标
- 40.4k
- 派生
- 8.2k
- 平均合并
- 2 天 17 小时
- 30 天内合并 PR
- 115
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
php/php-src 的其他 Issue
-
Bug Status: Needs Triage
难度 2/5 1-3 小时 新手友好度 76/100
-
Bug Status: Needs Triage
难度 1/5 1 小时以内 新手友好度 90/100
-
Bug Status: Needs Triage
难度 2/5 1-3 小时 新手友好度 78/100
-
Bug Category: Tests Status: Verified
难度 2/5 1-3 小时 新手友好度 68/100
-
Bug SAPI: fpm Status: Needs Triage
难度 2/5 1-3 小时 新手友好度 65/100
相似的 Issue
-
bug
难度 2/5 1-3 小时 新手友好度 75/100
bradcypert/plum#53 ·
-
Component: GLib
难度 2/5 1-3 小时 新手友好度 70/100
-
难度 2/5 1-3 小时 新手友好度 75/100
-
Status: Opened
难度 2/5 1-3 小时 新手友好度 70/100
-
难度 2/5 1-3 小时 新手友好度 75/100
nextbsd/nextbsd-userland#285 ·