我正在编写的一款Flex 4.1应用程序遇到了一些非常奇怪的行为,这阻碍了测试。似乎我可以重新加载应用程序16次,然后在17号,加载过程失败,
Error #2046: The loaded file did not have a valid signature
火狐5.0和Chrome 12在第17次重新加载时似乎都会发生这种情况。我不确定这是否相关,但我在Ubuntu 10.04上运行的是Flash Player10.2.159.1版(10.3.181.34版也是如此)。对播放器的常规版本和调试版都会发生。当我在Windows FF5上运行这款应用时,似乎没有发生这种情况。关闭当前浏览器窗口似乎并不能解决这个问题。绕过它的唯一方法是完全关闭所有浏览器窗口并重新启动浏览器。然后,在16次成功加载后,第17次失败。
在这一点上,我正在考虑将其列为Linux Flash错误,但我想确定并检查是否有人知道我应该做些什么来防止这种情况发生。
this post的用户似乎也有同样的问题,但我猜他没有注意到我的模式。
任何帮助都将不胜感激。鲁伊
==更新==
我刚刚意识到,在我的应用程序开始抛出2046错误后,尝试加载使用已签名RSL的任何其他Flash也会显示2046错误(例如this app),这意味着问题并不是我的应用程序所特有的,很可能与Flash缓存或类似的东西有关。
6条答案
按热度按时间wtzytmuj1#
披露:我是Adobe的Flash播放器开发人员。这不太可能得到太多关注,因为这只是Linux,而且是一种边缘情况:在开发工作期间可能会很烦人,但很少有用户会重新加载同一页面超过16次。这也可能是浏览器的问题。但很可能是我们:)明天我会看看JIRA,看看我是否能提高一点,但我会诚实地说,这真的是一个边缘情况,不太可能得到太多的爱。如果您想增加机会,请确保为错误添加最简单的.swf测试用例。另外,请仔细检查最新的测试版是否仍会发生这种情况。
我也只是看了一下之前的错误报告和论坛帖子,你可能应该把它作为Flash播放器的错误来发布,而不是Flex。
ix0qys7i2#
可能性不大,但听起来和我们遇到的问题很相似……在项目属性-Flex构建路径-框架链接-更改为“合并到代码”。这解决了一个与您描述的非常相似的问题,尽管我希望我知道确切的原因是什么。祝好运!
km0tfn4u3#
考虑到这似乎是Adobe问题跟踪器中的一个未解决的错误,您不太可能在这里得到任何明确的答案。考虑到它同时发生在Firefox和Chrome上,让我们排除浏览器错误,并假设它位于某个公共库(Flash)或OS API(Linux内核实现)中。其中一个JIRA问题的评论特别提到了杀死Flash进程修复了它,所以这是一个Flash问题,而不是操作系统错误。
我能在这里看到的最有趣的事情是你的观察,它在加载失败之前恰好成功了16次。从没有从事过内核或加密开发的人那里,是时候进行一些猜测了:
2048位RSA密钥和32k缓存用于存储它们,在添加另一个密钥失败之前,16个密钥可以容纳-因此有一种猜测是,每次加载此文件时,闪存都会出于某种原因缓存签名值(可能是哈希版本)-可能是为了跟踪允许和使用的安全权限等。如果未删除该条目,则一旦该条目已满,如果缓存签名是检查签名的一部分,则所有文件加载都将失败。
你可以尝试的东西:
我预计要真正找到解决方案,您必须深入到加载代码的库中,并查看与加载签名库相关的所有常量,这些常量是4、16或16的倍数,以确定它们是否有责任--简而言之,不太可能被Flash开发团队imho以外的其他人所解决:/
dxpyg8gm4#
此行为可能与Flex实现或浏览器插件导致的内存泄漏有关。Firefox以不清理内存而臭名昭著,而且打开相同的浏览器窗口的时间越长,内存占用的时间就会越长。
如果你缩小了Flex应用程序的大小以产生非常小的东西,那么你可以重新加载页面的次数会增加吗?
sgtfey8w5#
错误#2046在Win vista上,64位机器和1000mb ati radeon显卡问题仅在msn视频中出现。
mi7gmzs66#
当我在icourse163.org上使用ppt时,我遇到了同样的问题。当我打开课程站点时,我看不到ppt,但我使用Chrome可以做到这一点。有相同的Flash版本(32.0.0.344),然后,我复制了从adobe下载的tar.gz文件。Usr/*to/usr我解决了。Wish可以帮助你。