Bug 100758
Summary: | [Qt][WK2] QQuickWebView tests crash on rendering in xvfb | ||
---|---|---|---|
Product: | WebKit | Reporter: | Balazs Kelemen <kbalazs> |
Component: | WebKit2 | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED INVALID | ||
Severity: | Normal | CC: | hausmann, jturcotte, kkristof, ossy |
Priority: | P2 | ||
Version: | 528+ (Nightly build) | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Bug Depends on: | |||
Bug Blocks: | 70236, 76773 |
Balazs Kelemen
Here is my reducted test case (added to tst_qquickwebview.cpp)
void tst_QQuickWebView::showBasic()
{
QSizeF s(300, 400);
webView()->setSize(s);
m_window->setGeometry(0, 0, s.width(), s.height());
m_window->show();
webView()->setVisible(true);
webView()->setUrl(QUrl::fromLocalFile(QLatin1String(TESTS_SOURCE_DIR "/html/basic_page.html")));
QTest::qWait(500);
}
It is flakily producing a crash under GraphicsContext3D::mappedSymbolName, because at
ShaderSourceMap::iterator result = m_shaderSourceMap.find(shaders[i]); the shader is 0 (empty key value).
The reason is that glGetAttachedShaders could not lookup the second shader.
Here is the output of the reducted test (after added a check for GLerror() with printf and exit):
PASS : tst_QQuickWebView::initTestCase()
QWARN : tst_QQuickWebView::showBasic() QOpenGLShader::compile(Vertex): failed
QWARN : tst_QQuickWebView::showBasic() QOpenGLShader::compile(Fragment): failed
QWARN : tst_QQuickWebView::showBasic() QSGMaterialShader: Shader compilation failed:
QWARN : tst_QQuickWebView::showBasic() ""
QWARN : tst_QQuickWebView::showBasic() QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked
QWARN : tst_QQuickWebView::showBasic() QOpenGLShaderProgram::uniformLocation( color ): shader program is not linked
GL_INVALID_VALUE
So, it's clear that we should not ignore those warnings from Qt, and find out how could be compatible with xvfb. If it's not possible than we would have to dedicate a machine for API tests.
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Balazs Kelemen
Ossy said these tests runs fine in his local environment (in xvfb), so it's affected by my environment (GPU I guess).
Balazs Kelemen
Seems like for some reason compilation of the most simple shader program is failing in my env in xvfb (not tried in a separate program but Qt is failing with the QSGFlatColorMaterial). I think the difference between the bot and my env is that here it use the nvidia gl lib and not mesa. I'm not sure whether the nvidia implementation or Qt is incompatible with xvfb, but the consequence seems to be that we should not try to run tests (or anything) in xvfb if Qt was built against a vendor GL implementation (and not mesa). Since bots are ok, and developers don't have to use xvfb we can live with that.