Firefox中PXT框架LZMA解压算法异常求助(Chrome/Edge正常)
背景
在某企业项目中,我们使用开源框架PXT(Microsoft Makecode)。该框架支持上传包含完整元数据的.png格式项目文件。在Chrome和Edge浏览器中上传项目一切正常,但在Firefox中会触发“corrupted input”错误。
问题详情
PXT框架采用lzma算法对.png项目文件进行解压(解压逻辑位于项目的pxtlib/cpp.ts文件中)。当在Firefox中上传大小约大于14.2KB的文件时,lzma.decompress函数会抛出“corrupted input”错误:
- 输入:项目文件对应的Uint8Array类型缓冲区
- 输出:res(解压后的项目字符串)和错误信息
错误触发路径
- 当变量e.ib值为-1时,sr函数返回-1
- 若sr函数返回-1,tr函数将抛出错误
负责解压的循环逻辑
核心为同时监控执行时长的循环处理,用于返回解压后的项目数据
大于14.2KB项目的返回结果(错误情况)
- 解压过程触发“corrupted input”异常,读取指针状态异常
- 解压提前终止,未完成全部数据处理,返回错误标识
小于14.2KB项目的返回结果(成功情况)
- 解压完成,返回完整的项目字符串
- 解压过程中状态参数正常,无异常抛出
推测方向
负责解压的循环同时监控执行时长,推测Firefox中处理大文件时执行超时,导致解压失败。目前尝试增加超时时间无效果。是否有类似问题的解决经验?由于仅在Firefox且文件大于14.2KB时出现,推测可通过修改浏览器配置参数解决,盼赐教。
内容的提问来源于stack exchange,提问作者tschanni
相关产品推荐
相关产品推荐

