Bug 119823
Summary: | ASSERT(!renderer()->needsLayout()) when entering Chinese text via Google Chinese Pinyin IME | ||
---|---|---|---|
Product: | WebKit | Reporter: | Stephen <sfcheng> |
Component: | Text | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED INVALID | ||
Severity: | Major | CC: | allan.jensen, ap, jturcotte, ossy, rniwa, sfcheng, simon.fraser |
Priority: | P2 | ||
Version: | 528+ (Nightly build) | ||
Hardware: | PC | ||
OS: | Windows 7 | ||
URL: | http://www.google.com | ||
Bug Depends on: | |||
Bug Blocks: | 79668 |
Stephen
I am using QtWebkit 5.1.0 on Windows 7. When I enter some Chinese text via Google Chinese Pinyin IME into the search box on Google homepage, every now and then, webkit crashes due to the following assert:
bool Node::isFocusable() const
{
if (!inDocument() || !supportsFocus())
return false;
// Elements in canvas fallback content are not rendered, but they are allowed to be
// focusable as long as their canvas is displayed and visible.
if (isElementNode() && toElement(this)->isInCanvasSubtree()) {
const Element* e = toElement(this);
while (e && !e->hasLocalName(canvasTag))
e = e->parentElement();
ASSERT(e);
return e->renderer() && e->renderer()->style()->visibility() == VISIBLE;
}
if (renderer())
------> ASSERT(!renderer()->needsLayout());
else
// If the node is in a display:none tree it might say it needs style recalc but
// the whole document is actually up to date.
ASSERT(!document()->childNeedsStyleRecalc());
// FIXME: Even if we are not visible, we might have a child that is visible.
// Hyatt wants to fix that some day with a "has visible content" flag or the like.
if (!renderer() || renderer()->style()->visibility() != VISIBLE)
return false;
return true;
}
Here is entire stack:
ntdll.dll!_ZwRaiseException@12() + 0x12 bytes
ntdll.dll!_ZwRaiseException@12() + 0x12 bytes
> Qt5WebKitd.dll!WebCore::Node::isFocusable() Line 927 + 0x3c bytes C++
Qt5WebKitd.dll!WebCore::HTMLFormControlElement::isFocusable() Line 330 C++
Qt5WebKitd.dll!WebCore::HTMLInputElement::isTextFormControlFocusable() Line 398 C++
Qt5WebKitd.dll!WebCore::TextFieldInputType::isMouseFocusable() Line 79 C++
Qt5WebKitd.dll!WebCore::HTMLInputElement::isMouseFocusable() Line 393 C++
Qt5WebKitd.dll!WebCore::FrameSelection::setFocusedNodeIfNeeded() Line 1884 + 0x16 bytes C++
Qt5WebKitd.dll!WebCore::FrameSelection::setSelection(const WebCore::VisibleSelection & newSelection={...}, unsigned int options=0, WebCore::FrameSelection::CursorAlignOnScroll align=AlignCursorOnScrollIfNeeded, WebCore::TextGranularity granularity=CharacterGranularity) Line 298 C++
Qt5WebKitd.dll!WebCore::Editor::selectComposition() Line 1321 C++
Qt5WebKitd.dll!WebCore::Editor::setComposition(const WTF::String & text={...}, const WTF::Vector<WebCore::CompositionUnderline,0> & underlines={...}, unsigned int selectionStart=0, unsigned int selectionEnd=0) Line 1400 C++
Qt5WebKitd.dll!QWebPageAdapter::inputMethodEvent(QInputMethodEvent * ev=0x16dd2220) Line 710 + 0x2c bytes C++
Qt5WebKitWidgetsd.dll!QWebPage::event(QEvent * ev=0x16dd2220) Line 2543 C++
MyApp.exe!WebPage::event(QEvent * e=0x16dd2220) Line 1021 C++
Qt5WebKitWidgetsd.dll!QWebView::inputMethodEvent(QInputMethodEvent * e=0x16dd2220) Line 1031 C++
Qt5Widgetsd.dll!QWidget::event(QEvent * event=0x16dd2220) Line 7951 C++
Qt5WebKitWidgetsd.dll!QWebView::event(QEvent * e=0x16dd2220) Line 734 C++
Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver=0x0d5daa08, QEvent * e=0x16dd2220) Line 3455 + 0x11 bytes C++
Qt5Widgetsd.dll!QApplication::notify(QObject * receiver=0x0d5daa08, QEvent * e=0x16dd2220) Line 3420 + 0x10 bytes C++
Qt5Cored.dll!QCoreApplication::notifyInternal(QObject * receiver=0x0d5daa08, QEvent * event=0x16dd2220) Line 871 + 0x15 bytes C++
Qt5Cored.dll!QCoreApplication::sendEvent(QObject * receiver=0x0d5daa08, QEvent * event=0x16dd2220) Line 232 + 0x39 bytes C++
qwindowsd.dll!QWindowsInputContext::composition(HWND__ * hwnd=0x00311056, long lParamIn=184) Line 443 + 0x13 bytes C++
qwindowsd.dll!QWindowsContext::windowsProc(HWND__ * hwnd=0x00311056, unsigned int message=271, QtWindows::WindowsEventType et=InputMethodCompositionEvent, unsigned int wParam=0, long lParam=184, long * result=0x0025d9a8) Line 736 + 0x14 bytes C++
qwindowsd.dll!qWindowsWndProc(HWND__ * hwnd=0x00311056, unsigned int message=271, unsigned int wParam=0, long lParam=184) Line 951 + 0x24 bytes C++
user32.dll!_InternalCallWinProc@20() + 0x23 bytes
user32.dll!_UserCallWinProcCheckWow@32() + 0xb7 bytes
user32.dll!_DispatchMessageWorker@8() + 0xed bytes
user32.dll!_DispatchMessageW@4() + 0xf bytes
Qt5Cored.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Line 752 C++
qwindowsd.dll!QWindowsGuiEventDispatcher::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Line 78 + 0xd bytes C++
Qt5Cored.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Line 137 C++
Qt5Cored.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Line 212 + 0x26 bytes C++
Qt5Cored.dll!QCoreApplication::exec() Line 1124 + 0x15 bytes C++
Qt5Guid.dll!QGuiApplication::exec() Line 1197 C++
Qt5Widgetsd.dll!QApplication::exec() Line 2690 C++
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |