QtScript:64位Windows上崩溃

4

我已经在Windows下为64位架构编译了Qt,除了QtScript外,一切都运行正常。下面这段简单的代码在32位Qt for Windows中完美运行,但如果使用64位Qt编译,则会崩溃。也许是我的代码出错了?或者Qt不兼容64位?还是其他原因?欢迎任何评论。

#include <QtCore/QCoreApplication>
#include <QScriptEngine>
int main(int argc, char *argv[])
{
  QCoreApplication app( argc, argv);
  QScriptEngine oEngine;
  oEngine.evaluate( "function foo(){var a=[[0]]; a[0][0];}" );
  for(;;)
  {
    oEngine.evaluate( "foo" ).call();
  }
}

这个星期有一个 bug 被打开了(甚至可能是你打开的 =))。http://bugreports.qt.nokia.com/browse/QTBUG-7433 - Wildcat
我打开了问题,但是Trolls还没有回应,不知道这是一个bug还是什么情况 :(. 据我所知,他们需要几个月来“评估”一个bug并做出某些决定。 - grigoryvp
你在崩溃时收到了什么错误? - funwithcoding
QtScript::evaluate() 内部访问冲突。 - grigoryvp
1个回答

3

错误发生在JavaScriptCore中,这是WebKit项目(http://webkit.org/projects/javascript/index.html)的第三方组件:

Visual Studio报告说错误发生在c:\Qt\4.6.1\src\3rdparty\javascriptcore\JavaScriptCore\runtime\JSObject.h的第641行,并停止在对JSCell::getOwnPropertySlot (JSCell.cpp:126)的调用上。堆栈跟踪如下:

QtScriptd4.dll!QTJSC::JSValue::get
QtScriptd4.dll!QTJSC::JSValue::get
QtScriptd4.dll!QTJSC::Interpreter::privateExecute
QtScriptd4.dll!QTJSC::Interpreter::execute
QtScriptd4.dll!QTJSC::JSFunction::call
QtScriptd4.dll!QTJSC::call
QtScriptd4.dll!QScriptValue::call
test.exe!main

在使用Visual C++编译器在Windows上构建WebKit组件时,有很多关于可能存在64位问题的警告,所以我认为这不是一个受支持或已经调试过的配置。

我已经更新了QT bug报告 QTBUG-7344


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接