整数班次的Dartium崩溃

时间:2014-02-07 14:05:21

标签: dart webgl chromium

我为我的应用程序计算随机颜色。它们是rgba格式,我测试了各种版本的着色。现在我想要完全不透明的立方体,但因为这可能会改变,我已经实现了这样的着色:

          int r = rnd.nextInt(255);
          int g = rnd.nextInt(255);
          int b = rnd.nextInt(255);
          int a = 255;
          int color = (r & 0xFF) | ((g & 0xFF) << 8) | ((b & 0xFF) << 16) | ((a & 0xFF) << 24);

现在的代码重复约。 13,000个立方体。或者我必须说它会。因为dartium崩溃了('Aw,Snap!显示这个网页时出了问题。')。为了'wtf',如果我在a = 255;上设置断点并在继续删除该断点之前它正常工作并显示。我必须说现在正好找到问题我根本不使用颜色,它只是作为参数传递给另一个不使用它的函数。如果我没有将它传递给函数,那么就没有崩溃,我猜是因为它完全被优化了。

嗯,为了让事情变得更加奇怪,以下几行有效:

int color = (r & 0xFF) | ((g & 0xFF) << 8) | ((b & 0xFF) << 16) | 0xFF000000;

这在技术上应该是相同的。进一步的测试产生了以下结果:如果第一个版本中的a < 64 - &gt;没有崩溃。如果a >= 64 - >崩溃。

并且要完成混淆:int a = rnd.nextInt(255);每次使用第一个版本时,值>&gt; = 64。

/编辑: 另一个版本没有崩溃:

          int r = rnd.nextInt(255);
          int g = rnd.nextInt(255);
          int b = rnd.nextInt(255);
          int a = 0xFF.toInt();
          int color = (r & 0xFF) | ((g & 0xFF) << 8) | ((b & 0xFF) << 16) | ((a & 0xFF) << 24);

/ EDIT2: 我在项目上打开了一个问题,为了保持同步,这里有链接:https://code.google.com/p/dart/issues/detail?id=16633

我只是没有看到某些东西,或者这是不是很不受欢迎的行为?

1 个答案:

答案 0 :(得分:1)

这看起来像是一个虚拟机错误。

如果问题仍然存在,请使用最新版本验证,否则提出错误(http://dartbug.com/new)。

谢谢!